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
217 * @copydoc PlatformAbstraction::SaveFile()
219 virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
221 virtual void JoinLoaderThreads();
223 virtual void UpdateDefaultsFromDevice();
225 virtual Integration::DynamicsFactory* GetDynamicsFactory();
227 virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
228 const std::string& fontStyle,
229 Integration::GlobalMetrics& globalMetrics );
231 virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
232 const std::string& fontStyle,
233 const Integration::GlobalMetrics& globalMetrics );
235 virtual bool ReadMetricsFromCache( const std::string& fontFamily,
236 const std::string& fontStyle,
237 std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
238 virtual void WriteMetricsToCache( const std::string& fontFamily,
239 const std::string& fontStyle,
240 const Integration::GlyphSet& glyphSet );
243 virtual void GetFileNamesFromDirectory( const std::string& directoryName,
244 std::vector<std::string>& fileNames );
246 virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
248 public: // TEST FUNCTIONS
250 // Enumeration of Platform Abstraction methods
253 GetTimeMicrosecondsFunc,
260 LoadShaderBinFileFunc,
264 GetDefaultFontFamilyFunc,
265 GetDefaultFontSizeFunc,
266 GetFontLineHeightFromCapsHeightFunc,
268 GetCachedGlyphDataFunc,
271 JoinLoaderThreadsFunc,
272 GetFontFamilyForCharsFunc,
273 AllGlyphsSupportedFunc,
274 ValidateFontFamilyNameFunc,
275 UpdateDefaultsFromDeviceFunc,
276 GetDynamicsFactoryFunc,
277 ValidateGetFontListFunc,
278 ReadGlobalMetricsFromCacheFileFunc,
279 WriteGlobalMetricsToCacheFileFunc,
280 ReadMetricsFromCacheFileFunc,
281 WriteMetricsToCacheFileFunc,
284 /** Call this every test */
287 inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
288 inline void ResetTrace() { mTrace.Reset(); }
289 inline TraceCallStack& GetTrace() { return mTrace; }
291 bool WasCalled(TestFuncEnum func);
293 void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
295 void IncrementGetTimeResult(size_t milliseconds);
297 void SetIsLoadingResult(bool result);
299 void SetGetDefaultFontFamilyResult(std::string result);
301 void SetGetDefaultFontSizeResult(float result);
303 void SetGetFontPathResult(std::string& result);
305 void ClearReadyResources();
307 void SetResourceLoaded(Integration::ResourceId loadedId,
308 Integration::ResourceTypeId loadedType,
309 Integration::ResourcePointer loadedResource);
311 void SetResourceLoadFailed(Integration::ResourceId id,
312 Integration::ResourceFailure failure);
314 void SetResourceSaved(Integration::ResourceId savedId,
315 Integration::ResourceTypeId savedType);
317 void SetResourceSaveFailed(Integration::ResourceId id,
318 Integration::ResourceFailure failure);
320 Integration::ResourceRequest* GetRequest();
322 void DiscardRequest();
324 void SetClosestImageSize(const Vector2& size);
326 void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
328 void SetSaveFileResult( bool result );
330 PlatformAbstraction::FontListMode GetLastFontListMode( );
332 void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
334 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__ */