/*
- * 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.
#include <dali/integration-api/debug.h>
#include <dali/public-api/actors/layer.h>
#include <dali/public-api/adaptor-framework/timer.h>
-#include <dali/public-api/common/stage.h>
-#include <dali/public-api/events/touch-data.h>
+#include <dali/devel-api/common/stage.h>
+#include <dali/public-api/events/touch-event.h>
#include <dali/public-api/events/pan-gesture.h>
-#include <dali/public-api/images/resource-image.h>
#include <dali/public-api/object/property-notification.h>
#include <dali/public-api/rendering/geometry.h>
#include <dali/public-api/rendering/renderer.h>
+#include <dali/devel-api/adaptor-framework/image-loading.h>
// INTERNAL INCLUDES
#include <dali-toolkit/public-api/controls/image-view/image-view.h>
( 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.SetVisible( mPrimaryCursorVisible && mCursorBlinkStatus );
+ mPrimaryCursor.SetProperty( Actor::Property::VISIBLE, mPrimaryCursorVisible && mCursorBlinkStatus );
}
if( mSecondaryCursor )
{
( 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.SetVisible( mSecondaryCursorVisible && mCursorBlinkStatus );
+ mSecondaryCursor.SetProperty( Actor::Property::VISIBLE, mSecondaryCursorVisible && mCursorBlinkStatus );
}
// Show or hide the grab handle
if( grabHandle.actor )
{
- grabHandle.actor.SetVisible( isVisible );
+ grabHandle.actor.SetProperty( Actor::Property::VISIBLE, isVisible );
}
}
else if( grabHandle.actor )
if( primary.actor )
{
- primary.actor.SetVisible( primaryVisible );
+ primary.actor.SetProperty( Actor::Property::VISIBLE, primaryVisible );
}
if( secondary.actor )
{
- secondary.actor.SetVisible( secondaryVisible );
+ secondary.actor.SetProperty( Actor::Property::VISIBLE, secondaryVisible );
}
}
if( primaryHandle.active || secondaryHandle.active )
{
// The origin of the decorator's coordinate system in world coords.
- const Vector3 originWorldCoords = mActiveLayer.GetCurrentWorldPosition() - mActiveLayer.GetCurrentSize() * ACTIVE_LAYER_ANCHOR_POINT;
+ const Vector3 originWorldCoords = mActiveLayer.GetCurrentProperty< Vector3 >( Actor::Property::WORLD_POSITION ) - mActiveLayer.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ) * ACTIVE_LAYER_ANCHOR_POINT;
if( preferBelow )
{
// Check first the horizontal dimension. If is not within the boundaries, it calculates the offset.
// The origin of the decorator's coordinate system in world coords.
- const Vector3 originWorldCoords = mActiveLayer.GetCurrentWorldPosition() - mActiveLayer.GetCurrentSize() * ACTIVE_LAYER_ANCHOR_POINT;
+ const Vector3 originWorldCoords = mActiveLayer.GetCurrentProperty< Vector3 >( Actor::Property::WORLD_POSITION ) - mActiveLayer.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ) * ACTIVE_LAYER_ANCHOR_POINT;
// The popup's position in world coords.
Vector3 popupPositionWorldCoords = originWorldCoords + mCopyPastePopup.position;
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;
}
{
cursor = Control::New();
cursor.SetBackgroundColor( color );
- cursor.SetParentOrigin( ParentOrigin::TOP_LEFT );
- cursor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+ cursor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
+ cursor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
}
// Add or Remove cursor(s) from parent
{
CreateCursor( mPrimaryCursor, mCursor[PRIMARY_CURSOR].color );
#ifdef DECORATOR_DEBUG
- mPrimaryCursor.SetName( "PrimaryCursorActor" );
+ mPrimaryCursor.SetProperty( Dali::Actor::Property::NAME, "PrimaryCursorActor" );
#endif
}
{
CreateCursor( mSecondaryCursor, mCursor[SECONDARY_CURSOR].color );
#ifdef DECORATOR_DEBUG
- mSecondaryCursor.SetName( "SecondaryCursorActor" );
+ mSecondaryCursor.SetProperty( Dali::Actor::Property::NAME, "SecondaryCursorActor" );
#endif
}
// Cursor blinking
if ( mPrimaryCursor )
{
- mPrimaryCursor.SetVisible( mPrimaryCursorVisible && mCursorBlinkStatus );
+ mPrimaryCursor.SetProperty( Actor::Property::VISIBLE, mPrimaryCursorVisible && mCursorBlinkStatus );
}
if ( mSecondaryCursor )
{
- mSecondaryCursor.SetVisible( mSecondaryCursorVisible && mCursorBlinkStatus );
+ mSecondaryCursor.SetProperty( Actor::Property::VISIBLE, mSecondaryCursorVisible && mCursorBlinkStatus );
}
mCursorBlinkStatus = !mCursorBlinkStatus;
{
if( !mActiveLayer )
{
- mActiveLayer = Layer::New();
+ mActiveLayer = Actor::New();
#ifdef DECORATOR_DEBUG
- mActiveLayer.SetName ( "ActiveLayerActor" );
+ mActiveLayer.SetProperty( Actor::Property::NAME, "ActiveLayerActor" );
#endif
- mActiveLayer.SetParentOrigin( ParentOrigin::CENTER );
+ mActiveLayer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
mActiveLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
// Add the active layer telling the controller it doesn't need clipping.
{
if( handle.markerActor )
{
- handle.markerActor.SetSize( 0, handle.lineHeight );
+ handle.markerActor.SetProperty( Actor::Property::SIZE, Vector2( 0, handle.lineHeight ) );
}
}
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 );
- grabHandle.actor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
+ grabHandle.actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
// Area that Grab handle responds to, larger than actual handle so easier to move
#ifdef DECORATOR_DEBUG
- grabHandle.actor.SetName( "GrabHandleActor" );
+ grabHandle.actor.SetProperty( Dali::Actor::Property::NAME, "GrabHandleActor" );
if ( Dali::Internal::gLogFilter->IsEnabledFor( Debug::Verbose ) )
{
grabHandle.grabArea = Control::New();
Toolkit::Control control = Toolkit::Control::DownCast( grabHandle.grabArea );
control.SetBackgroundColor( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) );
- grabHandle.grabArea.SetName( "GrabArea" );
+ grabHandle.grabArea.SetProperty( Dali::Actor::Property::NAME, "GrabArea" );
}
else
{
grabHandle.grabArea = Actor::New();
- grabHandle.grabArea.SetName( "GrabArea" );
+ grabHandle.grabArea.SetProperty( Dali::Actor::Property::NAME, "GrabArea" );
}
#else
grabHandle.grabArea = Actor::New();
#endif
- grabHandle.grabArea.SetParentOrigin( ParentOrigin::TOP_CENTER );
- grabHandle.grabArea.SetAnchorPoint( AnchorPoint::TOP_CENTER );
+ 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.SetColor( mHandleColor );
+ 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.
}
}
- 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.SetColor( mHandleColor );
+ handle.markerActor.SetProperty( Actor::Property::COLOR, mHandleColor );
handle.actor.Add( handle.markerActor );
handle.markerActor.SetResizePolicy ( ResizePolicy::FIXED, Dimension::HEIGHT );
if( LEFT_SELECTION_HANDLE == handleType )
{
- handle.markerActor.SetAnchorPoint( AnchorPoint::BOTTOM_RIGHT );
- handle.markerActor.SetParentOrigin( ParentOrigin::TOP_RIGHT );
+ handle.markerActor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_RIGHT );
+ handle.markerActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_RIGHT );
}
else if( RIGHT_SELECTION_HANDLE == handleType )
{
- handle.markerActor.SetAnchorPoint( AnchorPoint::BOTTOM_LEFT );
- handle.markerActor.SetParentOrigin( ParentOrigin::TOP_LEFT );
+ handle.markerActor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_LEFT );
+ handle.markerActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
}
}
}
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
- primary.actor.SetName("SelectionHandleOne");
+ primary.actor.SetProperty( Dali::Actor::Property::NAME,"SelectionHandleOne");
#endif
- primary.actor.SetAnchorPoint( AnchorPoint::TOP_RIGHT ); // Change to BOTTOM_RIGHT if Look'n'Feel requires handle above text.
+ primary.actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_RIGHT ); // Change to BOTTOM_RIGHT if Look'n'Feel requires handle above text.
GetImpl( primary.actor ).SetDepthIndex( DepthIndex::DECORATION );
- primary.actor.SetColor( mHandleColor );
+ primary.actor.SetProperty( Actor::Property::COLOR, mHandleColor );
primary.grabArea = Actor::New(); // Area that Grab handle responds to, larger than actual handle so easier to move
#ifdef DECORATOR_DEBUG
- primary.grabArea.SetName("SelectionHandleOneGrabArea");
+ primary.grabArea.SetProperty( Dali::Actor::Property::NAME,"SelectionHandleOneGrabArea");
#endif
primary.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
- primary.grabArea.SetParentOrigin( ParentOrigin::TOP_CENTER );
- primary.grabArea.SetAnchorPoint( AnchorPoint::TOP_CENTER );
- primary.grabArea.SetSizeModeFactor( DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE );
+ primary.grabArea.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER );
+ primary.grabArea.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
+ 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.
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
- secondary.actor.SetName("SelectionHandleTwo");
+ secondary.actor.SetProperty( Dali::Actor::Property::NAME,"SelectionHandleTwo");
#endif
- secondary.actor.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // Change to BOTTOM_LEFT if Look'n'Feel requires handle above text.
+ secondary.actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); // Change to BOTTOM_LEFT if Look'n'Feel requires handle above text.
GetImpl( secondary.actor ).SetDepthIndex( DepthIndex::DECORATION );
- secondary.actor.SetColor( mHandleColor );
+ secondary.actor.SetProperty( Actor::Property::COLOR, mHandleColor );
secondary.grabArea = Actor::New(); // Area that Grab handle responds to, larger than actual handle so easier to move
#ifdef DECORATOR_DEBUG
- secondary.grabArea.SetName("SelectionHandleTwoGrabArea");
+ secondary.grabArea.SetProperty( Dali::Actor::Property::NAME,"SelectionHandleTwoGrabArea");
#endif
secondary.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
- secondary.grabArea.SetParentOrigin( ParentOrigin::TOP_CENTER );
- secondary.grabArea.SetAnchorPoint( AnchorPoint::TOP_CENTER );
- secondary.grabArea.SetSizeModeFactor( DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE );
+ secondary.grabArea.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER );
+ secondary.grabArea.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
+ 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.
void CalculateHandleWorldCoordinates( HandleImpl& handle, Vector2& position )
{
// Gets the world position of the active layer. The active layer is where the handles are added.
- const Vector3 parentWorldPosition = mActiveLayer.GetCurrentWorldPosition();
+ const Vector3 parentWorldPosition = mActiveLayer.GetCurrentProperty< Vector3 >( Actor::Property::WORLD_POSITION );
// The grab handle position in world coords.
// The active layer's world position is the center of the active layer. The origin of the
HandleImpl& grabHandle = mHandle[GRAB_HANDLE];
// Transforms the handle position into world coordinates.
- // @note This is not the same value as grabHandle.actor.GetCurrentWorldPosition()
+ // @note This is not the same value as grabHandle.actor.GetCurrentProperty< Vector3 >( Actor::Property::WORLD_POSITION )
// as it's transforming the handle's position set by the text-controller and not
- // the final position set to the actor. Another difference is the GetCurrentWorldPosition()
+ // the final position set to the actor. Another difference is the.GetCurrentProperty< Vector3 >( Actor::Property::WORLD_POSITION )
// retrieves the position of the center of the actor but the handle's position set
// by the text controller is not the center of the actor.
Vector2 grabHandleWorldPosition;
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 ) ) );
}
}
HandleImpl& handle = mHandle[type];
// Transforms the handle position into world coordinates.
- // @note This is not the same value as handle.actor.GetCurrentWorldPosition()
+ // @note This is not the same value as handle.actor.GetCurrentProperty< Vector3 >( Actor::Property::WORLD_POSITION )
// as it's transforming the handle's position set by the text-controller and not
- // the final position set to the actor. Another difference is the GetCurrentWorldPosition()
+ // the final position set to the actor. Another difference is the.GetCurrentProperty< Vector3 >( Actor::Property::WORLD_POSITION )
// retrieves the position of the center of the actor but the handle's position set
// by the text controller is not the center of the actor.
Vector2 handleWorldPosition;
if( handle.actor && !handle.horizontallyFlipped )
{
// Change the anchor point to flip the image.
- handle.actor.SetAnchorPoint( isPrimaryHandle ? AnchorPoint::TOP_LEFT : AnchorPoint::TOP_RIGHT );
+ handle.actor.SetProperty( Actor::Property::ANCHOR_POINT, isPrimaryHandle ? AnchorPoint::TOP_LEFT : AnchorPoint::TOP_RIGHT );
handle.horizontallyFlipped = true;
}
if( handle.actor && handle.horizontallyFlipped )
{
// Reset the anchor point.
- handle.actor.SetAnchorPoint( isPrimaryHandle ? AnchorPoint::TOP_RIGHT : AnchorPoint::TOP_LEFT );
+ handle.actor.SetProperty( Actor::Property::ANCHOR_POINT, isPrimaryHandle ? AnchorPoint::TOP_RIGHT : AnchorPoint::TOP_LEFT );
handle.horizontallyFlipped = false;
}
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 ) ) );
}
}
// 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] );
}
{
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] );
}
}
// 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 ) );
}
}
{
mHighlightActor = Actor::New();
- mHighlightActor.SetName( "HighlightActor" );
- mHighlightActor.SetParentOrigin( ParentOrigin::TOP_LEFT );
- mHighlightActor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
- mHighlightActor.SetColor( mHighlightColor );
- mHighlightActor.SetColorMode( USE_OWN_COLOR );
+ mHighlightActor.SetProperty( Dali::Actor::Property::NAME, "HighlightActor" );
+ 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.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_COLOR );
}
// Add the highlight box telling the controller it needs clipping.
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;
if( ! mQuadVertices )
{
- mQuadVertices = PropertyBuffer::New( mQuadVertexFormat );
+ mQuadVertices = VertexBuffer::New( mQuadVertexFormat );
}
mQuadVertices.SetData( &vertices[ 0 ], vertices.Size() );
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;
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 );
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 ) )
}
}
- bool OnGrabHandleTouched( Actor actor, const TouchData& touch )
+ bool OnGrabHandleTouched( Actor actor, const TouchEvent& touch )
{
HandleImpl& grabHandle = mHandle[GRAB_HANDLE];
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];
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];
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 )
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 )
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 )
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 )
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.
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.
// 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] );
}
}
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];
}
{
mImpl->mCopyPastePopup.actor = TextSelectionPopup::New( &mImpl->mTextSelectionPopupCallbackInterface );
#ifdef DECORATOR_DEBUG
- mImpl->mCopyPastePopup.actor.SetName("mCopyPastePopup");
+ mImpl->mCopyPastePopup.actor.SetProperty( Dali::Actor::Property::NAME,"mCopyPastePopup");
#endif
- mImpl->mCopyPastePopup.actor.SetAnchorPoint( AnchorPoint::CENTER );
+ mImpl->mCopyPastePopup.actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
mImpl->mCopyPastePopup.actor.OnRelayoutSignal().Connect( mImpl, &Decorator::Impl::SetPopupPosition ); // Position popup after size negotiation
}