1 #ifndef __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H__
2 #define __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H__
5 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
23 #include <dali/devel-api/common/map-wrapper.h>
24 #include <dali/devel-api/adaptor-framework/accessibility-action-handler.h>
25 #include <dali/devel-api/adaptor-framework/accessibility-gesture-handler.h>
26 #include <dali/public-api/object/base-object.h>
27 #include <dali/integration-api/events/pan-gesture-event.h>
30 #include <dali-toolkit/public-api/accessibility-manager/accessibility-manager.h>
31 #include <dali/public-api/adaptor-framework/tts-player.h>
42 class AccessibilityManager;
45 * @copydoc Toolkit::AccessibilityManager
47 class AccessibilityManager : public Dali::BaseObject, Dali::AccessibilityActionHandler, Dali::AccessibilityGestureHandler, public Dali::ConnectionTracker
51 typedef Dali::Toolkit::AccessibilityManager::AccessibilityActionSignalType AccessibilityActionSignalType;
52 typedef Dali::Toolkit::AccessibilityManager::AccessibilityActionScrollSignalType AccessibilityActionScrollSignalType;
54 struct ActorAdditionalInfo
61 unsigned int mFocusOrder; ///< The focus order of the actor. It is undefined by default.
63 std::string mAccessibilityAttributes[Toolkit::AccessibilityManager::ACCESSIBILITY_ATTRIBUTE_NUM]; ///< The array of attribute texts
66 typedef std::pair<unsigned int, unsigned int> FocusIDPair;
67 typedef std::map<unsigned int, unsigned int> FocusIDContainer;
68 typedef FocusIDContainer::iterator FocusIDIter;
69 typedef FocusIDContainer::const_iterator FocusIDConstIter;
71 typedef std::pair<unsigned int, ActorAdditionalInfo> IDAdditionalInfoPair;
72 typedef std::map<unsigned int, ActorAdditionalInfo> IDAdditionalInfoContainer;
73 typedef IDAdditionalInfoContainer::iterator IDAdditionalInfoIter;
74 typedef IDAdditionalInfoContainer::const_iterator IDAdditionalInfoConstIter;
77 * Construct a new AccessibilityManager.
79 AccessibilityManager();
82 * Initialise the AccessibilityManager
87 * @copydoc Toolkit::AccessibilityManager::SetAccessibilityAttribute
89 void SetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityManager::AccessibilityAttribute type, const std::string& text);
92 * @copydoc Toolkit::AccessibilityManager::GetAccessibilityAttribute
94 std::string GetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityManager::AccessibilityAttribute type) const;
97 * @copydoc Toolkit::AccessibilityManager::SetFocusOrder
99 void SetFocusOrder(Actor actor, const unsigned int order);
102 * @copydoc Toolkit::AccessibilityManager::GetFocusOrder
104 unsigned int GetFocusOrder(Actor actor) const;
107 * @copydoc Toolkit::AccessibilityManager::GenerateNewFocusOrder
109 unsigned int GenerateNewFocusOrder() const;
112 * @copydoc Toolkit::AccessibilityManager::GetActorByFocusOrder
114 Actor GetActorByFocusOrder(const unsigned int order);
117 * @copydoc Toolkit::AccessibilityManager::SetCurrentFocusActor
119 bool SetCurrentFocusActor(Actor actor);
122 * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusActor
124 Actor GetCurrentFocusActor();
127 * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusGroup
129 Actor GetCurrentFocusGroup();
132 * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusOrder
134 unsigned int GetCurrentFocusOrder();
137 * @copydoc Toolkit::AccessibilityManager::MoveFocusForward
139 bool MoveFocusForward();
142 * @copydoc Toolkit::AccessibilityManager::MoveFocusBackward
144 bool MoveFocusBackward();
147 * @copydoc Toolkit::AccessibilityManager::ClearFocus
152 * @copydoc Toolkit::AccessibilityManager::Reset
157 * @copydoc Toolkit::AccessibilityManager::SetFocusGroup
159 void SetFocusGroup(Actor actor, bool isFocusGroup);
162 * @copydoc Toolkit::AccessibilityManager::IsFocusGroup
164 bool IsFocusGroup(Actor actor) const;
167 * @copydoc Toolkit::AccessibilityManager::SetGroupMode
169 void SetGroupMode(bool enabled);
172 * @copydoc Toolkit::AccessibilityManager::GetGroupMode
174 bool GetGroupMode() const;
177 * @copydoc Toolkit::AccessibilityManager::SetWrapMode
179 void SetWrapMode(bool wrapped);
182 * @copydoc Toolkit::AccessibilityManager::GetWrapMode
184 bool GetWrapMode() const;
187 * @copydoc Toolkit::AccessibilityManager::SetFocusIndicatorActor
189 void SetFocusIndicatorActor(Actor indicator);
192 * @copydoc Toolkit::AccessibilityManager::GetFocusIndicatorActor
194 Actor GetFocusIndicatorActor();
197 * @copydoc Toolkit::AccessibilityManager::GetFocusGroup
199 Actor GetFocusGroup(Actor actor);
202 * @copydoc Toolkit::AccessibilityManager::GetReadPosition
204 Vector2 GetReadPosition() const;
209 * @copydoc Toolkit::AccessibilityManager::FocusChangedSignal()
211 Toolkit::AccessibilityManager::FocusChangedSignalType& FocusChangedSignal();
214 * @copydoc Toolkit::AccessibilityManager::FocusOvershotSignal()
216 Toolkit::AccessibilityManager::FocusOvershotSignalType& FocusOvershotSignal();
219 * @copydoc Toolkit::AccessibilityManager::FocusedActorActivatedSignal()
221 Toolkit::AccessibilityManager::FocusedActorActivatedSignalType& FocusedActorActivatedSignal();
224 * Connects a callback function with the object's signals.
225 * @param[in] object The object providing the signal.
226 * @param[in] tracker Used to disconnect the signal.
227 * @param[in] signalName The signal to connect to.
228 * @param[in] functor A newly allocated FunctorDelegate.
229 * @return True if the signal was connected.
230 * @post If a signal was connected, ownership of functor was passed to CallbackBase. Otherwise the caller is responsible for deleting the unused functor.
232 static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor );
237 * @copydoc Dali::Toolkit::AccessibilityManager::StatusChangedSignal
239 AccessibilityActionSignalType& StatusChangedSignal()
241 return mStatusChangedSignal;
245 * @copydoc Dali::Toolkit::AccessibilityManager::AccessibilityAdaptor::ActionNextSignal
247 AccessibilityActionSignalType& ActionNextSignal()
249 return mActionNextSignal;
253 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPreviousSignal
255 AccessibilityActionSignalType& ActionPreviousSignal()
257 return mActionPreviousSignal;
261 * @copydoc Dali::Toolkit::AccessibilityManager::ActionActivateSignal
263 AccessibilityActionSignalType& ActionActivateSignal()
265 return mActionActivateSignal;
269 * @copydoc Dali::Toolkit::AccessibilityManager::ActionOverSignal
271 AccessibilityActionSignalType& ActionOverSignal()
273 return mActionOverSignal;
277 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadSignal
279 AccessibilityActionSignalType& ActionReadSignal()
281 return mActionReadSignal;
285 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadNextSignal
287 AccessibilityActionSignalType& ActionReadNextSignal()
289 return mActionReadNextSignal;
293 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadPreviousSignal
295 AccessibilityActionSignalType& ActionReadPreviousSignal()
297 return mActionReadPreviousSignal;
301 * @copydoc Dali::Toolkit::AccessibilityManager::ActionUpSignal
303 AccessibilityActionSignalType& ActionUpSignal()
305 return mActionUpSignal;
309 * @copydoc Dali::Toolkit::AccessibilityManager::ActionDownSignal
311 AccessibilityActionSignalType& ActionDownSignal()
313 return mActionDownSignal;
317 * @copydoc Dali::Toolkit::AccessibilityManager::ActionClearFocusSignal
319 AccessibilityActionSignalType& ActionClearFocusSignal()
321 return mActionClearFocusSignal;
325 * @copydoc Dali::Toolkit::AccessibilityManager::ActionBackSignal
327 AccessibilityActionSignalType& ActionBackSignal()
329 return mActionBackSignal;
333 * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollUpSignal
335 AccessibilityActionSignalType& ActionScrollUpSignal()
337 return mActionScrollUpSignal;
341 * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollDownSignal
343 AccessibilityActionSignalType& ActionScrollDownSignal()
345 return mActionScrollDownSignal;
349 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageLeftSignal
351 AccessibilityActionSignalType& ActionPageLeftSignal()
353 return mActionPageLeftSignal;
357 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageRightSignal
359 AccessibilityActionSignalType& ActionPageRightSignal()
361 return mActionPageRightSignal;
365 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageUpSignal
367 AccessibilityActionSignalType& ActionPageUpSignal()
369 return mActionPageUpSignal;
373 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageDownSignal
375 AccessibilityActionSignalType& ActionPageDownSignal()
377 return mActionPageDownSignal;
381 * @copydoc Dali::Toolkit::AccessibilityManager::ActionMoveToFirstSignal
383 AccessibilityActionSignalType& ActionMoveToFirstSignal()
385 return mActionMoveToFirstSignal;
389 * @copydoc Dali::Toolkit::AccessibilityManager::ActionMoveToLastSignal
391 AccessibilityActionSignalType& ActionMoveToLastSignal()
393 return mActionMoveToLastSignal;
397 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadFromTopSignal
399 AccessibilityActionSignalType& ActionReadFromTopSignal()
401 return mActionReadFromTopSignal;
405 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadFromNextSignal
407 AccessibilityActionSignalType& ActionReadFromNextSignal()
409 return mActionReadFromNextSignal;
413 * @copydoc Dali::Toolkit::AccessibilityManager::ActionZoomSignal
415 AccessibilityActionSignalType& ActionZoomSignal()
417 return mActionZoomSignal;
421 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadIndicatorInformationSignal
423 AccessibilityActionSignalType& ActionReadIndicatorInformationSignal()
425 return mActionReadIndicatorInformationSignal;
429 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadPauseResumeSignal
431 AccessibilityActionSignalType& ActionReadPauseResumeSignal()
433 return mActionReadPauseResumeSignal;
437 * @copydoc Dali::Toolkit::AccessibilityManager::ActionStartStopSignal
439 AccessibilityActionSignalType& ActionStartStopSignal()
441 return mActionStartStopSignal;
445 * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollSignal
447 AccessibilityActionScrollSignalType& ActionScrollSignal()
449 return mActionScrollSignal;
457 virtual ~AccessibilityManager();
462 * Get the additional information (e.g. focus order and description) of the given actor.
463 * @param actorID The ID of the actor to be queried
464 * @return The additional information of the actor
466 ActorAdditionalInfo GetActorAdditionalInfo(const unsigned int actorID) const;
469 * Synchronize the actor's additional information to reflect its latest focus order
470 * @param actorID The ID of the actor
471 * @param order The focus order of the actor
472 * @return The additional information of the actor
474 void SynchronizeActorAdditionalInfo(const unsigned int actorID, const unsigned int order);
477 * Move the focus to the specified actor and send notification for the focus change.
478 * @param actorID The ID of the actor to be queried
479 * @return Whether the focus is successful or not
481 bool DoSetCurrentFocusActor(const unsigned int actorID);
484 * Move the focus to the next actor in the focus chain towards the specified direction.
485 * @param focusIDIter The iterator pointing to the current focused actor
486 * @param forward Whether the focus movement is forward or not. The focus movement will be backward if this is false.
487 * @param wrapped Whether the focus shoule be moved wrapped around or not
488 * @return Whether the focus is successful or not
490 bool DoMoveFocus(FocusIDIter focusIDIter, bool forward, bool wrapped);
493 * Activate the actor. If the actor is control, call OnAccessibilityActivated virtual function.
494 * This function will emit FocusedActorActivatedSignal.
495 * @param actor The actor to activate
497 void DoActivate(Actor actor);
500 * Create the default indicator actor to highlight the focused actor.
502 void CreateDefaultFocusIndicatorActor();
505 * Set whether the actor is focusable or not. A focusable property will be registered for
506 * the actor if not yet.
507 * @param actor The actor to be focused
508 * @param focusable Whether the actor is focusable or not
510 void SetFocusable(Actor actor, bool focusable);
513 * Handle the accessibility pan gesture.
514 * @param[in] panEvent The pan event to be handled.
515 * @return whether the gesture is handled successfully or not.
517 virtual bool HandlePanGesture(const Integration::PanGestureEvent& panEvent);
520 * Change the accessibility status when Accessibility feature(screen-reader) turned on or off.
521 * @return whether the status is changed or not.
523 virtual bool ChangeAccessibilityStatus();
526 * Clear the accessibility focus from the current focused actor.
527 * @return whether the focus is cleared or not.
529 virtual bool ClearAccessibilityFocus();
532 * Perform the accessibility action associated with a scroll event.
533 * @param touchEvent The touch point (and time) of the event.
534 * @return whether the focus is cleared or not.
536 virtual bool AccessibilityActionScroll( Dali::TouchEvent& touchEvent );
539 * Perform the accessibility action to move focus to the previous focusable actor (by one finger flick up).
540 * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
541 * @return whether the accessibility action is performed or not.
543 virtual bool AccessibilityActionPrevious(bool allowEndFeedback);
546 * Perform the accessibility action to move focus to the next focusable actor (by one finger flick down).
547 * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
548 * @return whether the accessibility action is performed or not.
550 virtual bool AccessibilityActionNext(bool allowEndFeedback);
553 * Perform the accessibility action to move focus to the previous focusable actor (by one finger flick left).
554 * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
555 * @return whether the accessibility action is performed or not.
557 virtual bool AccessibilityActionReadPrevious(bool allowEndFeedback);
560 * Perform the accessibility action to move focus to the next focusable actor (by one finger flick right).
561 * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
562 * @return whether the accessibility action is performed or not.
564 virtual bool AccessibilityActionReadNext(bool allowEndFeedback);
567 * Perform the accessibility action to focus and read the actor (by one finger tap or move).
568 * @param allowReadAgain true if the action read again the same object (i.e. read action)
569 * false if the action just read when the focus object is changed (i.e. over action)
570 * @return whether the accessibility action is performed or not.
572 virtual bool AccessibilityActionRead(bool allowReadAgain);
575 * Perform the accessibility action to activate the current focused actor (by one finger double tap).
576 * @return whether the accessibility action is performed or not.
578 virtual bool AccessibilityActionActivate();
581 * Perform the accessibility action to change the value when the current focused actor is a slider
582 * (by double finger down and move up and right).
583 * @return whether the accessibility action is performed or not.
585 virtual bool AccessibilityActionUp();
588 * Perform the accessibility action to change the value when the current focused actor is a slider
589 * (by double finger down and move down and left).
590 * @return whether the accessibility action is performed or not.
592 virtual bool AccessibilityActionDown();
595 * Perform the accessibility action to navigate back (by two fingers circle draw).
596 * @return whether the accessibility action is performed or not.
598 virtual bool AccessibilityActionBack();
601 * Perform the accessibility action to scroll up the list and focus on the first item on the list
602 * after the scrolling and read the item (by two finger swipe up).
603 * @return whether the accessibility action is performed or not.
605 virtual bool AccessibilityActionScrollUp();
608 * Perform the accessibility action to scroll down the list and focus on the first item on the list
609 * after the scrolling and read the item (by two finger swipe down).
610 * @return whether the accessibility action is performed or not.
612 virtual bool AccessibilityActionScrollDown();
615 * Perform the accessibility action to scroll left to the previous page (by two finger swipe left).
616 * @return whether the accessibility action is performed or not.
618 virtual bool AccessibilityActionPageLeft();
621 * Perform the accessibility action to scroll right to the next page (by two finger swipe right).
622 * @return whether the accessibility action is performed or not.
624 virtual bool AccessibilityActionPageRight();
627 * Perform the accessibility action to scroll up to the previous page (by one finger swipe left and right).
628 * @return whether the accessibility action is performed or not.
630 virtual bool AccessibilityActionPageUp();
633 * Perform the accessibility action to scroll down to the next page (by one finger swipe right and left).
634 * @return whether the accessibility action is performed or not.
636 virtual bool AccessibilityActionPageDown();
639 * Perform the accessibility action to move the focus to the first item on the screen
640 * (by one finger swipe up and down).
641 * @return whether the accessibility action is performed or not.
643 virtual bool AccessibilityActionMoveToFirst();
646 * Perform the accessibility action to move the focus to the last item on the screen
647 * (by one finger swipe down and up).
648 * @return whether the accessibility action is performed or not.
650 virtual bool AccessibilityActionMoveToLast();
653 * Perform the accessibility action to move the focus to the first item on the top
654 * and read from the top item continously (by three fingers single tap).
655 * @return whether the accessibility action is performed or not.
657 virtual bool AccessibilityActionReadFromTop();
660 * Perform the accessibility action to move the focus to and read from the next item
661 * continously (by three fingers double tap).
662 * @return whether the accessibility action is performed or not.
664 virtual bool AccessibilityActionReadFromNext();
667 * Perform the accessibility action to move the focus to do the zooming (by one finger triple tap).
668 * @return whether the accessibility action is performed or not.
670 virtual bool AccessibilityActionZoom();
673 * Perform the accessibility action to read the information in the indicator (by two fingers triple tap).
674 * @return whether the accessibility action is performed or not.
676 virtual bool AccessibilityActionReadIndicatorInformation();
679 * Perform the accessibility action to pause/resume the current read out (by two fingers single tap).
680 * @return whether the accessibility action is performed or not.
682 virtual bool AccessibilityActionReadPauseResume();
685 * Perform the accessibility action to start/stop the current action (by two fingers double tap).
686 * @return whether the accessibility action is performed or not.
688 virtual bool AccessibilityActionStartStop();
691 * Perform the accessibility action to mouse move (by one finger tap & hold and move).
692 * @param touchEvent touch event structure
693 * @return whether the accessibility action is performed or not.
695 virtual bool AccessibilityActionTouch(const TouchEvent& touchEvent);
698 * This function is connected to the TtsPlayer StateChangeSignal.
699 * It is called when the TTS players state changes.
700 * @param previousState The previous state of the TTS player (for comparison)
701 * @param currentState The current state of the TTS player
703 void TtsStateChanged( const Dali::TtsPlayer::State previousState, const Dali::TtsPlayer::State currentState );
708 AccessibilityManager(const AccessibilityManager&);
710 AccessibilityManager& operator=(const AccessibilityManager& rhs);
714 Toolkit::AccessibilityManager::FocusChangedSignalType mFocusChangedSignal; ///< The signal to notify the focus change
715 Toolkit::AccessibilityManager::FocusOvershotSignalType mFocusOvershotSignal; ///< The signal to notify the focus overshooted
716 Toolkit::AccessibilityManager::FocusedActorActivatedSignalType mFocusedActorActivatedSignal; ///< The signal to notify the activation of focused actor
719 AccessibilityActionSignalType mStatusChangedSignal;
720 AccessibilityActionSignalType mActionNextSignal;
721 AccessibilityActionSignalType mActionPreviousSignal;
722 AccessibilityActionSignalType mActionActivateSignal;
723 AccessibilityActionSignalType mActionOverSignal;
724 AccessibilityActionSignalType mActionReadSignal;
725 AccessibilityActionSignalType mActionReadNextSignal;
726 AccessibilityActionSignalType mActionReadPreviousSignal;
727 AccessibilityActionSignalType mActionUpSignal;
728 AccessibilityActionSignalType mActionDownSignal;
729 AccessibilityActionSignalType mActionClearFocusSignal;
730 AccessibilityActionSignalType mActionBackSignal;
731 AccessibilityActionSignalType mActionScrollUpSignal;
732 AccessibilityActionSignalType mActionScrollDownSignal;
733 AccessibilityActionSignalType mActionPageLeftSignal;
734 AccessibilityActionSignalType mActionPageRightSignal;
735 AccessibilityActionSignalType mActionPageUpSignal;
736 AccessibilityActionSignalType mActionPageDownSignal;
737 AccessibilityActionSignalType mActionMoveToFirstSignal;
738 AccessibilityActionSignalType mActionMoveToLastSignal;
739 AccessibilityActionSignalType mActionReadFromTopSignal;
740 AccessibilityActionSignalType mActionReadFromNextSignal;
741 AccessibilityActionSignalType mActionZoomSignal;
742 AccessibilityActionSignalType mActionReadIndicatorInformationSignal;
743 AccessibilityActionSignalType mActionReadPauseResumeSignal;
744 AccessibilityActionSignalType mActionStartStopSignal;
745 AccessibilityActionScrollSignalType mActionScrollSignal;
747 FocusIDContainer mFocusIDContainer; ///< The container to look up actor ID by focus order
748 IDAdditionalInfoContainer mIDAdditionalInfoContainer; ///< The container to look up additional information by actor ID
749 FocusIDPair mCurrentFocusActor; ///< The focus order and actor ID of current focused actor
750 Actor mCurrentGesturedActor; ///< The actor that will handle the gesture
751 Actor mFocusIndicatorActor; ///< The focus indicator actor shared by all the focusable actors for highlight
752 Vector2 mPreviousPosition; ///< The previous pan position; useful for calculating velocity for Gesture::Finished events
753 unsigned int mRecursiveFocusMoveCounter; ///< The counter to count the number of recursive focus movement attempted before the focus movement is successful.
755 bool mIsWrapped:1; ///< Whether the focus movement is wrapped around or not
756 bool mIsFocusWithinGroup:1; ///< Whether the focus movement is limited to the current focus group or not
757 bool mIsEndcapFeedbackEnabled:1; ///< Whether the endcap feedback need to be played when the focus leaves the end or vice versa
758 bool mIsEndcapFeedbackPlayed:1; ///< Whether the endcap feedback was played or not
759 bool mIsAccessibilityTtsEnabled:1; ///< Whether accessibility feature(screen-reader) turned on/off
760 bool mTtsCreated:1; ///< Whether the TTS Player has been accessed
761 bool mIsFocusIndicatorEnabled:1; ///< Whether indicator should be shown / hidden. It could be enabled when TTS enabled or 'Tab' key operated.
762 bool mContinuousPlayMode:1; ///< Keeps track of whether or not we are in continuous play mode
766 } // namespace Internal
768 inline Internal::AccessibilityManager& GetImpl(Dali::Toolkit::AccessibilityManager& obj)
770 DALI_ASSERT_ALWAYS(obj);
772 Dali::BaseObject& handle = obj.GetBaseObject();
774 return static_cast<Internal::AccessibilityManager&>(handle);
777 inline const Internal::AccessibilityManager& GetImpl(const Dali::Toolkit::AccessibilityManager& obj)
779 DALI_ASSERT_ALWAYS(obj);
781 const Dali::BaseObject& handle = obj.GetBaseObject();
783 return static_cast<const Internal::AccessibilityManager&>(handle);
786 } // namespace Toolkit
790 #endif // __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H__