test-platform-abstraction change by adding LoadShaderBinFile() of PlatformAbstraction
[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::LoadShaderBinFile()
212    */
213   virtual bool LoadShaderBinFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
214
215   /**
216    * @copydoc PlatformAbstraction::SaveFile()
217    */
218   virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
219
220   virtual void JoinLoaderThreads();
221
222   virtual void UpdateDefaultsFromDevice();
223
224   virtual Integration::DynamicsFactory* GetDynamicsFactory();
225
226   virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
227                                            const std::string& fontStyle,
228                                            Integration::GlobalMetrics& globalMetrics );
229
230   virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
231                                           const std::string& fontStyle,
232                                           const Integration::GlobalMetrics& globalMetrics );
233
234   virtual bool ReadMetricsFromCache( const std::string& fontFamily,
235                                      const std::string& fontStyle,
236                                      std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
237   virtual void WriteMetricsToCache( const std::string& fontFamily,
238                                     const std::string& fontStyle,
239                                     const Integration::GlyphSet& glyphSet );
240
241
242   virtual void GetFileNamesFromDirectory( const std::string& directoryName,
243                                           std::vector<std::string>& fileNames );
244
245   virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
246
247 public: // TEST FUNCTIONS
248
249   // Enumeration of Platform Abstraction methods
250   typedef enum
251   {
252     GetTimeMicrosecondsFunc,
253     SuspendFunc,
254     ResumeFunc,
255     LoadResourceFunc,
256     SaveResourceFunc,
257     SaveFileFunc,
258     LoadFileFunc,
259     LoadShaderBinFileFunc,
260     CancelLoadFunc,
261     GetResourcesFunc,
262     IsLoadingFunc,
263     GetDefaultFontFamilyFunc,
264     GetDefaultFontSizeFunc,
265     GetFontLineHeightFromCapsHeightFunc,
266     GetGlyphDataFunc,
267     GetCachedGlyphDataFunc,
268     SetDpiFunc,
269     GetFontPathFunc,
270     JoinLoaderThreadsFunc,
271     GetFontFamilyForCharsFunc,
272     AllGlyphsSupportedFunc,
273     ValidateFontFamilyNameFunc,
274     UpdateDefaultsFromDeviceFunc,
275     GetDynamicsFactoryFunc,
276     ValidateGetFontListFunc,
277     ReadGlobalMetricsFromCacheFileFunc,
278     WriteGlobalMetricsToCacheFileFunc,
279     ReadMetricsFromCacheFileFunc,
280     WriteMetricsToCacheFileFunc,
281   } TestFuncEnum;
282
283   /** Call this every test */
284   void Initialize();
285
286   inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
287   inline void ResetTrace() { mTrace.Reset(); }
288   inline TraceCallStack& GetTrace() { return mTrace; }
289
290   bool WasCalled(TestFuncEnum func);
291
292   void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
293
294   void IncrementGetTimeResult(size_t milliseconds);
295
296   void SetIsLoadingResult(bool result);
297
298   void SetGetDefaultFontFamilyResult(std::string result);
299
300   void SetGetDefaultFontSizeResult(float result);
301
302   void SetGetFontPathResult(std::string& result);
303
304   void ClearReadyResources();
305
306   void SetResourceLoaded(Integration::ResourceId  loadedId,
307                          Integration::ResourceTypeId  loadedType,
308                          Integration::ResourcePointer loadedResource);
309
310   void SetResourceLoadFailed(Integration::ResourceId  id,
311                              Integration::ResourceFailure failure);
312
313   void SetResourceSaved(Integration::ResourceId      savedId,
314                         Integration::ResourceTypeId  savedType);
315
316   void SetResourceSaveFailed(Integration::ResourceId  id,
317                              Integration::ResourceFailure failure);
318
319   Integration::ResourceRequest* GetRequest();
320
321   void DiscardRequest();
322
323   void SetClosestImageSize(const Vector2& size);
324
325   void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
326
327   void SetSaveFileResult( bool result );
328
329   PlatformAbstraction::FontListMode GetLastFontListMode( );
330
331   void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
332
333   void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
334
335
336 private:
337   mutable TraceCallStack        mTrace;
338   size_t                        mSeconds;
339   size_t                        mMicroSeconds;
340   bool                          mIsLoadingResult;
341   std::string                   mGetDefaultFontFamilyResult;
342   float                         mGetDefaultFontSizeResult;
343   std::string                   mGetFontPathResult;
344   Resources                     mResources;
345   Integration::ResourceRequest* mRequest;
346   Vector2                       mSize;
347   Vector2                       mClosestSize;
348   bool                          mReadGlobalMetricsResult;
349   bool                          mReadMetricsResult;
350   Integration::GlobalMetrics mReadGlobalMetrics;
351   std::vector<Integration::GlyphMetrics> mReadMetrics;
352
353   LoadFileResult                mLoadFileResult;
354   bool                          mSaveFileResult;
355   mutable FontListMode          mFontListMode;
356 };
357
358 } // Dali
359
360 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */