#include <dali-toolkit/internal/text/clipping/text-clipper.h>
// EXTERNAL INCLUDES
-#include <algorithm>
#include <dali/public-api/common/stage.h>
#include <dali/public-api/render-tasks/render-task-list.h>
-#include <dali/integration-api/debug.h>
+#include <dali/devel-api/rendering/renderer.h>
namespace
{
return mOffscreenRootActor;
}
-ImageActor Clipper::GetImageActor() const
+Actor Clipper::GetImageActor() const
{
return mImageActor;
}
FrameBufferImage frameBufferImage = FrameBufferImage::New( offscreenSize.width,
offscreenSize.height,
Pixel::RGBA8888 );
+
+ mOffscreenRootActor.SetSize( size );
+
+ mImageActor.SetSize( offscreenSize );
mImageActor.SetImage( frameBufferImage );
mRenderTask.SetTargetFrameBuffer( frameBufferImage );
- // Stores current size to avoid create new Dali resources if text changes.
+ // Stores current sizPe to avoid create new Dali resources if text changes.
mCurrentOffscreenSize = offscreenSize;
}
// Create a root actor and an image actor for offscreen rendering.
mOffscreenRootActor = Layer::New();
mOffscreenRootActor.SetColorMode( USE_OWN_COLOR );
- mOffscreenRootActor.SetPositionInheritanceMode( DONT_INHERIT_POSITION );
- mOffscreenRootActor.SetInheritRotation( false );
+ mOffscreenRootActor.SetInheritPosition( false );
mOffscreenRootActor.SetInheritScale( false );
mOffscreenRootActor.SetDepthTestDisabled( true );
mOffscreenRootActor.SetSize( offscreenSize );
- mOffscreenRootActor.SetPosition( 0.0f, 0.0f, 0.0f );
- mImageActor = ImageActor::New();
- mImageActor.SetAnchorPoint( ParentOrigin::CENTER );
+ mImageActor = ImageView::New();
mImageActor.SetParentOrigin( ParentOrigin::CENTER );
- mImageActor.SetBlendFunc( BlendingFactor::ONE, BlendingFactor::ONE_MINUS_SRC_ALPHA,
- BlendingFactor::ONE, BlendingFactor::ONE );
mImageActor.SetScale( Vector3( 1.0f, -1.0f, 1.0f ) );
mImageActor.SetSize( offscreenSize );
// Creates a new camera actor.
mOffscreenCameraActor = CameraActor::New();
mOffscreenCameraActor.SetParentOrigin( ParentOrigin::CENTER );
- mOffscreenCameraActor.SetAnchorPoint( AnchorPoint::CENTER );
- mOffscreenCameraActor.SetRotation(Degree(180.f), Vector3::YAXIS);
- mOffscreenCameraActor.SetType( Dali::Camera::FREE_LOOK ); // Inherits position from the offscreen root actor.
mOffscreenCameraActor.SetOrthographicProjection( offscreenSize );
mOffscreenRootActor.Add( mOffscreenCameraActor ); // camera to shoot the offscreen text
// Creates a new render task.
mRenderTask = Stage::GetCurrent().GetRenderTaskList().CreateTask();
mRenderTask.SetSourceActor( mOffscreenRootActor );
- mRenderTask.SetInputEnabled( false );
mRenderTask.SetClearColor( Color::TRANSPARENT );
mRenderTask.SetClearEnabled( true );
mRenderTask.SetExclusive( true );
Pixel::RGBA8888 );
mImageActor.SetImage( frameBufferImage );
mRenderTask.SetTargetFrameBuffer( frameBufferImage );
+ mImageActor.OnStageSignal().Connect(this, &Clipper::OnStageConnect);
// Stores current size to avoid create new Dali resources if text changes.
mCurrentOffscreenSize = offscreenSize;
}
+void Clipper::OnStageConnect( Dali::Actor actor )
+{
+ Renderer renderer = mImageActor.GetRendererAt(0);
+ renderer.SetBlendFunc(BlendingFactor::ONE, BlendingFactor::ONE_MINUS_SRC_ALPHA,
+ BlendingFactor::ONE, BlendingFactor::ONE);
+}
+
Clipper::Clipper()
{
}