1 #ifndef __DALI_TEST_PLATFORM_ABSTRACTION_H__
2 #define __DALI_TEST_PLATFORM_ABSTRACTION_H__
5 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 // Licensed under the Flora License, Version 1.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
11 // http://floralicense.org/license/
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.
26 #include <dali/integration-api/platform-abstraction.h>
28 #include <dali/integration-api/glyph-set.h>
29 #include "test-trace-call-stack.h"
36 * Concrete implementation of the platform abstraction class.
38 class DALI_IMPORT_API TestPlatformAbstraction : public Dali::Integration::PlatformAbstraction
46 Integration::ResourceId loadedId;
47 Integration::ResourceTypeId loadedType;
48 Integration::ResourcePointer loadedResource;
51 Integration::ResourceId loadFailedId;
52 Integration::ResourceFailure loadFailure;
55 Integration::ResourceId savedId;
56 Integration::ResourceTypeId savedType;
59 Integration::ResourceId saveFailedId;
60 Integration::ResourceFailure saveFailure;
65 inline LoadFileResult()
72 std::vector< unsigned char> buffer;
78 TestPlatformAbstraction();
83 virtual ~TestPlatformAbstraction();
86 * @copydoc PlatformAbstraction::GetTimeMicroseconds()
88 virtual void GetTimeMicroseconds(unsigned int &seconds, unsigned int µSeconds);
91 * @copydoc PlatformAbstraction::Suspend()
93 virtual void Suspend();
96 * @copydoc PlatformAbstraction::Resume()
98 virtual void Resume();
100 virtual void GetClosestImageSize( const std::string& filename,
101 const ImageAttributes& attributes,
102 Vector2& closestSize);
104 virtual void GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
105 const ImageAttributes& attributes,
106 Vector2& closestSize);
109 * @copydoc PlatformAbstraction::LoadResource()
111 virtual void LoadResource(const Integration::ResourceRequest& request);
114 * @copydoc PlatformAbstraction::LoadResourceSynchronously()
116 virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
119 * @copydoc PlatformAbstraction::SaveResource()
121 virtual void SaveResource(const Integration::ResourceRequest& request);
124 * @copydoc PlatformAbstraction::CancelLoad()
126 virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
129 * @copydoc PlatformAbstraction::GetResources()
131 virtual void GetResources(Integration::ResourceCache& cache);
134 * @copydoc PlatformAbstraction::IsLoading()
136 virtual bool IsLoading();
139 * @copydoc PlatformAbstraction::GetDefaultFontFamily()
141 virtual std::string GetDefaultFontFamily() const;
144 * @copydoc PlatformAbstraction::GetDefaultFontSize()
146 virtual const float GetDefaultFontSize() const;
148 virtual const Dali::PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, const CapsHeight& capsHeight) const;
151 * @copydoc PlatformAbstraction::GetGlyphData()
153 virtual Integration::GlyphSet* GetGlyphData ( const Integration::TextResourceType& textRequest,
154 const std::string& fontFamily,
155 bool getBitmap) const;
158 * @copydoc PlatformAbstraction::GetCachedGlyphData()
160 virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
161 const std::string& fontFamily ) const;
165 * @copydoc PlatformAbstraction::GetGlobalMetrics()
167 virtual void GetGlobalMetrics( const std::string& fontFamily,
168 const std::string& fontStyle,
169 Integration::GlobalMetrics& globalMetrics ) const;
172 * @copydoc PlatformAbstraction::GetFontPath()
174 virtual std::string GetFontPath(const std::string& family, bool bold, bool italic) const;
177 * @copydoc PlatformAbstraction::SetDpi()
179 virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
182 * @copydoc PlatformAbstraction::GetFontFamilyForChars()
184 virtual std::string GetFontFamilyForChars(const TextArray& charsRequested) const;
187 * @copydoc PlatformAbstraction::AllGlyphsSupported()
189 virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const TextArray& text) const;
192 * @copydoc PlatformAbstraction::ValidateFontFamilyName()
194 virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
197 * @copydoc PlatformAbstraction::GetFontList()
199 virtual std::vector<std::string> GetFontList( PlatformAbstraction::FontListMode mode ) const;
202 * @copydoc PlatformAbstraction::LoadFile()
204 virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
207 * @copydoc PlatformAbstraction::SaveFile()
209 virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
211 virtual void JoinLoaderThreads();
213 virtual void UpdateDefaultsFromDevice();
215 virtual Integration::DynamicsFactory* GetDynamicsFactory();
217 virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
218 const std::string& fontStyle,
219 Integration::GlobalMetrics& globalMetrics );
221 virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
222 const std::string& fontStyle,
223 const Integration::GlobalMetrics& globalMetrics );
225 virtual bool ReadMetricsFromCache( const std::string& fontFamily,
226 const std::string& fontStyle,
227 std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
228 virtual void WriteMetricsToCache( const std::string& fontFamily,
229 const std::string& fontStyle,
230 const Integration::GlyphSet& glyphSet );
233 virtual void GetFileNamesFromDirectory( const std::string& directoryName,
234 std::vector<std::string>& fileNames );
236 virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
238 public: // TEST FUNCTIONS
240 // Enumeration of Platform Abstraction methods
243 GetTimeMicrosecondsFunc,
253 GetDefaultFontFamilyFunc,
254 GetDefaultFontSizeFunc,
255 GetFontLineHeightFromCapsHeightFunc,
257 GetCachedGlyphDataFunc,
260 JoinLoaderThreadsFunc,
261 GetFontFamilyForCharsFunc,
262 AllGlyphsSupportedFunc,
263 ValidateFontFamilyNameFunc,
264 UpdateDefaultsFromDeviceFunc,
265 GetDynamicsFactoryFunc,
266 ValidateGetFontListFunc,
267 ReadGlobalMetricsFromCacheFileFunc,
268 WriteGlobalMetricsToCacheFileFunc,
269 ReadMetricsFromCacheFileFunc,
270 WriteMetricsToCacheFileFunc,
273 /** Call this every test */
276 inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
277 inline void ResetTrace() { mTrace.Reset(); }
278 inline TraceCallStack& GetTrace() { return mTrace; }
280 bool WasCalled(TestFuncEnum func);
282 void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
284 void IncrementGetTimeResult(size_t milliseconds);
286 void SetIsLoadingResult(bool result);
288 void SetGetDefaultFontFamilyResult(std::string result);
290 void SetGetDefaultFontSizeResult(float result);
292 void SetGetFontPathResult(std::string& result);
294 void ClearReadyResources();
296 void SetResourceLoaded(Integration::ResourceId loadedId,
297 Integration::ResourceTypeId loadedType,
298 Integration::ResourcePointer loadedResource);
300 void SetResourceLoadFailed(Integration::ResourceId id,
301 Integration::ResourceFailure failure);
303 void SetResourceSaved(Integration::ResourceId savedId,
304 Integration::ResourceTypeId savedType);
306 void SetResourceSaveFailed(Integration::ResourceId id,
307 Integration::ResourceFailure failure);
309 Integration::ResourceRequest* GetRequest();
311 void DiscardRequest();
313 void SetClosestImageSize(const Vector2& size);
315 void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
317 void SetSaveFileResult( bool result );
319 PlatformAbstraction::FontListMode GetLastFontListMode( );
321 void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
323 void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
327 mutable TraceCallStack mTrace;
329 size_t mMicroSeconds;
330 bool mIsLoadingResult;
331 std::string mGetDefaultFontFamilyResult;
332 float mGetDefaultFontSizeResult;
333 std::string mGetFontPathResult;
334 Resources mResources;
335 Integration::ResourceRequest* mRequest;
337 Vector2 mClosestSize;
338 bool mReadGlobalMetricsResult;
339 bool mReadMetricsResult;
340 Integration::GlobalMetrics mReadGlobalMetrics;
341 std::vector<Integration::GlyphMetrics> mReadMetrics;
343 LoadFileResult mLoadFileResult;
344 bool mSaveFileResult;
345 mutable FontListMode mFontListMode;
350 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */