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 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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/public-api/common/set-wrapper.h>
27 #include <dali/integration-api/platform-abstraction.h>
29 #include <dali/integration-api/glyph-set.h>
30 #include "test-trace-call-stack.h"
31 #include "test-dynamics.h"
37 * Concrete implementation of the platform abstraction class.
39 class DALI_IMPORT_API TestPlatformAbstraction : public Dali::Integration::PlatformAbstraction
47 Integration::ResourceId loadedId;
48 Integration::ResourceTypeId loadedType;
49 Integration::ResourcePointer loadedResource;
52 Integration::ResourceId loadFailedId;
53 Integration::ResourceFailure loadFailure;
56 Integration::ResourceId savedId;
57 Integration::ResourceTypeId savedType;
60 Integration::ResourceId saveFailedId;
61 Integration::ResourceFailure saveFailure;
66 inline LoadFileResult()
73 std::vector< unsigned char> buffer;
79 TestPlatformAbstraction();
84 virtual ~TestPlatformAbstraction();
87 * @copydoc PlatformAbstraction::GetTimeMicroseconds()
89 virtual void GetTimeMicroseconds(unsigned int &seconds, unsigned int µSeconds);
92 * @copydoc PlatformAbstraction::Suspend()
94 virtual void Suspend();
97 * @copydoc PlatformAbstraction::Resume()
99 virtual void Resume();
101 virtual void GetClosestImageSize( const std::string& filename,
102 const ImageAttributes& attributes,
103 Vector2& closestSize);
105 virtual void GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
106 const ImageAttributes& attributes,
107 Vector2& closestSize);
110 * @copydoc PlatformAbstraction::LoadResource()
112 virtual void LoadResource(const Integration::ResourceRequest& request);
114 virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath);
117 * @copydoc PlatformAbstraction::SaveResource()
119 virtual void SaveResource(const Integration::ResourceRequest& request);
122 * @copydoc PlatformAbstraction::CancelLoad()
124 virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
127 * @copydoc PlatformAbstraction::GetResources()
129 virtual void GetResources(Integration::ResourceCache& cache);
132 * @copydoc PlatformAbstraction::IsLoading()
134 virtual bool IsLoading();
137 * @copydoc PlatformAbstraction::GetDefaultFontFamily()
139 virtual const std::string& GetDefaultFontFamily() const;
142 * @copydoc PlatformAbstraction::GetDefaultFontSize()
144 virtual float GetDefaultFontSize() const;
147 * @copydoc PlatformAbstraction::GetFontLineHeightFromCapsHeight()
149 virtual PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, CapsHeight capsHeight) const;
152 * @copydoc PlatformAbstraction::GetGlyphData()
154 virtual Integration::GlyphSet* GetGlyphData ( const Integration::TextResourceType& textRequest,
155 const std::string& fontFamily,
156 bool getBitmap) const;
159 * @copydoc PlatformAbstraction::GetCachedGlyphData()
161 virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
162 const std::string& fontFamily ) const;
166 * @copydoc PlatformAbstraction::GetGlobalMetrics()
168 virtual void GetGlobalMetrics( const std::string& fontFamily,
169 const std::string& fontStyle,
170 Integration::GlobalMetrics& globalMetrics ) const;
173 * @copydoc PlatformAbstraction::GetFontPath()
175 virtual std::string GetFontPath(const std::string& family, bool bold, bool italic) const;
178 * @copydoc PlatformAbstraction::SetDpi()
180 virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
183 * @copydoc PlatformAbstraction::GetFontFamilyForChars()
185 virtual const std::string& GetFontFamilyForChars(const Integration::TextArray& charsRequested) const;
188 * @copydoc PlatformAbstraction::AllGlyphsSupported()
190 virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const Integration::TextArray& text) const;
193 * @copydoc PlatformAbstraction::ValidateFontFamilyName()
195 virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
198 * @copydoc PlatformAbstraction::GetFontList()
200 virtual void GetFontList( PlatformAbstraction::FontListMode mode, std::vector<std::string>& fontList ) const;
203 * @copydoc PlatformAbstraction::LoadFile()
205 virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
208 * @copydoc PlatformAbstraction::SaveFile()
210 virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
212 virtual void JoinLoaderThreads();
214 virtual void UpdateDefaultsFromDevice();
216 virtual Integration::DynamicsFactory* GetDynamicsFactory();
218 virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
219 const std::string& fontStyle,
220 Integration::GlobalMetrics& globalMetrics );
222 virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
223 const std::string& fontStyle,
224 const Integration::GlobalMetrics& globalMetrics );
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 );
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 );
326 mutable TraceCallStack mTrace;
328 size_t mMicroSeconds;
329 bool mIsLoadingResult;
330 std::string mGetDefaultFontFamilyResult;
331 float mGetDefaultFontSizeResult;
332 std::string mGetFontPathResult;
333 Resources mResources;
334 Integration::ResourceRequest* mRequest;
336 Vector2 mClosestSize;
337 bool mReadGlobalMetricsResult;
338 bool mReadMetricsResult;
339 Integration::GlobalMetrics mReadGlobalMetrics;
340 std::vector<Integration::GlyphMetrics> mReadMetrics;
342 LoadFileResult mLoadFileResult;
343 bool mSaveFileResult;
344 mutable FontListMode mFontListMode;
345 TestDynamicsFactory* mDynamicsFactory;
350 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */