1 #ifndef __DALI_SLP_PLATFORM_ABSTRACTION_H__
2 #define __DALI_SLP_PLATFORM_ABSTRACTION_H__
5 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
20 #include <dali/integration-api/platform-abstraction.h>
21 #include <dali/integration-api/resource-cache.h>
22 #include <dali/public-api/common/dali-common.h>
25 #include FT_FREETYPE_H
32 * Construct a platform abstraction and return it.
34 DALI_IMPORT_API Integration::PlatformAbstraction* CreatePlatformAbstraction();
39 class DynamicsFactory;
43 * Concrete implementation of the platform abstraction class.
45 class SlpPlatformAbstraction : public Integration::PlatformAbstraction
48 public: // Construction & Destruction
53 SlpPlatformAbstraction();
58 virtual ~SlpPlatformAbstraction();
60 public: // PlatformAbstraction overrides
63 * @copydoc PlatformAbstraction::GetTimeMicroseconds()
65 virtual void GetTimeMicroseconds(unsigned int &seconds, unsigned int µSeconds);
68 * @copydoc PlatformAbstraction::Suspend()
70 virtual void Suspend();
73 * @copydoc PlatformAbstraction::Resume()
75 virtual void Resume();
78 * @copydoc PlatformAbstraction::GetClosestImageSize()
80 virtual void GetClosestImageSize( const std::string& filename,
81 const ImageAttributes& attributes,
82 Vector2& closestSize );
85 * @copydoc PlatformAbstraction::GetClosestImageSize()
87 virtual void GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
88 const ImageAttributes& attributes,
89 Vector2& closestSize );
92 * @copydoc PlatformAbstraction::LoadResource()
94 virtual void LoadResource(const Integration::ResourceRequest& request);
97 * @copydoc PlatformAbstraction::LoadResourceSynchronously()
99 virtual Integration::ResourcePointer LoadResourceSynchronously(const Integration::ResourceType& resourceType, const std::string& resourcePath);
102 * @copydoc PlatformAbstraction::SaveResource()
104 virtual void SaveResource(const Integration::ResourceRequest& request);
107 * @copydoc PlatformAbstraction::CancelLoad()
109 virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
112 * @copydoc PlatformAbstraction::GetResources()
114 virtual void GetResources(Integration::ResourceCache& cache);
117 * @copydoc PlatformAbstraction::IsLoading()
119 virtual bool IsLoading();
122 * @copydoc PlatformAbstraction::JoinLoaderThreads()
124 virtual void JoinLoaderThreads();
127 *@copydoc PlatformAbstraction::GetDefaultFontFamily()
129 virtual std::string GetDefaultFontFamily() const;
132 *@copydoc PlatformAbstraction::GetDefaultFontSize()
134 virtual const float GetDefaultFontSize() const;
137 *@copydoc PlatformAbstraction::GetFontLineHeightFromCapsHeight()
139 virtual const PixelSize GetFontLineHeightFromCapsHeight(const std::string fontFamily, const std::string& fontStyle, const CapsHeight& capsHeight) const;
142 * @copydoc PlatformAbstraction::GetGlyphData()
144 virtual Integration::GlyphSet* GetGlyphData ( const Dali::Integration::TextResourceType& textRequest,
145 const std::string& fontFamily,
146 bool getBitmap) const;
149 * @copydoc PlatformAbstraction::GetCachedGlyphData()
151 virtual Integration::GlyphSet* GetCachedGlyphData( const Integration::TextResourceType& textRequest,
152 const std::string& fontFamily ) const;
155 * @copydoc PlatformAbstraction::GetGlobalMetrics()
157 virtual void GetGlobalMetrics( const std::string& fontFamily,
158 const std::string& fontStyle,
159 Integration::GlobalMetrics& globalMetrics ) const;
162 * @copydoc PlatformAbstraction::SetDpi()
164 virtual void SetDpi (unsigned int DpiHorizontal, unsigned int DpiVertical);
167 * @copydoc PlatformAbstraction::GetFontFamilyForChars()
169 std::string GetFontFamilyForChars(const TextArray& charsRequested) const;
172 * @copydoc PlatformAbstraction::AllGlyphsSupported()
174 bool AllGlyphsSupported(const std::string &fontFamily, const std::string& fontStyle, const TextArray& charsRequested) const;
177 * @copydoc PlatformAbstraction::ValidateFontFamilyName()
179 virtual bool ValidateFontFamilyName(const std::string& fontFamily, const std::string& fontStyle, bool& isDefaultSystemFont, std::string& closestMatch, std::string& closestStyleMatch) const;
182 * @copydoc PlatformAbstraction::GetFontList()
184 virtual std::vector<std::string> GetFontList ( Dali::Integration::PlatformAbstraction::FontListMode mode ) const;
187 * @copydoc PlatformAbstraction::LoadFile()
189 virtual bool LoadFile( const std::string& filename, std::vector< unsigned char >& buffer ) const;
192 * @copydoc PlatformAbstraction::LoadFile()
194 virtual std::string LoadFile( const std::string& filename );
197 * @copydoc PlatformAbstraction::SaveFile()
199 virtual bool SaveFile(const std::string& filename, std::vector< unsigned char >& buffer) const;
202 * @copydoc PlatformAbstraction::UpdateDefaultsFromDevice();
204 virtual void UpdateDefaultsFromDevice();
207 * @copydoc PlatformAbstraction::GetDynamicsFactory();
209 virtual Integration::DynamicsFactory* GetDynamicsFactory();
212 * @copydoc PlatformAbstraction::ReadGlobalMetricsFromCacheFile
214 virtual bool ReadGlobalMetricsFromCache( const std::string& fontFamily,
215 const std::string& fontStyle,
216 Integration::GlobalMetrics& globalMetrics );
219 * @copydoc PlatformAbstraction::WriteGlobalMetricsToCacheFile
221 virtual void WriteGlobalMetricsToCache( const std::string& fontFamily,
222 const std::string& fontStyle,
223 const Integration::GlobalMetrics& globalMetrics );
226 * @copydoc PlatformAbstraction::ReadMetricsFromCacheFile
228 virtual bool ReadMetricsFromCache( const std::string& fontFamily,
229 const std::string& fontStyle,
230 std::vector<Integration::GlyphMetrics>& glyphMetricsContainer );
233 * @copydoc PlatformAbstraction::WriteMetricsToCacheFile
235 virtual void WriteMetricsToCache( const std::string& fontFamily,
236 const std::string& fontStyle,
237 const Integration::GlyphSet& glyphSet );
240 ResourceLoader* mResourceLoader;
241 FT_Library mFreeTypeHandle; ///< Freetype library
242 std::string mDefaultFontFamily;
243 std::string mDefaultFontStyle;
244 float mDefaultFontSize;
245 std::string mDefaultThemeFile;
246 DynamicsFactory* mDynamicsFactory;
249 } // namespace SlpPlatform
252 #endif // __DALI_SLP_PLATFORM_ABSTRACTION_H__