X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fimage-view%2Fimage-view-impl.cpp;h=f19f390211ac906df3ff37c37f12186ea90f8e9a;hb=refs%2Fchanges%2F32%2F98732%2F1;hp=7962e2ec9e169f31d620568e1f47115810d68921;hpb=11ed6421771d05113ae1a6510167d8c2557ac20e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp index 7962e2e..f19f390 100644 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp @@ -11,10 +11,11 @@ // INTERNAL INCLUDES #include -#include +#include #include #include #include +#include namespace Dali { @@ -42,12 +43,25 @@ DALI_PROPERTY_REGISTRATION( Toolkit, ImageView, "preMultipliedAlpha", BOOLEAN, P DALI_ANIMATABLE_PROPERTY_REGISTRATION_WITH_DEFAULT( Toolkit, ImageView, "pixelArea", Vector4(0.f, 0.f, 1.f, 1.f), PIXEL_AREA ) DALI_TYPE_REGISTRATION_END() + +void SetDefaultTransformMap( Property::Map& transformMap ) +{ + transformMap.Clear(); + transformMap + .Add( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) ) + .Add( Toolkit::Visual::DevelProperty::Transform::Property::SIZE, Vector2(1.0f, 1.0f) ) + .Add( Toolkit::Visual::DevelProperty::Transform::Property::ORIGIN, Toolkit::Align::CENTER ) + .Add( Toolkit::Visual::DevelProperty::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER ) + .Add( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE, Vector4::ZERO ); + +} + } // anonymous namespace using namespace Dali; ImageView::ImageView() -: Control( ControlBehaviour( ACTOR_BEHAVIOUR_NONE ) ) +: Control( ControlBehaviour( CONTROL_BEHAVIOUR_DEFAULT ) ) { } @@ -81,8 +95,8 @@ void ImageView::SetImage( Image image ) mImage = image; - Actor self( Self() ); - InitializeVisual( self, mVisual, image ); + mVisual = Toolkit::VisualFactory::Get().CreateVisual( image ); + RegisterVisual( Toolkit::ImageView::Property::IMAGE, mVisual ); mImageSize = image ? ImageDimensions( image.GetWidth(), image.GetHeight() ) : ImageDimensions( 0, 0 ); RelayoutRequest(); @@ -95,8 +109,8 @@ void ImageView::SetImage( Property::Map map ) mImage.Reset(); mPropertyMap = map; - Actor self( Self() ); - InitializeVisual( self, mVisual, mPropertyMap ); + mVisual = Toolkit::VisualFactory::Get().CreateVisual( mPropertyMap ); + RegisterVisual( Toolkit::ImageView::Property::IMAGE, mVisual ); Property::Value* widthValue = mPropertyMap.Find( "width" ); if( widthValue ) @@ -137,10 +151,14 @@ void ImageView::SetImage( const std::string& url, ImageDimensions size ) mImageSize = size; } - Actor self( Self() ); - InitializeVisual( self, mVisual, url, size ); + mVisual = Toolkit::VisualFactory::Get().CreateVisual( url, size ); + RegisterVisual( Toolkit::ImageView::Property::IMAGE, mVisual ); - mVisual.SetSize( mSizeSet ); + // This transform fills the control + // Should provide a transform that handles aspect ratio according to image size + Property::Map transformMap; + SetDefaultTransformMap( transformMap ); + mVisual.SetTransformAndSize( transformMap, mSizeSet ); RelayoutRequest(); } @@ -231,28 +249,6 @@ float ImageView::GetWidthForHeight( float height ) // Private methods // -void ImageView::OnStageConnection( int depth ) -{ - Control::OnStageConnection( depth ); - - if( mVisual ) - { - CustomActor self = Self(); - mVisual.SetOnStage( self ); - } -} - -void ImageView::OnStageDisconnection() -{ - if( mVisual ) - { - CustomActor self = Self(); - mVisual.SetOffStage( self ); - } - - Control::OnStageDisconnection(); -} - void ImageView::OnSizeSet( const Vector3& targetSize ) { Control::OnSizeSet( targetSize ); @@ -261,7 +257,12 @@ void ImageView::OnSizeSet( const Vector3& targetSize ) if( mVisual ) { Vector2 size( targetSize ); - mVisual.SetSize( size ); + + // This transform fills the control + // Should provide a transform that handles aspect ratio according to image size + Property::Map transformMap; + SetDefaultTransformMap( transformMap ); + mVisual.SetTransformAndSize( transformMap, size ); } } @@ -300,7 +301,7 @@ void ImageView::SetProperty( BaseObject* object, Property::Index index, const Pr // if its not a string then get a Property::Map from the property if possible. else if( value.Get( map ) ) { - Property::Value* shaderValue = map.Find( Toolkit::Visual::Property::SHADER, CUSTOM_SHADER ); + Property::Value* shaderValue = map.Find( Toolkit::VisualProperty::SHADER, CUSTOM_SHADER ); // set image only if property map contains image information other than custom shader if( map.Count() > 1u || !shaderValue ) {