X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fclipping%2Ftext-clipper.cpp;h=2286a5b6d7989e7e95b3f05aa31cac83b817ecd1;hb=8d92a2cdf4665c1831b524af0a316208947e27c1;hp=66bf2ecf2eebe1d886f8e31b9ae5ec0f8af85192;hpb=3b1fb566901d21b8303d9be3308e3920f5182e6d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/clipping/text-clipper.cpp b/dali-toolkit/internal/text/clipping/text-clipper.cpp index 66bf2ec..2286a5b 100644 --- a/dali-toolkit/internal/text/clipping/text-clipper.cpp +++ b/dali-toolkit/internal/text/clipping/text-clipper.cpp @@ -19,10 +19,9 @@ #include // EXTERNAL INCLUDES -#include #include #include -#include +#include namespace { @@ -57,9 +56,9 @@ Actor Clipper::GetRootActor() const return mOffscreenRootActor; } -ImageActor Clipper::GetImageActor() const +Actor Clipper::GetImageView() const { - return mImageActor; + return mImageView; } void Clipper::Refresh( const Vector2& size ) @@ -78,10 +77,14 @@ void Clipper::Refresh( const Vector2& size ) FrameBufferImage frameBufferImage = FrameBufferImage::New( offscreenSize.width, offscreenSize.height, Pixel::RGBA8888 ); - mImageActor.SetImage( frameBufferImage ); + + mOffscreenRootActor.SetSize( size ); + + mImageView.SetSize( offscreenSize ); + mImageView.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; } @@ -93,21 +96,18 @@ void Clipper::Initialize( const Vector2& size ) const Size offscreenSize( std::min( MAX_OFFSCREEN_RENDERING_SIZE, size.width ), std::min( MAX_OFFSCREEN_RENDERING_SIZE, size.height ) ); - // Create a root actor and an image actor for offscreen rendering. + // Create a root actor and an image view 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 ); - mImageActor = ImageActor::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 ); + mImageView = ImageView::New(); + mImageView.SetParentOrigin( ParentOrigin::CENTER ); + mImageView.SetScale( Vector3( 1.0f, -1.0f, 1.0f ) ); + mImageView.SetSize( offscreenSize ); // Creates a new camera actor. mOffscreenCameraActor = CameraActor::New(); @@ -127,13 +127,23 @@ void Clipper::Initialize( const Vector2& size ) FrameBufferImage frameBufferImage = FrameBufferImage::New( offscreenSize.width, offscreenSize.height, Pixel::RGBA8888 ); - mImageActor.SetImage( frameBufferImage ); + mImageView.SetImage( frameBufferImage ); mRenderTask.SetTargetFrameBuffer( frameBufferImage ); + mImageView.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 = mImageView.GetRendererAt(0); + renderer.SetProperty( Renderer::Property::BLEND_FACTOR_SRC_RGB, BlendFactor::ONE ); + renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_RGB, BlendFactor::ONE_MINUS_SRC_ALPHA ); + renderer.SetProperty( Renderer::Property::BLEND_FACTOR_SRC_ALPHA, BlendFactor::ONE ); + renderer.SetProperty( Renderer::Property::BLEND_FACTOR_DEST_ALPHA, BlendFactor::ONE ); +} + Clipper::Clipper() { } @@ -143,7 +153,7 @@ Clipper::~Clipper() if( Stage::IsInstalled() ) { UnparentAndReset( mOffscreenRootActor ); - UnparentAndReset( mImageActor ); + UnparentAndReset( mImageView ); Stage::GetCurrent().GetRenderTaskList().RemoveTask( mRenderTask ); }