public:
CanvasRenderer( const Vector2& size )
: mDrawable(nullptr),
- mPixelBuffer( Devel::PixelBuffer::New(size.width, size.height, Dali::Pixel::RGBA8888) ),
+ mTexture ( Dali::Texture::New( Dali::TextureType::TEXTURE_2D, Pixel::RGBA8888, size.width, size.height ) ),
mSize(size),
mViewBox(size)
{
return true;
}
+ Dali::Texture GetRasterizedTexture()
+ {
+ return mTexture;
+ }
+
bool Rasterize()
{
return true;
return false;
}
- Devel::PixelBuffer GetPixelBuffer()
- {
- return mPixelBuffer;
- }
-
-
bool SetSize(Vector2 size)
{
mSize = size;
public:
Dali::CanvasRenderer::Drawable* mDrawable;
- Devel::PixelBuffer mPixelBuffer;
+ Dali::Texture mTexture;
Vector2 mSize;
Vector2 mViewBox;
};
return Internal::Adaptor::GetImplementation(*this).Rasterize();
}
-Devel::PixelBuffer CanvasRenderer::GetPixelBuffer()
+Dali::Texture CanvasRenderer::GetRasterizedTexture()
{
- return Internal::Adaptor::GetImplementation(*this).GetPixelBuffer();
+ return Internal::Adaptor::GetImplementation(*this).GetRasterizedTexture();
}
bool CanvasRenderer::AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
END_TEST;
}
-int UtcDaliCanvasViewRasterizeTaskGetBufferSizeP(void)
-{
- ToolkitTestApplication application;
-
- Dali::Toolkit::Internal::CanvasView* dummyInternalCanvasView = new Dali::Toolkit::Internal::CanvasView(Vector2(100,100));
- DALI_TEST_CHECK( dummyInternalCanvasView );
-
- Dali::CanvasRenderer dummyCanvasRenderer = Dali::CanvasRenderer::New(Vector2(100, 100));
- DALI_TEST_CHECK( dummyCanvasRenderer );
-
- IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(dummyInternalCanvasView, dummyCanvasRenderer);
- DALI_TEST_CHECK( task );
-
- //There is no rasterized buffer.
- DALI_TEST_EQUALS( task->GetBufferSize(), Vector2(0, 0), TEST_LOCATION );
-
- END_TEST;
-}
-
-int UtcDaliCanvasViewRasterizeTaskGetPixelDataP(void)
-{
-
- Dali::Toolkit::Internal::CanvasView* dummyInternalCanvasView = new Dali::Toolkit::Internal::CanvasView(Vector2(100,100));
- DALI_TEST_CHECK( dummyInternalCanvasView );
-
- Dali::CanvasRenderer dummyCanvasRenderer = Dali::CanvasRenderer::New(Vector2(100, 100));
- DALI_TEST_CHECK( dummyCanvasRenderer );
-
- IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(dummyInternalCanvasView, dummyCanvasRenderer);
- DALI_TEST_CHECK( task );
-
- DALI_TEST_EQUALS( task->GetPixelData(), PixelData(), TEST_LOCATION );
-
- END_TEST;
-}
-
int UtcDaliCanvasViewRasterizeThreadP(void)
{
ToolkitTestApplication application;
{
ToolkitTestApplication application;
- Dali::Toolkit::Internal::CanvasView* dummyInternalCanvasView = new Dali::Toolkit::Internal::CanvasView(Vector2(100,100));
- DALI_TEST_CHECK( dummyInternalCanvasView );
+ Dali::Toolkit::CanvasView canvasView = Dali::Toolkit::CanvasView::New(Vector2(100, 100));
+ Dali::Toolkit::Internal::CanvasView& dummyInternalCanvasView = GetImpl(canvasView);
Dali::CanvasRenderer dummyCanvasRenderer = Dali::CanvasRenderer::New(Vector2(100, 100));
DALI_TEST_CHECK( dummyCanvasRenderer );
- IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(dummyInternalCanvasView, dummyCanvasRenderer);
+ IntrusivePtr<Dali::Toolkit::Internal::CanvasRendererRasterizingTask> task = new Dali::Toolkit::Internal::CanvasRendererRasterizingTask(&dummyInternalCanvasView, dummyCanvasRenderer);
DALI_TEST_CHECK( task );
Dali::Toolkit::Internal::CanvasViewRasterizeThread *dummyThread = new Dali::Toolkit::Internal::CanvasViewRasterizeThread();
dummyThread->Process(false);
- PixelData pixelData = CreatePixelData( 100, 100 );
+ auto texture = Texture::New( Dali::TextureType::TEXTURE_2D, Pixel::RGBA8888, 100, 100 );
- dummyThread->RasterizationCompletedSignal().Connect(dummyInternalCanvasView, &Dali::Toolkit::Internal::CanvasView::ApplyRasterizedImage);
- dummyThread->RasterizationCompletedSignal().Emit(pixelData);
+ dummyThread->RasterizationCompletedSignal().Connect(&dummyInternalCanvasView, &Dali::Toolkit::Internal::CanvasView::ApplyRasterizedImage);
+ dummyThread->RasterizationCompletedSignal().Emit(texture);
application.SendNotification();
application.Render();
}
}
-void CanvasView::ApplyRasterizedImage(PixelData rasterizedPixelData)
+void CanvasView::ApplyRasterizedImage(Texture rasterizedTexture)
{
- if(rasterizedPixelData)
+ if (rasterizedTexture && rasterizedTexture.GetWidth() != 0 && rasterizedTexture.GetHeight() != 0)
{
- auto rasterizedPixelDataWidth = rasterizedPixelData.GetWidth();
- auto rasterizedPixelDataHeight = rasterizedPixelData.GetHeight();
-
- if(rasterizedPixelDataWidth > 0 && rasterizedPixelDataHeight > 0)
+ if(!mTextureSet)
{
- if(!mTexture || mTexture.GetWidth() != rasterizedPixelDataWidth || mTexture.GetHeight() != rasterizedPixelDataHeight)
- {
- mTexture = Texture::New(TextureType::TEXTURE_2D, rasterizedPixelData.GetPixelFormat(), rasterizedPixelDataWidth, rasterizedPixelDataHeight);
- mTexture.Upload(rasterizedPixelData);
-
- if(!mTextureSet)
- {
- mTextureSet = TextureSet::New();
- Geometry geometry = VisualFactoryCache::CreateQuadGeometry();
- Shader shader = Shader::New(SHADER_CANVAS_VIEW_VERT, SHADER_CANVAS_VIEW_FRAG);
- Renderer renderer = Renderer::New(geometry, shader);
- renderer.SetTextures(mTextureSet);
- renderer.SetProperty(Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA, true);
-
- Actor actor = Self();
- if(actor)
- {
- actor.AddRenderer(renderer);
- }
- }
- mTextureSet.SetTexture(0, mTexture);
- }
- else
- {
- //Update texture
- mTexture.Upload(rasterizedPixelData);
- }
+ mTextureSet = TextureSet::New();
+ Geometry geometry = VisualFactoryCache::CreateQuadGeometry();
+ Shader shader = Shader::New(SHADER_CANVAS_VIEW_VERT, SHADER_CANVAS_VIEW_FRAG);
+ Renderer renderer = Renderer::New(geometry, shader);
+ renderer.SetTextures(mTextureSet);
+ renderer.SetProperty(Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA, true);
+ Self().AddRenderer(renderer);
}
+ mTextureSet.SetTexture(0, rasterizedTexture);
}
//If there are accumulated changes to CanvasRenderer during Rasterize, Rasterize once again.
/**
* @bried Apply the rasterized image to the canvas view
*
- * @param[in] rasterizedPixelData The pixel buffer with the rasterized pixels
+ * @param[in] rasterizedTexture The texture with the rasterized pixels
*/
- void ApplyRasterizedImage(PixelData rasterizedPixelData);
+ void ApplyRasterizedImage(Texture rasterizedTexture);
private:
CanvasView(const CanvasView&) = delete;
CanvasRendererRasterizingTask::CanvasRendererRasterizingTask(CanvasView* canvasView, CanvasRenderer canvasRenderer)
: mCanvasView(canvasView),
mCanvasRenderer(canvasRenderer),
- mPixelData(PixelData()),
- mBufferSize(0, 0)
+ mRasterizedTexture()
{
}
{
if(mCanvasRenderer && mCanvasRenderer.Rasterize())
{
- Devel::PixelBuffer pixbuf = mCanvasRenderer.GetPixelBuffer();
- auto width = pixbuf.GetWidth();
- auto height = pixbuf.GetHeight();
- if(width > 0 && height > 0)
- {
- mBufferSize.width = width;
- mBufferSize.height = height;
-
- mPixelData = Devel::PixelBuffer::Convert(pixbuf);
- return true;
- }
+ return true;
}
return false;
}
return mCanvasView.Get();
}
-PixelData CanvasRendererRasterizingTask::GetPixelData() const
-{
- return mPixelData;
-}
-
-Vector2 CanvasRendererRasterizingTask::GetBufferSize() const
+Texture CanvasRendererRasterizingTask::GetRasterizedTexture()
{
- return mBufferSize;
+ return mCanvasRenderer.GetRasterizedTexture();
}
CanvasViewRasterizeThread::CanvasViewRasterizeThread()
{
while(CanvasRendererRasterizingTaskPtr task = NextCompletedTask())
{
- RasterizationCompletedSignal().Emit(task->GetPixelData());
+ RasterizationCompletedSignal().Emit(task->GetRasterizedTexture()); // Here texture get
}
UnregisterProcessor();
#include <dali/devel-api/threading/thread.h>
#include <dali/integration-api/adaptor-framework/log-factory-interface.h>
#include <dali/public-api/common/intrusive-ptr.h>
-#include <dali/public-api/images/pixel-data.h>
#include <dali/public-api/object/ref-object.h>
#include <dali/public-api/rendering/texture-set.h>
#include <memory>
/**
* Get the rasterization result.
- * @return The pixel data with the rasterized pixels.
+ * @return The texture with the rasterized pixels.
*/
- PixelData GetPixelData() const;
-
- /**
- * Get size of rasterization result.
- * @return The size of the pixel data.
- */
- Vector2 GetBufferSize() const;
+ Texture GetRasterizedTexture();
private:
// Undefined
private:
CanvasViewPtr mCanvasView;
CanvasRenderer mCanvasRenderer;
- PixelData mPixelData;
- Vector2 mBufferSize;
+ Texture mRasterizedTexture;
};
/**
{
public:
/// @brief ApplyRasterizedImage Event signal type
- using RasterizationCompletedSignalType = Signal<void(PixelData)>;
+ using RasterizationCompletedSignalType = Signal<void(Texture)>;
public:
/**