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"
30 #include "test-dynamics.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);
113 virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath);
116 * @copydoc PlatformAbstraction::SaveResource()
118 virtual void SaveResource(const Integration::ResourceRequest& request);
121 * @copydoc PlatformAbstraction::CancelLoad()
123 virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
126 * @copydoc PlatformAbstraction::GetResources()
128 virtual void GetResources(Integration::ResourceCache& cache);
131 * @copydoc PlatformAbstraction::IsLoading()
133 virtual bool IsLoading();
136 * @copydoc PlatformAbstraction::GetDefaultFontFamily()
138 virtual std::string GetDefaultFontFamily() const;
141 * @copydoc PlatformAbstraction::GetDefaultFontSize()
143 virtual const float GetDefaultFontSize() const;
145 virtual const PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, const CapsHeight& capsHeight) const;
148 * @copydoc PlatformAbstraction::GetGlyphData()
150 virtual Integration::GlyphSet* GetGlyphData ( const Integration::TextResourceType& textRequest,
151 const std::string& fontFamily,
152 bool getBitmap) const;
155 * @copydoc PlatformAbstraction::GetCachedGlyphData()
157 virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
158 const std::string& fontFamily ) const;
162 * @copydoc PlatformAbstraction::GetGlobalMetrics()
164 virtual void GetGlobalMetrics( const std::string& fontFamily,
165 const std::string& fontStyle,
166 Integration::GlobalMetrics& globalMetrics ) const;
169 * @copydoc PlatformAbstraction::GetFontPath()
171 virtual std::string GetFontPath(const std::string& family, bool bold, bool italic) const;
174 * @copydoc PlatformAbstraction::SetDpi()
176 virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
179 * @copydoc PlatformAbstraction::GetFontFamilyForChars()
181 virtual std::string GetFontFamilyForChars(const TextArray& charsRequested) const;
184 * @copydoc PlatformAbstraction::AllGlyphsSupported()
186 virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const TextArray& text) const;
189 * @copydoc PlatformAbstraction::ValidateFontFamilyName()
191 virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
194 * @copydoc PlatformAbstraction::GetFontList()
196 virtual std::vector<std::string> GetFontList( PlatformAbstraction::FontListMode mode ) const;
199 * @copydoc PlatformAbstraction::LoadFile()
201 virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
204 * @copydoc PlatformAbstraction::SaveFile()
206 virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
208 virtual void JoinLoaderThreads();
210 virtual void UpdateDefaultsFromDevice();
212 virtual Integration::DynamicsFactory* GetDynamicsFactory();
214 virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
215 const std::string& fontStyle,
216 Integration::GlobalMetrics& globalMetrics );
218 virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
219 const std::string& fontStyle,
220 const Integration::GlobalMetrics& globalMetrics );
222 virtual bool ReadMetricsFromCache( const std::string& fontFamily,
223 const std::string& fontStyle,
224 std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
225 virtual void WriteMetricsToCache( const std::string& fontFamily,
226 const std::string& fontStyle,
227 const Integration::GlyphSet& glyphSet );
229 virtual void GetFileNamesFromDirectory( const std::string& directoryName,
230 std::vector<std::string>& fileNames );
232 virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
235 public: // TEST FUNCTIONS
237 // Enumeration of Platform Abstraction methods
240 GetTimeMicrosecondsFunc,
250 GetDefaultFontFamilyFunc,
251 GetDefaultFontSizeFunc,
252 GetFontLineHeightFromCapsHeightFunc,
254 GetCachedGlyphDataFunc,
257 JoinLoaderThreadsFunc,
258 GetFontFamilyForCharsFunc,
259 AllGlyphsSupportedFunc,
260 ValidateFontFamilyNameFunc,
261 UpdateDefaultsFromDeviceFunc,
262 GetDynamicsFactoryFunc,
263 ValidateGetFontListFunc,
264 ReadGlobalMetricsFromCacheFileFunc,
265 WriteGlobalMetricsToCacheFileFunc,
266 ReadMetricsFromCacheFileFunc,
267 WriteMetricsToCacheFileFunc,
270 /** Call this every test */
273 inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
274 inline void ResetTrace() { mTrace.Reset(); }
275 inline TraceCallStack& GetTrace() { return mTrace; }
277 bool WasCalled(TestFuncEnum func);
279 void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
281 void IncrementGetTimeResult(size_t milliseconds);
283 void SetIsLoadingResult(bool result);
285 void SetGetDefaultFontFamilyResult(std::string result);
287 void SetGetDefaultFontSizeResult(float result);
289 void SetGetFontPathResult(std::string& result);
291 void ClearReadyResources();
293 void SetResourceLoaded(Integration::ResourceId loadedId,
294 Integration::ResourceTypeId loadedType,
295 Integration::ResourcePointer loadedResource);
297 void SetResourceLoadFailed(Integration::ResourceId id,
298 Integration::ResourceFailure failure);
300 void SetResourceSaved(Integration::ResourceId savedId,
301 Integration::ResourceTypeId savedType);
303 void SetResourceSaveFailed(Integration::ResourceId id,
304 Integration::ResourceFailure failure);
306 Integration::ResourceRequest* GetRequest();
308 void DiscardRequest();
310 void SetClosestImageSize(const Vector2& size);
312 void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
314 void SetSaveFileResult( bool result );
316 PlatformAbstraction::FontListMode GetLastFontListMode( );
318 void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
320 void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
324 mutable TraceCallStack mTrace;
326 size_t mMicroSeconds;
327 bool mIsLoadingResult;
328 std::string mGetDefaultFontFamilyResult;
329 float mGetDefaultFontSizeResult;
330 std::string mGetFontPathResult;
331 Resources mResources;
332 Integration::ResourceRequest* mRequest;
334 Vector2 mClosestSize;
335 bool mReadGlobalMetricsResult;
336 bool mReadMetricsResult;
337 Integration::GlobalMetrics mReadGlobalMetrics;
338 std::vector<Integration::GlyphMetrics> mReadMetrics;
340 LoadFileResult mLoadFileResult;
341 bool mSaveFileResult;
342 mutable FontListMode mFontListMode;
343 TestDynamicsFactory* mDynamicsFactory;
348 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */