Merge "Uses TextArray new type definition." into tizen
[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 <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
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 const std::string& GetDefaultFontFamily() const;
143
144   /**
145    * @copydoc PlatformAbstraction::GetDefaultFontSize()
146    */
147   virtual float GetDefaultFontSize() const;
148
149   /**
150    * @copydoc PlatformAbstraction::GetFontLineHeightFromCapsHeight()
151    */
152   virtual Dali::PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, CapsHeight capsHeight) const;
153
154   /**
155    * @copydoc PlatformAbstraction::GetGlyphData()
156    */
157   virtual Integration::GlyphSet* GetGlyphData ( const Integration::TextResourceType& textRequest,
158                                                 const std::string& fontFamily,
159                                                 bool getBitmap) const;
160
161   /**
162    * @copydoc PlatformAbstraction::GetCachedGlyphData()
163    */
164   virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
165                                                      const std::string& fontFamily ) const;
166
167
168   /**
169    * @copydoc PlatformAbstraction::GetGlobalMetrics()
170    */
171   virtual void GetGlobalMetrics( const std::string& fontFamily,
172                                  const std::string& fontStyle,
173                                  Integration::GlobalMetrics& globalMetrics ) const;
174
175   /**
176    * @copydoc PlatformAbstraction::GetFontPath()
177    */
178   virtual std::string GetFontPath(const std::string& family, bool bold, bool italic) const;
179
180   /**
181    * @copydoc PlatformAbstraction::SetDpi()
182    */
183   virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
184
185   /**
186    * @copydoc PlatformAbstraction::GetFontFamilyForChars()
187    */
188   virtual const std::string& GetFontFamilyForChars(const Integration::TextArray& charsRequested) const;
189
190   /**
191    * @copydoc PlatformAbstraction::AllGlyphsSupported()
192    */
193   virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const Integration::TextArray& text) const;
194
195   /**
196    * @copydoc PlatformAbstraction::ValidateFontFamilyName()
197    */
198   virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
199
200   /**
201    * @copydoc PlatformAbstraction::GetFontList()
202    */
203   virtual void GetFontList( PlatformAbstraction::FontListMode mode, std::vector<std::string>& fontList ) const;
204
205   /**
206    * @copydoc PlatformAbstraction::LoadFile()
207    */
208   virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
209
210   /**
211    * @copydoc PlatformAbstraction::SaveFile()
212    */
213   virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
214
215   virtual void JoinLoaderThreads();
216
217   virtual void UpdateDefaultsFromDevice();
218
219   virtual Integration::DynamicsFactory* GetDynamicsFactory();
220
221   virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
222                                            const std::string& fontStyle,
223                                            Integration::GlobalMetrics& globalMetrics );
224
225   virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
226                                           const std::string& fontStyle,
227                                           const Integration::GlobalMetrics& globalMetrics );
228
229   virtual bool ReadMetricsFromCache( const std::string& fontFamily,
230                                      const std::string& fontStyle,
231                                      std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
232   virtual void WriteMetricsToCache( const std::string& fontFamily,
233                                     const std::string& fontStyle,
234                                     const Integration::GlyphSet& glyphSet );
235
236
237   virtual void GetFileNamesFromDirectory( const std::string& directoryName,
238                                           std::vector<std::string>& fileNames );
239
240   virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
241
242 public: // TEST FUNCTIONS
243
244   // Enumeration of Platform Abstraction methods
245   typedef enum
246   {
247     GetTimeMicrosecondsFunc,
248     SuspendFunc,
249     ResumeFunc,
250     LoadResourceFunc,
251     SaveResourceFunc,
252     SaveFileFunc,
253     LoadFileFunc,
254     CancelLoadFunc,
255     GetResourcesFunc,
256     IsLoadingFunc,
257     GetDefaultFontFamilyFunc,
258     GetDefaultFontSizeFunc,
259     GetFontLineHeightFromCapsHeightFunc,
260     GetGlyphDataFunc,
261     GetCachedGlyphDataFunc,
262     SetDpiFunc,
263     GetFontPathFunc,
264     JoinLoaderThreadsFunc,
265     GetFontFamilyForCharsFunc,
266     AllGlyphsSupportedFunc,
267     ValidateFontFamilyNameFunc,
268     UpdateDefaultsFromDeviceFunc,
269     GetDynamicsFactoryFunc,
270     ValidateGetFontListFunc,
271     ReadGlobalMetricsFromCacheFileFunc,
272     WriteGlobalMetricsToCacheFileFunc,
273     ReadMetricsFromCacheFileFunc,
274     WriteMetricsToCacheFileFunc,
275   } TestFuncEnum;
276
277   /** Call this every test */
278   void Initialize();
279
280   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
281   inline void ResetTrace() { mTrace.Reset(); }
282   inline TraceCallStack& GetTrace() { return mTrace; }
283
284   bool WasCalled(TestFuncEnum func);
285
286   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
287
288   void IncrementGetTimeResult(size_t milliseconds);
289
290   void SetIsLoadingResult(bool result);
291
292   void SetGetDefaultFontFamilyResult(std::string result);
293
294   void SetGetDefaultFontSizeResult(float result);
295
296   void SetGetFontPathResult(std::string& result);
297
298   void ClearReadyResources();
299
300   void SetResourceLoaded(Integration::ResourceId  loadedId,
301                          Integration::ResourceTypeId  loadedType,
302                          Integration::ResourcePointer loadedResource);
303
304   void SetResourceLoadFailed(Integration::ResourceId  id,
305                              Integration::ResourceFailure failure);
306
307   void SetResourceSaved(Integration::ResourceId      savedId,
308                         Integration::ResourceTypeId  savedType);
309
310   void SetResourceSaveFailed(Integration::ResourceId  id,
311                              Integration::ResourceFailure failure);
312
313   Integration::ResourceRequest* GetRequest();
314
315   void DiscardRequest();
316
317   void SetClosestImageSize(const Vector2& size);
318
319   void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
320
321   void SetSaveFileResult( bool result );
322
323   PlatformAbstraction::FontListMode GetLastFontListMode( );
324
325   void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
326
327   void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
328
329
330 private:
331   mutable TraceCallStack        mTrace;
332   size_t                        mSeconds;
333   size_t                        mMicroSeconds;
334   bool                          mIsLoadingResult;
335   std::string                   mGetDefaultFontFamilyResult;
336   float                         mGetDefaultFontSizeResult;
337   std::string                   mGetFontPathResult;
338   Resources                     mResources;
339   Integration::ResourceRequest* mRequest;
340   Vector2                       mSize;
341   Vector2                       mClosestSize;
342   bool                          mReadGlobalMetricsResult;
343   bool                          mReadMetricsResult;
344   Integration::GlobalMetrics mReadGlobalMetrics;
345   std::vector<Integration::GlyphMetrics> mReadMetrics;
346
347   LoadFileResult                mLoadFileResult;
348   bool                          mSaveFileResult;
349   mutable FontListMode          mFontListMode;
350 };
351
352 } // Dali
353
354 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */