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::LoadShaderBinFile()
210 virtual bool LoadShaderBinFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
213 * @copydoc PlatformAbstraction::SaveFile()
215 virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
217 virtual void JoinLoaderThreads();
219 virtual void UpdateDefaultsFromDevice();
221 virtual Integration::DynamicsFactory* GetDynamicsFactory();
223 virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
224 const std::string& fontStyle,
225 Integration::GlobalMetrics& globalMetrics );
227 virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
228 const std::string& fontStyle,
229 const Integration::GlobalMetrics& globalMetrics );
231 virtual bool ReadMetricsFromCache( const std::string& fontFamily,
232 const std::string& fontStyle,
233 std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
234 virtual void WriteMetricsToCache( const std::string& fontFamily,
235 const std::string& fontStyle,
236 const Integration::GlyphSet& glyphSet );
238 virtual void GetFileNamesFromDirectory( const std::string& directoryName,
239 std::vector<std::string>& fileNames );
241 virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
243 public: // TEST FUNCTIONS
245 // Enumeration of Platform Abstraction methods
248 GetTimeMicrosecondsFunc,
258 GetDefaultFontFamilyFunc,
259 GetDefaultFontSizeFunc,
260 GetFontLineHeightFromCapsHeightFunc,
262 GetCachedGlyphDataFunc,
265 JoinLoaderThreadsFunc,
266 GetFontFamilyForCharsFunc,
267 AllGlyphsSupportedFunc,
268 ValidateFontFamilyNameFunc,
269 UpdateDefaultsFromDeviceFunc,
270 GetDynamicsFactoryFunc,
271 ValidateGetFontListFunc,
272 ReadGlobalMetricsFromCacheFileFunc,
273 WriteGlobalMetricsToCacheFileFunc,
274 ReadMetricsFromCacheFileFunc,
275 WriteMetricsToCacheFileFunc,
278 /** Call this every test */
281 inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
282 inline void ResetTrace() { mTrace.Reset(); }
283 inline TraceCallStack& GetTrace() { return mTrace; }
285 bool WasCalled(TestFuncEnum func);
287 void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
289 void IncrementGetTimeResult(size_t milliseconds);
291 void SetIsLoadingResult(bool result);
293 void SetGetDefaultFontFamilyResult(std::string result);
295 void SetGetDefaultFontSizeResult(float result);
297 void SetGetFontPathResult(std::string& result);
299 void ClearReadyResources();
301 void SetResourceLoaded(Integration::ResourceId loadedId,
302 Integration::ResourceTypeId loadedType,
303 Integration::ResourcePointer loadedResource);
305 void SetResourceLoadFailed(Integration::ResourceId id,
306 Integration::ResourceFailure failure);
308 void SetResourceSaved(Integration::ResourceId savedId,
309 Integration::ResourceTypeId savedType);
311 void SetResourceSaveFailed(Integration::ResourceId id,
312 Integration::ResourceFailure failure);
314 Integration::ResourceRequest* GetRequest();
316 void DiscardRequest();
318 void SetClosestImageSize(const Vector2& size);
320 void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
322 void SetSaveFileResult( bool result );
324 PlatformAbstraction::FontListMode GetLastFontListMode( );
326 void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
328 void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
331 mutable TraceCallStack mTrace;
333 size_t mMicroSeconds;
334 bool mIsLoadingResult;
335 std::string mGetDefaultFontFamilyResult;
336 float mGetDefaultFontSizeResult;
337 std::string mGetFontPathResult;
338 Resources mResources;
339 Integration::ResourceRequest* mRequest;
341 Vector2 mClosestSize;
342 bool mReadGlobalMetricsResult;
343 bool mReadMetricsResult;
344 Integration::GlobalMetrics mReadGlobalMetrics;
345 std::vector<Integration::GlyphMetrics> mReadMetrics;
347 LoadFileResult mLoadFileResult;
348 bool mSaveFileResult;
349 mutable FontListMode mFontListMode;
350 TestDynamicsFactory* mDynamicsFactory;
355 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */