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::SaveFile()
213 virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
215 virtual void JoinLoaderThreads();
217 virtual void UpdateDefaultsFromDevice();
219 virtual Integration::DynamicsFactory* GetDynamicsFactory();
221 virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
222 const std::string& fontStyle,
223 Integration::GlobalMetrics& globalMetrics );
225 virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
226 const std::string& fontStyle,
227 const Integration::GlobalMetrics& globalMetrics );
229 virtual bool ReadMetricsFromCache( const std::string& fontFamily,
230 const std::string& fontStyle,
231 std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
232 virtual void WriteMetricsToCache( const std::string& fontFamily,
233 const std::string& fontStyle,
234 const Integration::GlyphSet& glyphSet );
237 virtual void GetFileNamesFromDirectory( const std::string& directoryName,
238 std::vector<std::string>& fileNames );
240 virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
242 public: // TEST FUNCTIONS
244 // Enumeration of Platform Abstraction methods
247 GetTimeMicrosecondsFunc,
257 GetDefaultFontFamilyFunc,
258 GetDefaultFontSizeFunc,
259 GetFontLineHeightFromCapsHeightFunc,
261 GetCachedGlyphDataFunc,
264 JoinLoaderThreadsFunc,
265 GetFontFamilyForCharsFunc,
266 AllGlyphsSupportedFunc,
267 ValidateFontFamilyNameFunc,
268 UpdateDefaultsFromDeviceFunc,
269 GetDynamicsFactoryFunc,
270 ValidateGetFontListFunc,
271 ReadGlobalMetricsFromCacheFileFunc,
272 WriteGlobalMetricsToCacheFileFunc,
273 ReadMetricsFromCacheFileFunc,
274 WriteMetricsToCacheFileFunc,
277 /** Call this every test */
280 inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
281 inline void ResetTrace() { mTrace.Reset(); }
282 inline TraceCallStack& GetTrace() { return mTrace; }
284 bool WasCalled(TestFuncEnum func);
286 void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
288 void IncrementGetTimeResult(size_t milliseconds);
290 void SetIsLoadingResult(bool result);
292 void SetGetDefaultFontFamilyResult(std::string result);
294 void SetGetDefaultFontSizeResult(float result);
296 void SetGetFontPathResult(std::string& result);
298 void ClearReadyResources();
300 void SetResourceLoaded(Integration::ResourceId loadedId,
301 Integration::ResourceTypeId loadedType,
302 Integration::ResourcePointer loadedResource);
304 void SetResourceLoadFailed(Integration::ResourceId id,
305 Integration::ResourceFailure failure);
307 void SetResourceSaved(Integration::ResourceId savedId,
308 Integration::ResourceTypeId savedType);
310 void SetResourceSaveFailed(Integration::ResourceId id,
311 Integration::ResourceFailure failure);
313 Integration::ResourceRequest* GetRequest();
315 void DiscardRequest();
317 void SetClosestImageSize(const Vector2& size);
319 void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
321 void SetSaveFileResult( bool result );
323 PlatformAbstraction::FontListMode GetLastFontListMode( );
325 void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
327 void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
330 mutable TraceCallStack mTrace;
332 size_t mMicroSeconds;
333 bool mIsLoadingResult;
334 std::string mGetDefaultFontFamilyResult;
335 float mGetDefaultFontSizeResult;
336 std::string mGetFontPathResult;
337 Resources mResources;
338 Integration::ResourceRequest* mRequest;
340 Vector2 mClosestSize;
341 bool mReadGlobalMetricsResult;
342 bool mReadMetricsResult;
343 Integration::GlobalMetrics mReadGlobalMetrics;
344 std::vector<Integration::GlyphMetrics> mReadMetrics;
346 LoadFileResult mLoadFileResult;
347 bool mSaveFileResult;
348 mutable FontListMode mFontListMode;
353 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */