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"
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);
115 * @copydoc PlatformAbstraction::LoadResourceSynchronously()
117 virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
120 * @copydoc PlatformAbstraction::SaveResource()
122 virtual void SaveResource(const Integration::ResourceRequest& request);
125 * @copydoc PlatformAbstraction::CancelLoad()
127 virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
130 * @copydoc PlatformAbstraction::GetResources()
132 virtual void GetResources(Integration::ResourceCache& cache);
135 * @copydoc PlatformAbstraction::IsLoading()
137 virtual bool IsLoading();
140 * @copydoc PlatformAbstraction::GetDefaultFontFamily()
142 virtual const std::string& GetDefaultFontFamily() const;
145 * @copydoc PlatformAbstraction::GetDefaultFontSize()
147 virtual float GetDefaultFontSize() const;
150 * @copydoc PlatformAbstraction::GetFontLineHeightFromCapsHeight()
152 virtual Dali::PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, CapsHeight capsHeight) const;
155 * @copydoc PlatformAbstraction::GetGlyphData()
157 virtual Integration::GlyphSet* GetGlyphData ( const Integration::TextResourceType& textRequest,
158 const std::string& fontFamily,
159 bool getBitmap) const;
162 * @copydoc PlatformAbstraction::GetCachedGlyphData()
164 virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
165 const std::string& fontFamily ) const;
169 * @copydoc PlatformAbstraction::GetGlobalMetrics()
171 virtual void GetGlobalMetrics( const std::string& fontFamily,
172 const std::string& fontStyle,
173 Integration::GlobalMetrics& globalMetrics ) const;
176 * @copydoc PlatformAbstraction::GetFontPath()
178 virtual std::string GetFontPath(const std::string& family, bool bold, bool italic) const;
181 * @copydoc PlatformAbstraction::SetDpi()
183 virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
186 * @copydoc PlatformAbstraction::GetFontFamilyForChars()
188 virtual const std::string& GetFontFamilyForChars(const Integration::TextArray& charsRequested) const;
191 * @copydoc PlatformAbstraction::AllGlyphsSupported()
193 virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const Integration::TextArray& text) const;
196 * @copydoc PlatformAbstraction::ValidateFontFamilyName()
198 virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
201 * @copydoc PlatformAbstraction::GetFontList()
203 virtual void GetFontList( PlatformAbstraction::FontListMode mode, std::vector<std::string>& fontList ) const;
206 * @copydoc PlatformAbstraction::LoadFile()
208 virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
211 * @copydoc PlatformAbstraction::LoadShaderBinFile()
213 virtual bool LoadShaderBinFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
216 * @copydoc PlatformAbstraction::SaveFile()
218 virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
220 virtual void JoinLoaderThreads();
222 virtual void UpdateDefaultsFromDevice();
224 virtual Integration::DynamicsFactory* GetDynamicsFactory();
226 virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
227 const std::string& fontStyle,
228 Integration::GlobalMetrics& globalMetrics );
230 virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
231 const std::string& fontStyle,
232 const Integration::GlobalMetrics& globalMetrics );
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 );
242 virtual void GetFileNamesFromDirectory( const std::string& directoryName,
243 std::vector<std::string>& fileNames );
245 virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
247 public: // TEST FUNCTIONS
249 // Enumeration of Platform Abstraction methods
252 GetTimeMicrosecondsFunc,
259 LoadShaderBinFileFunc,
263 GetDefaultFontFamilyFunc,
264 GetDefaultFontSizeFunc,
265 GetFontLineHeightFromCapsHeightFunc,
267 GetCachedGlyphDataFunc,
270 JoinLoaderThreadsFunc,
271 GetFontFamilyForCharsFunc,
272 AllGlyphsSupportedFunc,
273 ValidateFontFamilyNameFunc,
274 UpdateDefaultsFromDeviceFunc,
275 GetDynamicsFactoryFunc,
276 ValidateGetFontListFunc,
277 ReadGlobalMetricsFromCacheFileFunc,
278 WriteGlobalMetricsToCacheFileFunc,
279 ReadMetricsFromCacheFileFunc,
280 WriteMetricsToCacheFileFunc,
283 /** Call this every test */
286 inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
287 inline void ResetTrace() { mTrace.Reset(); }
288 inline TraceCallStack& GetTrace() { return mTrace; }
290 bool WasCalled(TestFuncEnum func);
292 void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
294 void IncrementGetTimeResult(size_t milliseconds);
296 void SetIsLoadingResult(bool result);
298 void SetGetDefaultFontFamilyResult(std::string result);
300 void SetGetDefaultFontSizeResult(float result);
302 void SetGetFontPathResult(std::string& result);
304 void ClearReadyResources();
306 void SetResourceLoaded(Integration::ResourceId loadedId,
307 Integration::ResourceTypeId loadedType,
308 Integration::ResourcePointer loadedResource);
310 void SetResourceLoadFailed(Integration::ResourceId id,
311 Integration::ResourceFailure failure);
313 void SetResourceSaved(Integration::ResourceId savedId,
314 Integration::ResourceTypeId savedType);
316 void SetResourceSaveFailed(Integration::ResourceId id,
317 Integration::ResourceFailure failure);
319 Integration::ResourceRequest* GetRequest();
321 void DiscardRequest();
323 void SetClosestImageSize(const Vector2& size);
325 void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
327 void SetSaveFileResult( bool result );
329 PlatformAbstraction::FontListMode GetLastFontListMode( );
331 void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
333 void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
337 mutable TraceCallStack mTrace;
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;
347 Vector2 mClosestSize;
348 bool mReadGlobalMetricsResult;
349 bool mReadMetricsResult;
350 Integration::GlobalMetrics mReadGlobalMetrics;
351 std::vector<Integration::GlyphMetrics> mReadMetrics;
353 LoadFileResult mLoadFileResult;
354 bool mSaveFileResult;
355 mutable FontListMode mFontListMode;
360 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */