X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fdecorator%2Ftext-decorator.cpp;h=a495768dfaca3b5089eb21e42def5137d74f8131;hp=65a5f68f029ee262c8431d442ed1c16fd82ecbaf;hb=6261b85db16d8e9f842c9dc152046747eec67eaa;hpb=ad110f27c01af7e617df158891eef5cf60bf22e6 diff --git a/dali-toolkit/internal/text/decorator/text-decorator.cpp b/dali-toolkit/internal/text/decorator/text-decorator.cpp index 65a5f68..a495768 100644 --- a/dali-toolkit/internal/text/decorator/text-decorator.cpp +++ b/dali-toolkit/internal/text/decorator/text-decorator.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,10 +25,10 @@ #include #include #include -#include #include #include #include +#include // INTERNAL INCLUDES #include @@ -795,7 +795,7 @@ struct Decorator::Impl : public ConnectionTracker HandleImpl& grabHandle = mHandle[GRAB_HANDLE]; if( !grabHandle.actor ) { - if( mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_RELEASED] ) + if( mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_RELEASED].size() ) { grabHandle.actor = ImageView::New( mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_RELEASED] ); GetImpl( grabHandle.actor).SetDepthIndex( DepthIndex::DECORATION ); @@ -848,9 +848,9 @@ struct Decorator::Impl : public ConnectionTracker } } - void CreateHandleMarker( HandleImpl& handle, Image& image, HandleType handleType ) + void CreateHandleMarker( HandleImpl& handle, const std::string& image, HandleType handleType ) { - if( image ) + if( image.size() ) { handle.markerActor = ImageView::New( image ); handle.markerActor.SetProperty( Actor::Property::COLOR, mHandleColor ); @@ -876,7 +876,7 @@ struct Decorator::Impl : public ConnectionTracker HandleImpl& primary = mHandle[ LEFT_SELECTION_HANDLE ]; if( !primary.actor ) { - if( mHandleImages[LEFT_SELECTION_HANDLE][HANDLE_IMAGE_RELEASED] ) + if( mHandleImages[LEFT_SELECTION_HANDLE][HANDLE_IMAGE_RELEASED].size() ) { primary.actor = ImageView::New( mHandleImages[LEFT_SELECTION_HANDLE][HANDLE_IMAGE_RELEASED] ); #ifdef DECORATOR_DEBUG @@ -920,7 +920,7 @@ struct Decorator::Impl : public ConnectionTracker HandleImpl& secondary = mHandle[ RIGHT_SELECTION_HANDLE ]; if( !secondary.actor ) { - if( mHandleImages[RIGHT_SELECTION_HANDLE][HANDLE_IMAGE_RELEASED] ) + if( mHandleImages[RIGHT_SELECTION_HANDLE][HANDLE_IMAGE_RELEASED].size() ) { secondary.actor = ImageView::New( mHandleImages[RIGHT_SELECTION_HANDLE][HANDLE_IMAGE_RELEASED] ); #ifdef DECORATOR_DEBUG @@ -1121,7 +1121,7 @@ struct Decorator::Impl : public ConnectionTracker // Chooses between the released or pressed image. It checks whether the pressed image exists. if( handle.actor ) { - const HandleImageType imageType = ( handle.pressed ? ( mHandleImages[type][HANDLE_IMAGE_PRESSED] ? HANDLE_IMAGE_PRESSED : HANDLE_IMAGE_RELEASED ) : HANDLE_IMAGE_RELEASED ); + const HandleImageType imageType = ( handle.pressed ? ( mHandleImages[type][HANDLE_IMAGE_PRESSED].size() ? HANDLE_IMAGE_PRESSED : HANDLE_IMAGE_RELEASED ) : HANDLE_IMAGE_RELEASED ); handle.actor.SetImage( mHandleImages[type][imageType] ); } @@ -1130,7 +1130,7 @@ struct Decorator::Impl : public ConnectionTracker { if( handle.markerActor ) { - const HandleImageType markerImageType = ( handle.pressed ? ( mHandleImages[markerType][HANDLE_IMAGE_PRESSED] ? HANDLE_IMAGE_PRESSED : HANDLE_IMAGE_RELEASED ) : HANDLE_IMAGE_RELEASED ); + const HandleImageType markerImageType = ( handle.pressed ? ( mHandleImages[markerType][HANDLE_IMAGE_PRESSED].size() ? HANDLE_IMAGE_PRESSED : HANDLE_IMAGE_RELEASED ) : HANDLE_IMAGE_RELEASED ); handle.markerActor.SetImage( mHandleImages[markerType][markerImageType] ); } } @@ -1755,12 +1755,14 @@ struct Decorator::Impl : public ConnectionTracker mPopupBottomExceedNotification.NotifySignal().Connect( this, &Decorator::Impl::PopUpLeavesBottomBoundary ); } - void SetHandleImage( HandleType handleType, HandleImageType handleImageType, Dali::Image image ) + void SetHandleImage( HandleType handleType, HandleImageType handleImageType, const std::string& imageFileName ) { + ImageDimensions dimensions = Dali::GetOriginalImageSize( imageFileName ); + HandleImpl& handle = mHandle[handleType]; - handle.size = Size( image.GetWidth(), image.GetHeight() ); + handle.size = Size( dimensions.GetWidth(), dimensions.GetHeight() ); - mHandleImages[handleType][handleImageType] = image; + mHandleImages[handleType][handleImageType] = imageFileName; } void SetScrollThreshold( float threshold ) @@ -1898,7 +1900,7 @@ struct Decorator::Impl : public ConnectionTracker TextSelectionPopup::Buttons mEnabledPopupButtons; /// Bit mask of currently enabled Popup buttons TextSelectionPopupCallbackInterface& mTextSelectionPopupCallbackInterface; - Image mHandleImages[HANDLE_TYPE_COUNT][HANDLE_IMAGE_TYPE_COUNT]; + std::string mHandleImages[HANDLE_TYPE_COUNT][HANDLE_IMAGE_TYPE_COUNT]; Vector4 mHandleColor; CursorImpl mCursor[CURSOR_COUNT]; @@ -2109,11 +2111,11 @@ void Decorator::SetHandleActive( HandleType handleType, bool active ) // The problem is the handle actor does not receive the touch event with the Interrupt // state when the power button is pressed and the application goes to background. mImpl->mHandle[handleType].pressed = false; - Image imageReleased = mImpl->mHandleImages[handleType][HANDLE_IMAGE_RELEASED]; + const bool imageReleased = mImpl->mHandleImages[handleType][HANDLE_IMAGE_RELEASED].size(); ImageView imageView = mImpl->mHandle[handleType].actor; if( imageReleased && imageView ) { - imageView.SetImage( imageReleased ); + imageView.SetImage( mImpl->mHandleImages[handleType][HANDLE_IMAGE_RELEASED] ); } } @@ -2124,12 +2126,12 @@ bool Decorator::IsHandleActive( HandleType handleType ) const return mImpl->mHandle[handleType].active ; } -void Decorator::SetHandleImage( HandleType handleType, HandleImageType handleImageType, Dali::Image image ) +void Decorator::SetHandleImage( HandleType handleType, HandleImageType handleImageType, const std::string& imageFileName ) { - mImpl->SetHandleImage( handleType, handleImageType, image ); + mImpl->SetHandleImage( handleType, handleImageType, imageFileName ); } -Dali::Image Decorator::GetHandleImage( HandleType handleType, HandleImageType handleImageType ) const +const std::string& Decorator::GetHandleImage( HandleType handleType, HandleImageType handleImageType ) const { return mImpl->mHandleImages[handleType][handleImageType]; }