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=2a57d4d955de4a08be8e92bb2f6278fa4a2f2c17;hp=b9b62d31150c51824cd0c78a13172171c9eb03d1;hb=3d655cb57a51fee5d3a887aa36f4c6b8b77c2f7d;hpb=5e937a6322849b76d49d5b3f41cb5d91c94acd3e diff --git a/dali-toolkit/internal/text/decorator/text-decorator.cpp b/dali-toolkit/internal/text/decorator/text-decorator.cpp index b9b62d3..2a57d4d 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. @@ -22,13 +22,13 @@ #include #include #include -#include -#include +#include +#include #include -#include #include #include #include +#include // INTERNAL INCLUDES #include @@ -296,9 +296,9 @@ struct Decorator::Impl : public ConnectionTracker ( cursor.position.y > -Math::MACHINE_EPSILON_1000 ) ); if( mPrimaryCursorVisible ) { - mPrimaryCursor.SetPosition( cursor.position.x, - cursor.position.y ); - mPrimaryCursor.SetSize( Size( mCursorWidth, cursor.cursorHeight ) ); + mPrimaryCursor.SetProperty( Actor::Property::POSITION, Vector2( cursor.position.x, + cursor.position.y ) ); + mPrimaryCursor.SetProperty( Actor::Property::SIZE, Size( mCursorWidth, cursor.cursorHeight ) ); } mPrimaryCursor.SetProperty( Actor::Property::VISIBLE, mPrimaryCursorVisible && mCursorBlinkStatus ); } @@ -311,9 +311,9 @@ struct Decorator::Impl : public ConnectionTracker ( cursor.position.y > -Math::MACHINE_EPSILON_1000 ) ); if( mSecondaryCursorVisible ) { - mSecondaryCursor.SetPosition( cursor.position.x, - cursor.position.y ); - mSecondaryCursor.SetSize( Size( mCursorWidth, cursor.cursorHeight ) ); + mSecondaryCursor.SetProperty( Actor::Property::POSITION, Vector2( cursor.position.x, + cursor.position.y ) ); + mSecondaryCursor.SetProperty( Actor::Property::SIZE, Size( mCursorWidth, cursor.cursorHeight ) ); } mSecondaryCursor.SetProperty( Actor::Property::VISIBLE, mSecondaryCursorVisible && mCursorBlinkStatus ); } @@ -651,7 +651,7 @@ struct Decorator::Impl : public ConnectionTracker mCopyPastePopup.position.x = floorf( mCopyPastePopup.position.x ); mCopyPastePopup.position.y = floorf( mCopyPastePopup.position.y ); - mCopyPastePopup.actor.SetPosition( mCopyPastePopup.position ); + mCopyPastePopup.actor.SetProperty( Actor::Property::POSITION, mCopyPastePopup.position ); mPopupSetNewPosition = false; } @@ -767,7 +767,7 @@ struct Decorator::Impl : public ConnectionTracker { if( !mActiveLayer ) { - mActiveLayer = Layer::New(); + mActiveLayer = Actor::New(); #ifdef DECORATOR_DEBUG mActiveLayer.SetProperty( Actor::Property::NAME, "ActiveLayerActor" ); #endif @@ -786,7 +786,7 @@ struct Decorator::Impl : public ConnectionTracker { if( handle.markerActor ) { - handle.markerActor.SetSize( 0, handle.lineHeight ); + handle.markerActor.SetProperty( Actor::Property::SIZE, Vector2( 0, handle.lineHeight ) ); } } @@ -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 ); @@ -823,11 +823,11 @@ struct Decorator::Impl : public ConnectionTracker grabHandle.grabArea.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); grabHandle.grabArea.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER ); grabHandle.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS ); - grabHandle.grabArea.SetSizeModeFactor( DEFAULT_GRAB_HANDLE_RELATIVE_SIZE ); + grabHandle.grabArea.SetProperty( Actor::Property::SIZE_MODE_FACTOR, DEFAULT_GRAB_HANDLE_RELATIVE_SIZE ); grabHandle.actor.Add( grabHandle.grabArea ); grabHandle.actor.SetProperty( Actor::Property::COLOR, mHandleColor ); - grabHandle.grabArea.TouchSignal().Connect( this, &Decorator::Impl::OnGrabHandleTouched ); + grabHandle.grabArea.TouchedSignal().Connect( this, &Decorator::Impl::OnGrabHandleTouched ); // The grab handle's actor is attached to the tap and long press detectors in order to consume these events. // Note that no callbacks are connected to any signal emitted by the tap and long press detectors. @@ -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 @@ -893,9 +893,9 @@ struct Decorator::Impl : public ConnectionTracker primary.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS ); primary.grabArea.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); primary.grabArea.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER ); - primary.grabArea.SetSizeModeFactor( DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE ); + primary.grabArea.SetProperty( Actor::Property::SIZE_MODE_FACTOR, DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE ); - primary.grabArea.TouchSignal().Connect( this, &Decorator::Impl::OnHandleOneTouched ); + primary.grabArea.TouchedSignal().Connect( this, &Decorator::Impl::OnHandleOneTouched ); // The handle's actor is attached to the tap and long press detectors in order to consume these events. // Note that no callbacks are connected to any signal emitted by the tap and long press detectors. @@ -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 @@ -937,9 +937,9 @@ struct Decorator::Impl : public ConnectionTracker secondary.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS ); secondary.grabArea.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER ); secondary.grabArea.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER ); - secondary.grabArea.SetSizeModeFactor( DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE ); + secondary.grabArea.SetProperty( Actor::Property::SIZE_MODE_FACTOR, DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE ); - secondary.grabArea.TouchSignal().Connect( this, &Decorator::Impl::OnHandleTwoTouched ); + secondary.grabArea.TouchedSignal().Connect( this, &Decorator::Impl::OnHandleTwoTouched ); // The handle's actor is attached to the tap and long press detectors in order to consume these events. // Note that no callbacks are connected to any signal emitted by the tap and long press detectors. @@ -1003,8 +1003,8 @@ struct Decorator::Impl : public ConnectionTracker if( grabHandle.actor ) { - grabHandle.actor.SetPosition( grabHandle.position.x + floor( 0.5f * mCursorWidth ) + ( mSmoothHandlePanEnabled ? grabHandle.grabDisplacementX : 0.f ), - yLocalPosition + ( mSmoothHandlePanEnabled ? grabHandle.grabDisplacementY : 0.f ) ); + grabHandle.actor.SetProperty( Actor::Property::POSITION, Vector2( grabHandle.position.x + floor( 0.5f * mCursorWidth ) + ( mSmoothHandlePanEnabled ? grabHandle.grabDisplacementX : 0.f ), + yLocalPosition + ( mSmoothHandlePanEnabled ? grabHandle.grabDisplacementY : 0.f ) ) ); } } @@ -1096,8 +1096,8 @@ struct Decorator::Impl : public ConnectionTracker if( handle.actor ) { - handle.actor.SetPosition( handle.position.x + ( mSmoothHandlePanEnabled ? handle.grabDisplacementX : 0.f ), - yLocalPosition + ( mSmoothHandlePanEnabled ? handle.grabDisplacementY : 0.f ) ); + handle.actor.SetProperty( Actor::Property::POSITION, Vector2( handle.position.x + ( mSmoothHandlePanEnabled ? handle.grabDisplacementX : 0.f ), + yLocalPosition + ( mSmoothHandlePanEnabled ? handle.grabDisplacementY : 0.f ) ) ); } } @@ -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] ); } } @@ -1138,7 +1138,7 @@ struct Decorator::Impl : public ConnectionTracker // Whether to flip the handle vertically. if( handle.actor ) { - handle.actor.SetOrientation( handle.verticallyFlipped ? ANGLE_180 : ANGLE_0, Vector3::XAXIS ); + handle.actor.SetProperty( Actor::Property::ORIENTATION, Quaternion( handle.verticallyFlipped ? ANGLE_180 : ANGLE_0, Vector3::XAXIS ) ); } } @@ -1152,7 +1152,7 @@ struct Decorator::Impl : public ConnectionTracker mHighlightActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); mHighlightActor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); mHighlightActor.SetProperty( Actor::Property::COLOR, mHighlightColor ); - mHighlightActor.SetColorMode( USE_OWN_COLOR ); + mHighlightActor.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_COLOR ); } // Add the highlight box telling the controller it needs clipping. @@ -1164,14 +1164,14 @@ struct Decorator::Impl : public ConnectionTracker if ( mHighlightActor ) { // Sets the position of the highlight actor inside the decorator. - mHighlightActor.SetPosition( mHighlightPosition.x + mHighlightOutlineOffset, - mHighlightPosition.y + mHighlightOutlineOffset ); + mHighlightActor.SetProperty( Actor::Property::POSITION, Vector2( mHighlightPosition.x + mHighlightOutlineOffset, + mHighlightPosition.y + mHighlightOutlineOffset ) ); const unsigned int numberOfQuads = mHighlightQuadList.Count(); if( 0u != numberOfQuads ) { // Set the size of the highlighted text to the actor. - mHighlightActor.SetSize( mHighlightSize ); + mHighlightActor.SetProperty( Actor::Property::SIZE, mHighlightSize ); // Used to translate the vertices given in decorator's coords to the mHighlightActor's local coords. const float offsetX = mHighlightPosition.x + 0.5f * mHighlightSize.width; @@ -1229,7 +1229,7 @@ struct Decorator::Impl : public ConnectionTracker if( ! mQuadVertices ) { - mQuadVertices = PropertyBuffer::New( mQuadVertexFormat ); + mQuadVertices = VertexBuffer::New( mQuadVertexFormat ); } mQuadVertices.SetData( &vertices[ 0 ], vertices.Size() ); @@ -1259,7 +1259,8 @@ struct Decorator::Impl : public ConnectionTracker void DoPan( HandleImpl& handle, HandleType type, const PanGesture& gesture ) { - if( Gesture::Started == gesture.state ) + GestureState state = gesture.GetState(); + if( GestureState::STARTED == state ) { handle.grabDisplacementX = handle.grabDisplacementY = 0.f; @@ -1267,15 +1268,16 @@ struct Decorator::Impl : public ConnectionTracker handle.globalPosition.y = handle.position.y; } - handle.grabDisplacementX += gesture.displacement.x; - handle.grabDisplacementY += ( handle.verticallyFlipped ? -gesture.displacement.y : gesture.displacement.y ); + const Vector2& displacement = gesture.GetDisplacement(); + handle.grabDisplacementX += displacement.x; + handle.grabDisplacementY += ( handle.verticallyFlipped ? -displacement.y : displacement.y ); const float x = handle.globalPosition.x + handle.grabDisplacementX; const float y = handle.globalPosition.y + handle.grabDisplacementY + 0.5f * handle.lineHeight; const float yVerticallyFlippedCorrected = y - ( handle.verticallyFlippedOnTouch ? handle.lineHeight : 0.f ); - if( ( Gesture::Started == gesture.state ) || - ( Gesture::Continuing == gesture.state ) ) + if( ( GestureState::STARTED == state ) || + ( GestureState::CONTINUING == state ) ) { Vector2 targetSize; mController.GetTargetSize( targetSize ); @@ -1317,8 +1319,8 @@ struct Decorator::Impl : public ConnectionTracker mIsHandlePanning = true; } - else if( ( Gesture::Finished == gesture.state ) || - ( Gesture::Cancelled == gesture.state ) ) + else if( ( GestureState::FINISHED == state ) || + ( GestureState::CANCELLED == state ) ) { if( mScrollTimer && ( mScrollTimer.IsRunning() || mNotifyEndOfScroll ) ) @@ -1363,7 +1365,7 @@ struct Decorator::Impl : public ConnectionTracker } } - bool OnGrabHandleTouched( Actor actor, const TouchData& touch ) + bool OnGrabHandleTouched( Actor actor, const TouchEvent& touch ) { HandleImpl& grabHandle = mHandle[GRAB_HANDLE]; @@ -1386,11 +1388,10 @@ struct Decorator::Impl : public ConnectionTracker SetHandleImage( GRAB_HANDLE ); } - // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area - return true; + return false; } - bool OnHandleOneTouched( Actor actor, const TouchData& touch ) + bool OnHandleOneTouched( Actor actor, const TouchEvent& touch ) { HandleImpl& primarySelectionHandle = mHandle[LEFT_SELECTION_HANDLE]; @@ -1417,11 +1418,10 @@ struct Decorator::Impl : public ConnectionTracker SetHandleImage( LEFT_SELECTION_HANDLE ); } - // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area - return true; + return false; } - bool OnHandleTwoTouched( Actor actor, const TouchData& touch ) + bool OnHandleTwoTouched( Actor actor, const TouchEvent& touch ) { HandleImpl& secondarySelectionHandle = mHandle[RIGHT_SELECTION_HANDLE]; @@ -1448,8 +1448,7 @@ struct Decorator::Impl : public ConnectionTracker SetHandleImage( RIGHT_SELECTION_HANDLE ); } - // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area - return true; + return false; } void HandleResetPosition( PropertyNotification& source ) @@ -1520,7 +1519,7 @@ struct Decorator::Impl : public ConnectionTracker LessThanCondition( mBoundingBox.y + topHeight ) ); // Notifies the change from false to true and from true to false. - mHandleVerticalLessThanNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mHandleVerticalLessThanNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); // Connects the signals with the callbacks. mHandleVerticalLessThanNotification.NotifySignal().Connect( this, &Decorator::Impl::HandleResetPosition ); @@ -1537,7 +1536,7 @@ struct Decorator::Impl : public ConnectionTracker GreaterThanCondition( mBoundingBox.w - bottomHeight ) ); // Notifies the change from false to true and from true to false. - mHandleVerticalGreaterThanNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mHandleVerticalGreaterThanNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); // Connects the signals with the callbacks. mHandleVerticalGreaterThanNotification.NotifySignal().Connect( this, &Decorator::Impl::HandleResetPosition ); @@ -1557,7 +1556,7 @@ struct Decorator::Impl : public ConnectionTracker LessThanCondition( mBoundingBox.y + topHeight ) ); // Notifies the change from false to true and from true to false. - mHandleVerticalLessThanNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mHandleVerticalLessThanNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); // Connects the signals with the callbacks. mHandleVerticalLessThanNotification.NotifySignal().Connect( this, &Decorator::Impl::HandleResetPosition ); @@ -1575,7 +1574,7 @@ struct Decorator::Impl : public ConnectionTracker GreaterThanCondition( mBoundingBox.w - bottomHeight ) ); // Notifies the change from false to true and from true to false. - mHandleVerticalGreaterThanNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mHandleVerticalGreaterThanNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); // Connects the signals with the callbacks. mHandleVerticalGreaterThanNotification.NotifySignal().Connect( this, &Decorator::Impl::HandleResetPosition ); @@ -1593,7 +1592,7 @@ struct Decorator::Impl : public ConnectionTracker LessThanCondition( mBoundingBox.y + topHeight ) ); // Notifies the change from false to true and from true to false. - mHandleVerticalLessThanNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mHandleVerticalLessThanNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); // Connects the signals with the callbacks. mHandleVerticalLessThanNotification.NotifySignal().Connect( this, &Decorator::Impl::HandleResetPosition ); @@ -1607,7 +1606,7 @@ struct Decorator::Impl : public ConnectionTracker GreaterThanCondition( mBoundingBox.w - bottomHeight ) ); // Notifies the change from false to true and from true to false. - mHandleVerticalGreaterThanNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mHandleVerticalGreaterThanNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); // Connects the signals with the callbacks. mHandleVerticalGreaterThanNotification.NotifySignal().Connect( this, &Decorator::Impl::HandleResetPosition ); @@ -1639,7 +1638,7 @@ struct Decorator::Impl : public ConnectionTracker LessThanCondition( mBoundingBox.x + leftWidth ) ); // Notifies the change from false to true and from true to false. - mHandleHorizontalLessThanNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mHandleHorizontalLessThanNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); // Connects the signals with the callbacks. mHandleHorizontalLessThanNotification.NotifySignal().Connect( this, &Decorator::Impl::HandleResetPosition ); @@ -1652,7 +1651,7 @@ struct Decorator::Impl : public ConnectionTracker GreaterThanCondition( mBoundingBox.z - rightWidth ) ); // Notifies the change from false to true and from true to false. - mHandleHorizontalGreaterThanNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mHandleHorizontalGreaterThanNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); // Connects the signals with the callbacks. mHandleHorizontalGreaterThanNotification.NotifySignal().Connect( this, &Decorator::Impl::HandleResetPosition ); @@ -1711,7 +1710,7 @@ struct Decorator::Impl : public ConnectionTracker const float popupHeight = mCopyPastePopup.actor.GetRelayoutSize( Dimension::HEIGHT ); // Sets the position of the popup below. - mCopyPastePopup.actor.SetY( floorf( CalculateVerticalPopUpPosition( 0.5f * popupHeight, true ) ) ); + mCopyPastePopup.actor.SetProperty( Actor::Property::POSITION_Y, floorf( CalculateVerticalPopUpPosition( 0.5f * popupHeight, true ) ) ); } void PopUpLeavesBottomBoundary( PropertyNotification& source ) @@ -1719,7 +1718,7 @@ struct Decorator::Impl : public ConnectionTracker const float popupHeight = mCopyPastePopup.actor.GetRelayoutSize( Dimension::HEIGHT ); // Sets the position of the popup above. - mCopyPastePopup.actor.SetY( floorf( CalculateVerticalPopUpPosition( 0.5f * popupHeight, false ) ) ); + mCopyPastePopup.actor.SetProperty( Actor::Property::POSITION_Y, floorf( CalculateVerticalPopUpPosition( 0.5f * popupHeight, false ) ) ); } void SetUpPopupPositionNotifications( const Vector3& popupHalfSize ) @@ -1748,19 +1747,21 @@ struct Decorator::Impl : public ConnectionTracker GreaterThanCondition( mBoundingBox.w - popupHalfSize.height ) ); // Notifies the change from false to true and from true to false. - mPopupTopExceedNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); - mPopupBottomExceedNotification.SetNotifyMode( PropertyNotification::NotifyOnChanged ); + mPopupTopExceedNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); + mPopupBottomExceedNotification.SetNotifyMode( PropertyNotification::NOTIFY_ON_CHANGED ); mPopupTopExceedNotification.NotifySignal().Connect( this, &Decorator::Impl::PopUpLeavesTopBoundary ); 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 ) @@ -1880,7 +1881,7 @@ struct Decorator::Impl : public ConnectionTracker Timer mCursorBlinkTimer; ///< Timer to signal cursor to blink Timer mScrollTimer; ///< Timer used to scroll the text when the grab handle is moved close to the edges. - Layer mActiveLayer; ///< Layer for active handles and alike that ensures they are above all else. + Actor mActiveLayer; ///< Actor for active handles and alike that ensures they are above all else. PropertyNotification mHandleVerticalLessThanNotification; ///< Notifies when the 'y' coord of the active layer is less than a given value. PropertyNotification mHandleVerticalGreaterThanNotification; ///< Notifies when the 'y' coord of the active layer is grater than a given value. PropertyNotification mHandleHorizontalLessThanNotification; ///< Notifies when the 'x' coord of the active layer is less than a given value. @@ -1898,13 +1899,13 @@ 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]; HandleImpl mHandle[HANDLE_TYPE_COUNT]; - PropertyBuffer mQuadVertices; + VertexBuffer mQuadVertices; Geometry mQuadGeometry; QuadContainer mHighlightQuadList; ///< Sub-selections that combine to create the complete selection highlight. @@ -2109,11 +2110,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 +2125,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]; }