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 std::string GetDefaultFontFamily() const;
145 * @copydoc PlatformAbstraction::GetDefaultFontSize()
147 virtual const float GetDefaultFontSize() const;
149 virtual const Dali::PixelSize GetFontLineHeightFromCapsHeight(const std::string& fontFamily, const std::string& fontStyle, const 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 std::string GetFontFamilyForChars(const TextArray& charsRequested) const;
188 * @copydoc PlatformAbstraction::AllGlyphsSupported()
190 virtual bool AllGlyphsSupported(const std::string& name, const std::string& fontStyle, const 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 std::vector<std::string> GetFontList( PlatformAbstraction::FontListMode mode ) 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 );
234 virtual void GetFileNamesFromDirectory( const std::string& directoryName,
235 std::vector<std::string>& fileNames );
237 virtual Integration::BitmapPtr GetGlyphImage( const std::string& fontFamily, const std::string& fontStyle, float fontSize, uint32_t character ) const;
239 public: // TEST FUNCTIONS
241 // Enumeration of Platform Abstraction methods
244 GetTimeMicrosecondsFunc,
254 GetDefaultFontFamilyFunc,
255 GetDefaultFontSizeFunc,
256 GetFontLineHeightFromCapsHeightFunc,
258 GetCachedGlyphDataFunc,
261 JoinLoaderThreadsFunc,
262 GetFontFamilyForCharsFunc,
263 AllGlyphsSupportedFunc,
264 ValidateFontFamilyNameFunc,
265 UpdateDefaultsFromDeviceFunc,
266 GetDynamicsFactoryFunc,
267 ValidateGetFontListFunc,
268 ReadGlobalMetricsFromCacheFileFunc,
269 WriteGlobalMetricsToCacheFileFunc,
270 ReadMetricsFromCacheFileFunc,
271 WriteMetricsToCacheFileFunc,
274 /** Call this every test */
277 inline void EnableTrace(bool enable) { mTrace.Enable(enable); }
278 inline void ResetTrace() { mTrace.Reset(); }
279 inline TraceCallStack& GetTrace() { return mTrace; }
281 bool WasCalled(TestFuncEnum func);
283 void SetGetTimeMicrosecondsResult(size_t sec, size_t usec);
285 void IncrementGetTimeResult(size_t milliseconds);
287 void SetIsLoadingResult(bool result);
289 void SetGetDefaultFontFamilyResult(std::string result);
291 void SetGetDefaultFontSizeResult(float result);
293 void SetGetFontPathResult(std::string& result);
295 void ClearReadyResources();
297 void SetResourceLoaded(Integration::ResourceId loadedId,
298 Integration::ResourceTypeId loadedType,
299 Integration::ResourcePointer loadedResource);
301 void SetResourceLoadFailed(Integration::ResourceId id,
302 Integration::ResourceFailure failure);
304 void SetResourceSaved(Integration::ResourceId savedId,
305 Integration::ResourceTypeId savedType);
307 void SetResourceSaveFailed(Integration::ResourceId id,
308 Integration::ResourceFailure failure);
310 Integration::ResourceRequest* GetRequest();
312 void DiscardRequest();
314 void SetClosestImageSize(const Vector2& size);
316 void SetLoadFileResult( bool result, std::vector< unsigned char >& buffer );
318 void SetSaveFileResult( bool result );
320 PlatformAbstraction::FontListMode GetLastFontListMode( );
322 void SetReadGlobalMetricsResult( bool success, Integration::GlobalMetrics& globalMetrics );
324 void SetReadMetricsResult( bool success, std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
328 mutable TraceCallStack mTrace;
330 size_t mMicroSeconds;
331 bool mIsLoadingResult;
332 std::string mGetDefaultFontFamilyResult;
333 float mGetDefaultFontSizeResult;
334 std::string mGetFontPathResult;
335 Resources mResources;
336 Integration::ResourceRequest* mRequest;
338 Vector2 mClosestSize;
339 bool mReadGlobalMetricsResult;
340 bool mReadMetricsResult;
341 Integration::GlobalMetrics mReadGlobalMetrics;
342 std::vector<Integration::GlyphMetrics> mReadMetrics;
344 LoadFileResult mLoadFileResult;
345 bool mSaveFileResult;
346 mutable FontListMode mFontListMode;
351 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */