X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fscrollable%2Fscroll-view%2Fscroll-view.h;h=0e656d4dd31a0fd00a61cdd8c977f541edcf7909;hp=cf579ac6024865af8415bf7c40f15aed56d9e601;hb=e10dee76cbcdf041bc522545c323016c9f62e8f7;hpb=b3aff14cae6b3af637e75171422c16661878ba8e diff --git a/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h b/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h index cf579ac..0e656d4 100644 --- a/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h +++ b/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h @@ -19,7 +19,7 @@ */ // EXTERNAL INCLUDES -#include +#include // INTERNAL INCLUDES #include @@ -34,6 +34,10 @@ namespace Internal DALI_INTERNAL { class ScrollView; } +/** + * @addtogroup dali_toolkit_controls_scroll_view + * @{ + */ /** * @brief How axes/rotation or scale are clamped @@ -46,13 +50,12 @@ enum ClampState }; /** - * @brief A 3 dimensional clamp + * @brief A 2 dimensional clamp */ -struct ClampState3D +struct ClampState2D { ClampState x; ///< The clamp state of the x axis ClampState y; ///< The clamp state of the y axis - ClampState z; ///< The clamp state of the z axis }; /** @@ -132,6 +135,9 @@ public: }; +// Forward declare future extension interface +class RulerExtension; + /** * @brief Abstract class to define scroll axes. * @@ -201,6 +207,13 @@ public: */ virtual unsigned int GetTotalPages() const = 0; + /** + * @brief Gets the extension interface of the Ruler. + * + * @return The extension interface of the Ruler + */ + virtual RulerExtension* GetExtension() { return NULL; } + public: /** @@ -407,19 +420,6 @@ class ScrollView; */ class DALI_IMPORT_API ScrollView : public Scrollable { -public: - - // Default settings - - static const float DEFAULT_SLOW_SNAP_ANIMATION_DURATION; ///< Default Drag-Release animation time. - static const float DEFAULT_FAST_SNAP_ANIMATION_DURATION; ///< Default Drag-Flick animation time. - static const float DEFAULT_SNAP_OVERSHOOT_DURATION; ///< Default Overshoot snapping animation time. - static const float DEFAULT_MAX_OVERSHOOT; ///< Default maximum allowed overshoot - - static const float DEFAULT_AXIS_AUTO_LOCK_GRADIENT; ///< Default Axis-AutoLock gradient threshold. default is 0.36:1 (20 degrees) - static const float DEFAULT_FRICTION_COEFFICIENT; ///< Default Friction Co-efficient. (in stage diagonals per second) - static const float DEFAULT_FLICK_SPEED_COEFFICIENT; ///< Default Flick speed coefficient (multiples input touch velocity) - static const float DEFAULT_MAX_FLICK_SPEED; ///< Default Maximum flick speed. (in stage diagonals per second) public: @@ -428,8 +428,8 @@ public: */ struct ClampEvent { - ClampState3D scale; ///< Clamp information for scale axes - ClampState3D position; ///< Clamp information for position axes + ClampState2D scale; ///< Clamp information for scale axes + ClampState2D position; ///< Clamp information for position axes ClampState rotation; ///< Clamp information for rotation }; @@ -439,7 +439,7 @@ public: struct SnapEvent { SnapType type; ///< Current snap commencing - Vector3 position; ///< Target snap position + Vector2 position; ///< Target snap position float duration; ///< Duration of snap animation. }; @@ -448,6 +448,9 @@ public: */ enum PropertyRange { + PROPERTY_START_INDEX = Toolkit::Scrollable::PROPERTY_END_INDEX + 1, ///< @since DALi 1.1.18 + PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000, ///< Reserve property indices, @since DALi 1.1.18 + ANIMATABLE_PROPERTY_START_INDEX = Toolkit::Scrollable::ANIMATABLE_PROPERTY_END_INDEX + 1, ANIMATABLE_PROPERTY_END_INDEX = ANIMATABLE_PROPERTY_START_INDEX + 1000 ///< Reserve animatable property indices }; @@ -459,27 +462,39 @@ public: { enum { - SCROLL_POSITION = ANIMATABLE_PROPERTY_START_INDEX, ///< Property, name "scroll-position", type Vector3 - SCROLL_PRE_POSITION, ///< Property, name "scroll-pre-position", type Vector3 - OVERSHOOT_X, ///< Property, name "overshoot-x", type float - OVERSHOOT_Y, ///< Property, name "overshoot-y", type float - SCROLL_FINAL, ///< Property, name "scroll-final", type Vector3 - WRAP, ///< Property, name "wrap", type bool - PANNING, ///< Property, name "panning", type bool - SCROLLING, ///< Property, name "scrolling", type bool - SCROLL_DOMAIN_OFFSET, ///< Property, name "scroll-domain-offset" type Vector3 - SCROLL_POSITION_DELTA, ///< Property, name "scroll-position-delta" type Vector3 - START_PAGE_POSITION ///< Property, name "start-page-position" type Vector3 + // Event side properties + WRAP_ENABLED = PROPERTY_START_INDEX, ///< Property, name "wrapEnabled", @see SetWrapMode(), type bool, @since DALi 1.1.18 + PANNING_ENABLED, ///< Property, name "panningEnabled", @see SetScrollSensitive(), type bool, @since DALi 1.1.18 + AXIS_AUTO_LOCK_ENABLED, ///< Property, name "axisAutoLockEnabled", @see SetAxisAutoLock(), type bool, @since DALi 1.1.18 + WHEEL_SCROLL_DISTANCE_STEP, ///< Property, name "wheelScrollDistanceStep", @see SetWheelScrollDistanceStep(), type Vector2, @since DALi 1.1.18 + + SCROLL_POSITION = ANIMATABLE_PROPERTY_START_INDEX, ///< Property, name "scrollPosition", type Vector2 + SCROLL_PRE_POSITION, ///< Property, name "scrollPrePosition", type Vector2 + SCROLL_PRE_POSITION_X, ///< Property, name "scrollPrePositionX", type float + SCROLL_PRE_POSITION_Y, ///< Property, name "scrollPrePositionY", type float + SCROLL_PRE_POSITION_MAX, ///< Property, name "scrollPrePositionMax", type Vector2 + SCROLL_PRE_POSITION_MAX_X, ///< Property, name "scrollPrePositionMaxX", type float + SCROLL_PRE_POSITION_MAX_Y, ///< Property, name "scrollPrePositionMaxY", type float + OVERSHOOT_X, ///< Property, name "overshootX", type float + OVERSHOOT_Y, ///< Property, name "overshootY", type float + SCROLL_FINAL, ///< Property, name "scrollFinal", type Vector2 + SCROLL_FINAL_X, ///< Property, name "scrollFinalX", type float + SCROLL_FINAL_Y, ///< Property, name "scrollFinalY", type float + WRAP, ///< Property, name "wrap", type bool + PANNING, ///< Property, name "panning", type bool + SCROLLING, ///< Property, name "scrolling", type bool + SCROLL_DOMAIN_SIZE, ///< Property, name "scrollDomainSize", type Vector2 + SCROLL_DOMAIN_SIZE_X, ///< Property, name "scrollDomainSizeX", type float + SCROLL_DOMAIN_SIZE_Y, ///< Property, name "scrollDomainSizeY", type float + SCROLL_DOMAIN_OFFSET, ///< Property, name "scrollDomainOffset", type Vector2 + SCROLL_POSITION_DELTA, ///< Property, name "scrollPositionDelta", type Vector2 + START_PAGE_POSITION ///< Property, name "startPagePosition", type Vector3 }; }; - typedef Signal< void ( const SnapEvent& ) > SnapStartedSignalType; ///< SnapStarted signal type + // Typedefs - /** - * @brief Signal emitted when the ScrollView has started to snap or flick (it tells the target - * position, scale, rotation for the snap or flick) - */ - SnapStartedSignalType& SnapStartedSignal(); + typedef Signal< void ( const SnapEvent& ) > SnapStartedSignalType; ///< SnapStarted signal type public: @@ -838,39 +853,31 @@ public: /** * @brief Gets the step of scroll distance in actor coordinates for - * each mouse wheel event received in free panning mode. + * each wheel event received in free panning mode. * * @return The step of scroll distance(pixel) in X and Y axes. */ - Vector2 GetMouseWheelScrollDistanceStep() const; + Vector2 GetWheelScrollDistanceStep() const; /** * @brief Sets the step of scroll distance in actor coordinates for - * each mouse wheel event received in free panning mode. + * each wheel event received in free panning mode. * * @param[in] step The step of scroll distance(pixel) in X and Y axes. * * @note: If snap points are defined in the rulers, it will always * scroll to the next snap point towards the scroll direction while - * receiving the mouse wheel events. + * receiving the wheel events. * */ - void SetMouseWheelScrollDistanceStep(Vector2 step); + void SetWheelScrollDistanceStep(Vector2 step); /** * @brief Retrieves current scroll position. * * @returns The current scroll position. */ - Vector3 GetCurrentScrollPosition() const; - - /** - * @brief Sets the current scroll position, overriding current scroll animations. If panning is currently taking place - * SetScrollPosition will have no effect. Try to ensure panning has stopped before calling this function. - * - * @param[in] position The new scroll position to set. - */ - void SetScrollPosition(const Vector3& position); + Vector2 GetCurrentScrollPosition() const; /** * @brief Retrieves current scroll page based on ScrollView @@ -895,7 +902,7 @@ public: * * @param[in] position The position to scroll to. */ - void ScrollTo(const Vector3 &position); + void ScrollTo(const Vector2& position); /** * @brief Scrolls View to position specified (contents will scroll to this position). @@ -909,7 +916,7 @@ public: * @param[in] position The position to scroll to. * @param[in] duration The duration of the animation in seconds */ - void ScrollTo(const Vector3 &position, float duration); + void ScrollTo(const Vector2& position, float duration); /** * @brief Scrolls View to position specified (contents will scroll to this position) @@ -924,7 +931,7 @@ public: * @param[in] duration The duration of the animation in seconds * @param[in] alpha The alpha function to use */ - void ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha); + void ScrollTo(const Vector2& position, float duration, AlphaFunction alpha); /** * @brief Scrolls View to position specified (contents will scroll to this position). @@ -943,7 +950,7 @@ public: * @param[in] horizontalBias Whether to bias scrolling to left or right. * @param[in] verticalBias Whether to bias scrolling to top or bottom. */ - void ScrollTo(const Vector3 &position, float duration, + void ScrollTo(const Vector2& position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias); /** @@ -964,7 +971,7 @@ public: * @param[in] verticalBias Whether to bias scrolling to top or bottom. * @param[in] alpha Alpha function to use */ - void ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha, + void ScrollTo(const Vector2& position, float duration, AlphaFunction alpha, DirectionBias horizontalBias, DirectionBias verticalBias); /** @@ -1110,6 +1117,21 @@ public: */ void RemoveScrollingDirection( Radian direction ); +public: // Signals + + /** + * @brief Signal emitted when the ScrollView has started to snap or flick (it tells the target + * position, scale, rotation for the snap or flick) + * + * A callback of the following type may be connected: + * @code + * void YourCallbackName(const SnapEvent& event); + * @endcode + * @pre The Object has been initialized. + * @return The signal to connect to. + */ + SnapStartedSignalType& SnapStartedSignal(); + public: // Not intended for application developers /** @@ -1127,6 +1149,9 @@ public: // Not intended for application developers explicit DALI_INTERNAL ScrollView( Dali::Internal::CustomActor* internal ); }; +/** + * @} + */ } // namespace Toolkit } // namespace Dali