License conversion from Flora to Apache 2.0
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-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 <set>
23 #include <stdint.h>
24 #include <cstring>
25
26 // INTERNAL INCLUDES
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
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   /**
115    * @copydoc PlatformAbstraction::LoadResourceSynchronously()
116    */
117   virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
118
119   /**
120    * @copydoc PlatformAbstraction::SaveResource()
121    */
122   virtual void SaveResource(const Integration::ResourceRequest& request);
123
124   /**
125    * @copydoc PlatformAbstraction::CancelLoad()
126    */
127   virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
128
129   /**
130    * @copydoc PlatformAbstraction::GetResources()
131    */
132   virtual void GetResources(Integration::ResourceCache& cache);
133
134   /**
135    * @copydoc PlatformAbstraction::IsLoading()
136    */
137   virtual bool IsLoading();
138
139   /**
140    * @copydoc PlatformAbstraction::GetDefaultFontFamily()
141    */
142   virtual std::string GetDefaultFontFamily() const;
143
144   /**
145    * @copydoc PlatformAbstraction::GetDefaultFontSize()
146    */
147   virtual const float GetDefaultFontSize() const;
148
149   virtual const Dali::PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, const 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 std::string GetFontFamilyForChars(const TextArray& charsRequested) const;
186
187   /**
188    * @copydoc PlatformAbstraction::AllGlyphsSupported()
189    */
190   virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const 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 std::vector<std::string> GetFontList( PlatformAbstraction::FontListMode mode ) 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
234   virtual void GetFileNamesFromDirectory( const std::string& directoryName,
235                                           std::vector<std::string>& fileNames );
236
237   virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
238
239 public: // TEST FUNCTIONS
240
241   // Enumeration of Platform Abstraction methods
242   typedef enum
243   {
244     GetTimeMicrosecondsFunc,
245     SuspendFunc,
246     ResumeFunc,
247     LoadResourceFunc,
248     SaveResourceFunc,
249     SaveFileFunc,
250     LoadFileFunc,
251     CancelLoadFunc,
252     GetResourcesFunc,
253     IsLoadingFunc,
254     GetDefaultFontFamilyFunc,
255     GetDefaultFontSizeFunc,
256     GetFontLineHeightFromCapsHeightFunc,
257     GetGlyphDataFunc,
258     GetCachedGlyphDataFunc,
259     SetDpiFunc,
260     GetFontPathFunc,
261     JoinLoaderThreadsFunc,
262     GetFontFamilyForCharsFunc,
263     AllGlyphsSupportedFunc,
264     ValidateFontFamilyNameFunc,
265     UpdateDefaultsFromDeviceFunc,
266     GetDynamicsFactoryFunc,
267     ValidateGetFontListFunc,
268     ReadGlobalMetricsFromCacheFileFunc,
269     WriteGlobalMetricsToCacheFileFunc,
270     ReadMetricsFromCacheFileFunc,
271     WriteMetricsToCacheFileFunc,
272   } TestFuncEnum;
273
274   /** Call this every test */
275   void Initialize();
276
277   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
278   inline void ResetTrace() { mTrace.Reset(); }
279   inline TraceCallStack& GetTrace() { return mTrace; }
280
281   bool WasCalled(TestFuncEnum func);
282
283   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
284
285   void IncrementGetTimeResult(size_t milliseconds);
286
287   void SetIsLoadingResult(bool result);
288
289   void SetGetDefaultFontFamilyResult(std::string result);
290
291   void SetGetDefaultFontSizeResult(float result);
292
293   void SetGetFontPathResult(std::string& result);
294
295   void ClearReadyResources();
296
297   void SetResourceLoaded(Integration::ResourceId  loadedId,
298                          Integration::ResourceTypeId  loadedType,
299                          Integration::ResourcePointer loadedResource);
300
301   void SetResourceLoadFailed(Integration::ResourceId  id,
302                              Integration::ResourceFailure failure);
303
304   void SetResourceSaved(Integration::ResourceId      savedId,
305                         Integration::ResourceTypeId  savedType);
306
307   void SetResourceSaveFailed(Integration::ResourceId  id,
308                              Integration::ResourceFailure failure);
309
310   Integration::ResourceRequest* GetRequest();
311
312   void DiscardRequest();
313
314   void SetClosestImageSize(const Vector2& size);
315
316   void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
317
318   void SetSaveFileResult( bool result );
319
320   PlatformAbstraction::FontListMode GetLastFontListMode( );
321
322   void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
323
324   void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
325
326
327 private:
328   mutable TraceCallStack        mTrace;
329   size_t                        mSeconds;
330   size_t                        mMicroSeconds;
331   bool                          mIsLoadingResult;
332   std::string                   mGetDefaultFontFamilyResult;
333   float                         mGetDefaultFontSizeResult;
334   std::string                   mGetFontPathResult;
335   Resources                     mResources;
336   Integration::ResourceRequest* mRequest;
337   Vector2                       mSize;
338   Vector2                       mClosestSize;
339   bool                          mReadGlobalMetricsResult;
340   bool                          mReadMetricsResult;
341   Integration::GlobalMetrics mReadGlobalMetrics;
342   std::vector<Integration::GlyphMetrics> mReadMetrics;
343
344   LoadFileResult                mLoadFileResult;
345   bool                          mSaveFileResult;
346   mutable FontListMode          mFontListMode;
347 };
348
349 } // Dali
350
351 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */