1 #ifndef __DALI_EMSCRIPTEN_PLATFORM_ABSTRACTION_H__
2 #define __DALI_EMSCRIPTEN_PLATFORM_ABSTRACTION_H__
5 * Copyright (c) 2016 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.
28 #include <dali/integration-api/platform-abstraction.h>
29 #include <dali/integration-api/bitmap.h>
35 * An Dali Platform abstraction using libSDL for Emscripten.
37 * Emscripten already wraps the SDL API so we can use this API to create windows/canvas in the browser
40 class DALI_IMPORT_API EmscriptenPlatformAbstraction : public Dali::Integration::PlatformAbstraction
48 Integration::ResourceId loadedId;
49 Integration::ResourceTypeId loadedType;
50 Integration::ResourcePointer loadedResource;
53 Integration::ResourceId loadFailedId;
54 Integration::ResourceFailure loadFailure;
57 Integration::ResourceId savedId;
58 Integration::ResourceTypeId savedType;
61 Integration::ResourceId saveFailedId;
62 Integration::ResourceFailure saveFailure;
74 std::vector< unsigned char> buffer;
81 EmscriptenPlatformAbstraction();
87 virtual ~EmscriptenPlatformAbstraction();
90 * @copydoc PlatformAbstraction::GetTimeMicroseconds()
92 virtual void GetTimeMicroseconds(unsigned int &seconds, unsigned int µSeconds);
94 void IncrementGetTimeResult(size_t milliseconds);
97 * @copydoc PlatformAbstraction::Suspend()
99 virtual void Suspend();
102 * @copydoc PlatformAbstraction::Resume()
104 virtual void Resume();
107 * @copydoc PlatformAbstraction::GetClosestImageSize()
109 virtual ImageDimensions GetClosestImageSize( const std::string& filename,
110 ImageDimensions size,
111 FittingMode::Type fittingMode,
112 SamplingMode::Type samplingMode,
113 bool orientationCorrection );
115 * @copydoc PlatformAbstraction::GetClosestImageSize()
117 virtual ImageDimensions GetClosestImageSize( Integration::ResourcePointer resourceBuffer,
118 ImageDimensions size,
119 FittingMode::Type fittingMode,
120 SamplingMode::Type samplingMode,
121 bool orientationCorrection );
124 * @copydoc PlatformAbstraction::LoadResource()
126 virtual void LoadResource(const Integration::ResourceRequest& request);
128 virtual Integration::ResourcePointer LoadResourceSynchronously( const Integration::ResourceType& resourceType, const std::string& resourcePath );
131 * @copydoc PlatformAbstraction::SaveResource()
133 virtual void SaveResource(const Integration::ResourceRequest& request);
136 * @copydoc PlatformAbstraction::DecodeBuffer()
138 virtual Integration::BitmapPtr DecodeBuffer( const Integration::ResourceType& resourceType, uint8_t * buffer, size_t bufferSize );
141 * @copydoc PlatformAbstraction::CancelLoad()
143 virtual void CancelLoad(Integration::ResourceId id, Integration::ResourceTypeId typeId);
146 * @copydoc PlatformAbstraction::GetResources()
148 virtual void GetResources(Integration::ResourceCache& cache);
151 * @copydoc PlatformAbstraction::IsLoading()
153 virtual bool IsLoading();
156 * @copydoc PlatformAbstraction::GetDefaultFontFamily()
158 virtual const std::string& GetDefaultFontFamily() const;
161 * @copydoc PlatformAbstraction::GetDefaultFontSize()
163 virtual int GetDefaultFontSize() const;
166 * Sets horizontal and vertical pixels per inch value that is used by the display
167 * @param[in] dpiHorizontal horizontal dpi value
168 * @param[in] dpiVertical vertical dpi value
170 virtual void SetDpi (unsigned int dpiHorizontal, unsigned int dpiVertical);
173 * @copydoc PlatformAbstraction::LoadFile()
175 virtual bool LoadFile( const std::string& filename, Dali::Vector< unsigned char >& buffer ) const;
178 * @copydoc PlatformAbstraction::SaveFile()
180 virtual bool SaveFile( const std::string& filename, const unsigned char * buffer, unsigned int numBytes ) const;
183 * @copydoc PlatformAbstraction::JoinLoaderThreads()
185 virtual void JoinLoaderThreads();
188 * @copydoc PlatformAbstraction::LoadShaderBinaryFile()
190 virtual bool LoadShaderBinaryFile( const std::string& filename, Dali::Vector< unsigned char >& buffer ) const;
193 * @copydoc PlatformAbstraction::SaveShaderBinaryFile()
195 virtual bool SaveShaderBinaryFile( const std::string& filename, const unsigned char * buffer, unsigned int numBytes ) const;
198 * @copydoc PlatformAbstraction::UpdateDefaultsFromDevice()
200 virtual void UpdateDefaultsFromDevice();
203 std::string mGetDefaultFontFamilyResult;
204 Resources mResources;
207 LoadFileResult mLoadFileResult;
209 typedef std::pair< Integration::ResourceId, Integration::BitmapPtr > ResourceIdBitmapPair;
210 std::queue<ResourceIdBitmapPair> mResourceQueue;
216 #endif /* __DALI_TET_PLATFORM_ABSTRACTION_H__ */