Improved pan gesture prediction
[platform/core/uifw/dali-core.git] / automated-tests / src / dali-unmanaged / dali-test-suite-utils / test-platform-abstraction.h
1 #ifndef __DALI_TEST_PLATFORM_ABSTRACTION_H__
2 #define __DALI_TEST_PLATFORM_ABSTRACTION_H__
3
4 /*
5  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22 #include <stdint.h>
23 #include <cstring>
24
25 // INTERNAL INCLUDES
26 #include <dali/public-api/common/set-wrapper.h>
27 #include <dali/integration-api/platform-abstraction.h>
28
29 #include <dali/integration-api/glyph-set.h>
30 #include "test-trace-call-stack.h"
31 #include "test-dynamics.h"
32
33 namespace Dali
34 {
35
36 /**
37  * Concrete implementation of the platform abstraction class.
38  */
39 class DALI_IMPORT_API TestPlatformAbstraction : public Dali::Integration::PlatformAbstraction
40 {
41
42 public:
43
44   struct Resources
45   {
46     bool                         loaded;
47     Integration::ResourceId      loadedId;
48     Integration::ResourceTypeId  loadedType;
49     Integration::ResourcePointer loadedResource;
50
51     bool                         loadFailed;
52     Integration::ResourceId      loadFailedId;
53     Integration::ResourceFailure loadFailure;
54
55     bool                         saved;
56     Integration::ResourceId      savedId;
57     Integration::ResourceTypeId  savedType;
58
59     bool                         saveFailed;
60     Integration::ResourceId      saveFailedId;
61     Integration::ResourceFailure saveFailure;
62   };
63
64   struct LoadFileResult
65   {
66     inline LoadFileResult()
67     : loadResult(false)
68     {
69
70     }
71
72     bool loadResult;
73     std::vector< unsigned char> buffer;
74   };
75
76   /**
77    * Constructor
78    */
79   TestPlatformAbstraction();
80
81   /**
82    * Destructor
83    */
84   virtual ~TestPlatformAbstraction();
85
86   /**
87    * @copydoc PlatformAbstraction::GetTimeMicroseconds()
88    */
89   virtual void GetTimeMicroseconds(unsigned int &seconds, unsigned int &microSeconds);
90
91   /**
92    * @copydoc PlatformAbstraction::Suspend()
93    */
94   virtual void Suspend();
95
96   /**
97    * @copydoc PlatformAbstraction::Resume()
98    */
99   virtual void Resume();
100
101   virtual void GetClosestImageSize( const std::string& filename,
102                                     const ImageAttributes& attributes,
103                                     Vector2& closestSize);
104
105   virtual void GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
106                                     const ImageAttributes& attributes,
107                                     Vector2& closestSize);
108
109   /**
110    * @copydoc PlatformAbstraction::LoadResource()
111    */
112   virtual void LoadResource(const Integration::ResourceRequest& request);
113
114   virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath);
115
116   /**
117    * @copydoc PlatformAbstraction::SaveResource()
118    */
119   virtual void SaveResource(const Integration::ResourceRequest& request);
120
121   /**
122    * @copydoc PlatformAbstraction::CancelLoad()
123    */
124   virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
125
126   /**
127    * @copydoc PlatformAbstraction::GetResources()
128    */
129   virtual void GetResources(Integration::ResourceCache& cache);
130
131   /**
132    * @copydoc PlatformAbstraction::IsLoading()
133    */
134   virtual bool IsLoading();
135
136   /**
137    * @copydoc PlatformAbstraction::GetDefaultFontFamily()
138    */
139   virtual const std::string& GetDefaultFontFamily() const;
140
141   /**
142    * @copydoc PlatformAbstraction::GetDefaultFontSize()
143    */
144   virtual float GetDefaultFontSize() const;
145
146   /**
147    * @copydoc PlatformAbstraction::GetFontLineHeightFromCapsHeight()
148    */
149   virtual PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, CapsHeight capsHeight) const;
150
151   /**
152    * @copydoc PlatformAbstraction::GetGlyphData()
153    */
154   virtual Integration::GlyphSet* GetGlyphData ( const Integration::TextResourceType& textRequest,
155                                                 const std::string& fontFamily,
156                                                 bool getBitmap) const;
157
158   /**
159    * @copydoc PlatformAbstraction::GetCachedGlyphData()
160    */
161   virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
162                                                      const std::string& fontFamily ) const;
163
164
165   /**
166    * @copydoc PlatformAbstraction::GetGlobalMetrics()
167    */
168   virtual void GetGlobalMetrics( const std::string& fontFamily,
169                                  const std::string& fontStyle,
170                                  Integration::GlobalMetrics& globalMetrics ) const;
171
172   /**
173    * @copydoc PlatformAbstraction::GetFontPath()
174    */
175   virtual std::string GetFontPath(const std::string& family, bool bold, bool italic) const;
176
177   /**
178    * @copydoc PlatformAbstraction::SetDpi()
179    */
180   virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
181
182   /**
183    * @copydoc PlatformAbstraction::GetFontFamilyForChars()
184    */
185   virtual const std::string& GetFontFamilyForChars(const Integration::TextArray& charsRequested) const;
186
187   /**
188    * @copydoc PlatformAbstraction::AllGlyphsSupported()
189    */
190   virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const Integration::TextArray& text) const;
191
192   /**
193    * @copydoc PlatformAbstraction::ValidateFontFamilyName()
194    */
195   virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
196
197   /**
198    * @copydoc PlatformAbstraction::GetFontList()
199    */
200   virtual void GetFontList( PlatformAbstraction::FontListMode mode, std::vector<std::string>& fontList ) const;
201
202   /**
203    * @copydoc PlatformAbstraction::LoadFile()
204    */
205   virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
206
207   /**
208    * @copydoc PlatformAbstraction::SaveFile()
209    */
210   virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
211
212   virtual void JoinLoaderThreads();
213
214   virtual void UpdateDefaultsFromDevice();
215
216   virtual Integration::DynamicsFactory* GetDynamicsFactory();
217
218   virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
219                                            const std::string& fontStyle,
220                                            Integration::GlobalMetrics& globalMetrics );
221
222   virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
223                                           const std::string& fontStyle,
224                                           const Integration::GlobalMetrics& globalMetrics );
225
226   virtual bool ReadMetricsFromCache( const std::string& fontFamily,
227                                      const std::string& fontStyle,
228                                      std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
229   virtual void WriteMetricsToCache( const std::string& fontFamily,
230                                     const std::string& fontStyle,
231                                     const Integration::GlyphSet& glyphSet );
232
233   virtual void GetFileNamesFromDirectory( const std::string& directoryName,
234                                           std::vector<std::string>& fileNames );
235
236   virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
237
238 public: // TEST FUNCTIONS
239
240   // Enumeration of Platform Abstraction methods
241   typedef enum
242   {
243     GetTimeMicrosecondsFunc,
244     SuspendFunc,
245     ResumeFunc,
246     LoadResourceFunc,
247     SaveResourceFunc,
248     SaveFileFunc,
249     LoadFileFunc,
250     CancelLoadFunc,
251     GetResourcesFunc,
252     IsLoadingFunc,
253     GetDefaultFontFamilyFunc,
254     GetDefaultFontSizeFunc,
255     GetFontLineHeightFromCapsHeightFunc,
256     GetGlyphDataFunc,
257     GetCachedGlyphDataFunc,
258     SetDpiFunc,
259     GetFontPathFunc,
260     JoinLoaderThreadsFunc,
261     GetFontFamilyForCharsFunc,
262     AllGlyphsSupportedFunc,
263     ValidateFontFamilyNameFunc,
264     UpdateDefaultsFromDeviceFunc,
265     GetDynamicsFactoryFunc,
266     ValidateGetFontListFunc,
267     ReadGlobalMetricsFromCacheFileFunc,
268     WriteGlobalMetricsToCacheFileFunc,
269     ReadMetricsFromCacheFileFunc,
270     WriteMetricsToCacheFileFunc,
271   } TestFuncEnum;
272
273   /** Call this every test */
274   void Initialize();
275
276   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
277   inline void ResetTrace() { mTrace.Reset(); }
278   inline TraceCallStack& GetTrace() { return mTrace; }
279
280   bool WasCalled(TestFuncEnum func);
281
282   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
283
284   void IncrementGetTimeResult(size_t milliseconds);
285
286   void SetIsLoadingResult(bool result);
287
288   void SetGetDefaultFontFamilyResult(std::string result);
289
290   void SetGetDefaultFontSizeResult(float result);
291
292   void SetGetFontPathResult(std::string& result);
293
294   void ClearReadyResources();
295
296   void SetResourceLoaded(Integration::ResourceId  loadedId,
297                          Integration::ResourceTypeId  loadedType,
298                          Integration::ResourcePointer loadedResource);
299
300   void SetResourceLoadFailed(Integration::ResourceId  id,
301                              Integration::ResourceFailure failure);
302
303   void SetResourceSaved(Integration::ResourceId      savedId,
304                         Integration::ResourceTypeId  savedType);
305
306   void SetResourceSaveFailed(Integration::ResourceId  id,
307                              Integration::ResourceFailure failure);
308
309   Integration::ResourceRequest* GetRequest();
310
311   void DiscardRequest();
312
313   void SetClosestImageSize(const Vector2& size);
314
315   void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
316
317   void SetSaveFileResult( bool result );
318
319   PlatformAbstraction::FontListMode GetLastFontListMode( );
320
321   void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
322
323   void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
324
325 private:
326   mutable TraceCallStack        mTrace;
327   size_t                        mSeconds;
328   size_t                        mMicroSeconds;
329   bool                          mIsLoadingResult;
330   std::string                   mGetDefaultFontFamilyResult;
331   float                         mGetDefaultFontSizeResult;
332   std::string                   mGetFontPathResult;
333   Resources                     mResources;
334   Integration::ResourceRequest* mRequest;
335   Vector2                       mSize;
336   Vector2                       mClosestSize;
337   bool                          mReadGlobalMetricsResult;
338   bool                          mReadMetricsResult;
339   Integration::GlobalMetrics mReadGlobalMetrics;
340   std::vector<Integration::GlyphMetrics> mReadMetrics;
341
342   LoadFileResult                mLoadFileResult;
343   bool                          mSaveFileResult;
344   mutable FontListMode          mFontListMode;
345   TestDynamicsFactory*          mDynamicsFactory;
346 };
347
348 } // Dali
349
350 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */