}
CanvasRendererTizen::CanvasRendererTizen(const Vector2& viewBox)
-: mPixelBuffer(nullptr),
+:
#ifdef THORVG_SUPPORT
+ mPixelBuffer(nullptr),
+ mRasterizedTexture(),
+ mMutex(),
mTvgCanvas(nullptr),
mTvgRoot(nullptr),
#endif
#endif
}
-Devel::PixelBuffer CanvasRendererTizen::GetPixelBuffer()
+Dali::Texture CanvasRendererTizen::GetRasterizedTexture()
{
- return mPixelBuffer;
+#ifdef THORVG_SUPPORT
+ if(mPixelBuffer)
+ {
+ auto width = mPixelBuffer.GetWidth();
+ auto height = mPixelBuffer.GetHeight();
+ if(width <= 0 || height <= 0)
+ {
+ return Dali::Texture();
+ }
+
+ Dali::PixelData pixelData = Devel::PixelBuffer::Convert(mPixelBuffer);
+
+ if(!mRasterizedTexture || mRasterizedTexture.GetWidth() != width || mRasterizedTexture.GetHeight() != height)
+ {
+ mRasterizedTexture = Dali::Texture::New(Dali::TextureType::TEXTURE_2D, Dali::Pixel::BGRA8888, width, height);
+ }
+
+ mRasterizedTexture.Upload(pixelData);
+ }
+ return mRasterizedTexture;
+#else
+ return Dali::Texture();
+#endif
}
bool CanvasRendererTizen::AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
#endif
}
-bool CanvasRendererTizen::SetSize(const Vector2& size)
+bool CanvasRendererTizen::SetSize(Vector2 size)
{
if(size.width < 1.0f || size.height < 1.0f)
{
return true;
}
-const Vector2& CanvasRendererTizen::GetSize()
+Vector2 CanvasRendererTizen::GetSize() const
{
return mSize;
}
void CanvasRendererTizen::MakeTargetBuffer(const Vector2& size)
{
#ifdef THORVG_SUPPORT
- mPixelBuffer = Devel::PixelBuffer::New(size.width, size.height, Dali::Pixel::RGBA8888);
+ mPixelBuffer = Devel::PixelBuffer::New(size.width, size.height, Dali::Pixel::BGRA8888);
unsigned char* pBuffer;
pBuffer = mPixelBuffer.GetBuffer();
return;
}
- mTvgCanvas->target(reinterpret_cast<uint32_t*>(pBuffer), size.width, size.width, size.height, tvg::SwCanvas::ABGR8888);
+ mTvgCanvas->target(reinterpret_cast<uint32_t*>(pBuffer), size.width, size.width, size.height, tvg::SwCanvas::ARGB8888);
#endif
}