Merge "DALi Version 2.2.9" into devel/master
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / adaptor-framework / accessibility.h
1 #ifndef DALI_ATSPI_ACCESSIBILITY_H\r
2 #define DALI_ATSPI_ACCESSIBILITY_H\r
3 /*\r
4  * Copyright (c) 2021 Samsung Electronics Co., Ltd.\r
5  *\r
6  * Licensed under the Apache License, Version 2.0 (the "License");\r
7  * you may not use this file except in compliance with the License.\r
8  * You may obtain a copy of the License at\r
9  *\r
10  * http://www.apache.org/licenses/LICENSE-2.0\r
11  *\r
12  * Unless required by applicable law or agreed to in writing, software\r
13  * distributed under the License is distributed on an "AS IS" BASIS,\r
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
15  * See the License for the specific language governing permissions and\r
16  * limitations under the License.\r
17  *\r
18  */\r
19 \r
20 // EXTERNAL INCLUDES\r
21 #include <string>\r
22 #include <unordered_map>\r
23 #include <vector>\r
24 \r
25 // INTERNAL INCLUDES\r
26 #include <dali/devel-api/adaptor-framework/accessibility-bitset.h>\r
27 #include <dali/public-api/dali-adaptor-common.h>\r
28 \r
29 namespace Dali\r
30 {\r
31 namespace Accessibility\r
32 {\r
33 class Accessible;\r
34 \r
35 /**\r
36  * @brief Enumeration describing type of object move relative to the screen. Only outgoing moves are signalled to AT-clients.\r
37  */\r
38 enum class ScreenRelativeMoveType\r
39 {\r
40   OUTSIDE               = 0, ///< Object moves outside of the screen\r
41   OUTGOING_TOP_LEFT     = 1, ///< Object moves out through the top(or left) side of the screen. Maps to: ATSPI_MOVE_OUTED_TOP_LEFT\r
42   OUTGOING_BOTTOM_RIGHT = 2, ///< Object moves out through the bottom(or right) side of the screen. Maps to: ATSPI_MOVE_OUTED_BOTTOM_RIGHT\r
43   INSIDE                     ///< Object moves into the screen or moves inside the screen\r
44 };\r
45 \r
46 /**\r
47  * @brief Enumeration describing a relation between accessible objects\r
48  * 1 to 0..N relation model is supported. By default relation is not symmetrical.\r
49  * Symmetry must be explicitly maintained.\r
50  */\r
51 enum class RelationType : uint32_t\r
52 {\r
53   NULL_OF,          ///< Null Relation.\r
54   LABEL_FOR,        ///< Label For.\r
55   LABELLED_BY,      ///< Labelled By.\r
56   CONTROLLER_FOR,   ///< Controller For.\r
57   CONTROLLED_BY,    ///< Controlled By.\r
58   MEMBER_OF,        ///< Member Of.\r
59   TOOLTIP_FOR,      ///< ToolTip For.\r
60   NODE_CHILD_OF,    ///< Node Child Of.\r
61   NODE_PARENT_OF,   ///< Node Parent Of.\r
62   EXTENDED,         ///< Extended.\r
63   FLOWS_TO,         ///< Flows To.\r
64   FLOWS_FROM,       ///< Flows From.\r
65   SUBWINDOW_OF,     ///< Sub Window Of.\r
66   EMBEDS,           ///< Embeds.\r
67   EMBEDDED_BY,      ///< Embedded By.\r
68   POPUP_FOR,        ///< Popup For\r
69   PARENT_WINDOW_OF, ///< Parent Window Of.\r
70   DESCRIPTION_FOR,  ///< Description For.\r
71   DESCRIBED_BY,     ///< Described By.\r
72   DETAILS,          ///< Details.\r
73   DETAILS_FOR,      ///< Details For.\r
74   ERROR_MESSAGE,    ///< Error Message.\r
75   ERROR_FOR,        ///< Error For.\r
76   MAX_COUNT\r
77 };\r
78 \r
79 /**\r
80  * @brief Enumeration describing if coordinates are relative to screen or window\r
81  * @see Accessibility::Component::GetExtents\r
82  * @see Accessibility::Component::IsAccessibleContainingPoint\r
83  */\r
84 enum class CoordinateType\r
85 {\r
86   SCREEN, ///< Screen.\r
87   WINDOW  ///< Window.\r
88 };\r
89 \r
90 /**\r
91  * @brief Enumeration indicating relative stacking order\r
92  * ComponentLayer allows to describe visibility of all parts of UI\r
93  * basing on the concrete stacking order\r
94  * @see Accessibility::Component::GetLayer\r
95  * @note currently only ComponentLayer::Window is supported\r
96  */\r
97 enum class ComponentLayer\r
98 {\r
99   INVALID,    ///< Invalid.\r
100   BACKGROUND, ///< Background.\r
101   CANVAS,     ///< Canvas.\r
102   WIDGET,     ///< Widget.\r
103   MDI,        ///< MDI.\r
104   POPUP,      ///< Popup.\r
105   OVERLAY,    ///< Overlay.\r
106   WINDOW,     ///< Window.\r
107   MAX_COUNT\r
108 };\r
109 \r
110 /**\r
111  * @brief Enumeration describing role of the Accessibility object\r
112  * Object can be described by only one role.\r
113  * @see Accessibility::Accessible::GetRole\r
114  */\r
115 enum class Role : uint32_t\r
116 {\r
117   INVALID,\r
118   ACCELERATOR_LABEL,\r
119   ALERT,\r
120   ANIMATION,\r
121   ARROW,\r
122   CALENDAR,\r
123   CANVAS,\r
124   CHECK_BOX,\r
125   CHECK_MENU_ITEM,\r
126   COLOR_CHOOSER,\r
127   COLUMN_HEADER,\r
128   COMBO_BOX,\r
129   DATE_EDITOR,\r
130   DESKTOP_ICON,\r
131   DESKTOP_FRAME,\r
132   DIAL,\r
133   DIALOG,\r
134   DIRECTORY_PANE,\r
135   DRAWING_AREA,\r
136   FILE_CHOOSER,\r
137   FILLER,\r
138   FOCUS_TRAVERSABLE,\r
139   FONT_CHOOSER,\r
140   FRAME,\r
141   GLASS_PANE,\r
142   HTML_CONTAINER,\r
143   ICON,\r
144   IMAGE,\r
145   INTERNAL_FRAME,\r
146   LABEL,\r
147   LAYERED_PANE,\r
148   LIST,\r
149   LIST_ITEM,\r
150   MENU,\r
151   MENU_BAR,\r
152   MENU_ITEM,\r
153   OPTION_PANE,\r
154   PAGE_TAB,\r
155   PAGE_TAB_LIST,\r
156   PANEL,\r
157   PASSWORD_TEXT,\r
158   POPUP_MENU,\r
159   PROGRESS_BAR,\r
160   PUSH_BUTTON,\r
161   RADIO_BUTTON,\r
162   RADIO_MENU_ITEM,\r
163   ROOT_PANE,\r
164   ROW_HEADER,\r
165   SCROLL_BAR,\r
166   SCROLL_PANE,\r
167   SEPARATOR,\r
168   SLIDER,\r
169   SPIN_BUTTON,\r
170   SPLIT_PANE,\r
171   STATUS_BAR,\r
172   TABLE,\r
173   TABLE_CELL,\r
174   TABLE_COLUMN_HEADER,\r
175   TABLE_ROW_HEADER,\r
176   TEAROFF_MENU_ITEM,\r
177   TERMINAL,\r
178   TEXT,\r
179   TOGGLE_BUTTON,\r
180   TOOL_BAR,\r
181   TOOL_TIP,\r
182   TREE,\r
183   TREE_TABLE,\r
184   UNKNOWN,\r
185   VIEWPORT,\r
186   WINDOW,\r
187   EXTENDED,\r
188   HEADER,\r
189   FOOTER,\r
190   PARAGRAPH,\r
191   RULER,\r
192   APPLICATION,\r
193   AUTOCOMPLETE,\r
194   EDITBAR,\r
195   EMBEDDED,\r
196   ENTRY,\r
197   CHART,\r
198   CAPTION,\r
199   DOCUMENT_FRAME,\r
200   HEADING,\r
201   PAGE,\r
202   SECTION,\r
203   REDUNDANT_OBJECT,\r
204   FORM,\r
205   LINK,\r
206   INPUT_METHOD_WINDOW,\r
207   TABLE_ROW,\r
208   TREE_ITEM,\r
209   DOCUMENT_SPREADSHEET,\r
210   DOCUMENT_PRESENTATION,\r
211   DOCUMENT_TEXT,\r
212   DOCUMENT_WEB,\r
213   DOCUMENT_EMAIL,\r
214   COMMENT,\r
215   LIST_BOX,\r
216   GROUPING,\r
217   IMAGE_MAP,\r
218   NOTIFICATION,\r
219   INFO_BAR,\r
220   LEVEL_BAR,\r
221   TITLE_BAR,\r
222   BLOCK_QUOTE,\r
223   AUDIO,\r
224   VIDEO,\r
225   DEFINITION,\r
226   ARTICLE,\r
227   LANDMARK,\r
228   LOG,\r
229   MARQUEE,\r
230   MATH,\r
231   RATING,\r
232   TIMER,\r
233   STATIC,\r
234   MATH_FRACTION,\r
235   MATH_ROOT,\r
236   SUBSCRIPT,\r
237   SUPERSCRIPT,\r
238   MAX_COUNT\r
239 };\r
240 \r
241 /**\r
242  * @brief Enumeration describing states of the Accessibility object\r
243  * Object can be in many states at the same time.\r
244  * @see Accessibility::Accessible::GetStates\r
245  */\r
246 enum class State : uint32_t\r
247 {\r
248   INVALID,\r
249   ACTIVE,\r
250   ARMED,\r
251   BUSY,\r
252   CHECKED,\r
253   COLLAPSED,\r
254   DEFUNCT,\r
255   EDITABLE,\r
256   ENABLED,\r
257   EXPANDABLE,\r
258   EXPANDED,\r
259   FOCUSABLE,\r
260   FOCUSED,\r
261   HAS_TOOLTIP,\r
262   HORIZONTAL,\r
263   ICONIFIED,\r
264   MODAL,\r
265   MULTI_LINE,\r
266   MULTI_SELECTABLE,\r
267   OPAQUE,\r
268   PRESSED,\r
269   RESIZEABLE,\r
270   SELECTABLE,\r
271   SELECTED,\r
272   SENSITIVE,\r
273   SHOWING,\r
274   SINGLE_LINE,\r
275   STALE,\r
276   TRANSIENT,\r
277   VERTICAL,\r
278   VISIBLE,\r
279   MANAGES_DESCENDANTS,\r
280   INDETERMINATE,\r
281   REQUIRED,\r
282   TRUNCATED,\r
283   ANIMATED,\r
284   INVALID_ENTRY,\r
285   SUPPORTS_AUTOCOMPLETION,\r
286   SELECTABLE_TEXT,\r
287   IS_DEFAULT,\r
288   VISITED,\r
289   CHECKABLE,\r
290   HAS_POPUP,\r
291   READ_ONLY,\r
292   HIGHLIGHTED,\r
293   HIGHLIGHTABLE,\r
294   MAX_COUNT\r
295 };\r
296 \r
297 /**\r
298  * @brief Enumeration describing change of text object\r
299  */\r
300 enum class TextChangedState : uint32_t\r
301 {\r
302   INSERTED,\r
303   DELETED,\r
304   MAX_COUNT\r
305 };\r
306 \r
307 /**\r
308  * @brief Enumeration describing change of object property\r
309  */\r
310 enum class ObjectPropertyChangeEvent\r
311 {\r
312   NAME,\r
313   DESCRIPTION,\r
314   VALUE,\r
315   ROLE,\r
316   PARENT,\r
317 };\r
318 \r
319 /**\r
320  * @brief Enumeration describing change of window object\r
321  * @see Accessibility::Accessible::Emit\r
322  */\r
323 enum class WindowEvent\r
324 {\r
325   PROPERTY_CHANGE,\r
326   MINIMIZE,\r
327   MAXIMIZE,\r
328   RESTORE,\r
329   CLOSE,\r
330   CREATE,\r
331   REPARENT,\r
332   DESKTOP_CREATE,\r
333   DESKTOP_DESTROY,\r
334   DESTROY,\r
335   ACTIVATE,\r
336   DEACTIVATE,\r
337   RAISE,\r
338   LOWER,\r
339   MOVE,\r
340   RESIZE,\r
341   SHADE,\r
342   UU_SHADE,\r
343   RESTYLE,\r
344 };\r
345 \r
346 /**\r
347  * @brief Restored window state\r
348  * @see Accessibility::Accessible::Emit\r
349  */\r
350 enum class WindowRestoreType\r
351 {\r
352   RESTORE_FROM_ICONIFY,  // The Window is Deiconified.\r
353   RESTORE_FROM_MAXIMIZE  // The Window is Unmaximized.\r
354 };\r
355 \r
356 /**\r
357  * @brief Enumeration used to acquire bounded text from accessible object having textual content.\r
358  * @see Accessibility::Text::GetTextAtOffset\r
359  * @note Currently only TextBoundary::Character is supported\r
360  */\r
361 enum class TextBoundary : uint32_t\r
362 {\r
363   CHARACTER, ///> Only one character is acquired.\r
364   WORD,      ///> Not supported.\r
365   SENTENCE,  ///> Not supported.\r
366   LINE,      ///> Not supported.\r
367   PARAGRAPH, ///> Not supported.\r
368   MAX_COUNT\r
369 };\r
370 \r
371 /**\r
372  * @brief Enumeration describing type of gesture\r
373  * @see Accessibility::Accessible::DoGesture\r
374  */\r
375 enum class Gesture : int32_t\r
376 {\r
377   ONE_FINGER_HOVER,\r
378   TWO_FINGER_HOVER,\r
379   THREE_FINGER_HOVER,\r
380   ONE_FINGER_FLICK_LEFT,\r
381   ONE_FINGER_FLICK_RIGHT,\r
382   ONE_FINGER_FLICK_UP,\r
383   ONE_FINGER_FLICK_DOWN,\r
384   TWO_FINGERS_FLICK_LEFT,\r
385   TWO_FINGERS_FLICK_RIGHT,\r
386   TWO_FINGERS_FLICK_UP,\r
387   TWO_FINGERS_FLICK_DOWN,\r
388   THREE_FINGERS_FLICK_LEFT,\r
389   THREE_FINGERS_FLICK_RIGHT,\r
390   THREE_FINGERS_FLICK_UP,\r
391   THREE_FINGERS_FLICK_DOWN,\r
392   ONE_FINGER_SINGLE_TAP,\r
393   ONE_FINGER_DOUBLE_TAP,\r
394   ONE_FINGER_TRIPLE_TAP,\r
395   TWO_FINGERS_SINGLE_TAP,\r
396   TWO_FINGERS_DOUBLE_TAP,\r
397   TWO_FINGERS_TRIPLE_TAP,\r
398   THREE_FINGERS_SINGLE_TAP,\r
399   THREE_FINGERS_DOUBLE_TAP,\r
400   THREE_FINGERS_TRIPLE_TAP,\r
401   ONE_FINGER_FLICK_LEFT_RETURN,\r
402   ONE_FINGER_FLICK_RIGHT_RETURN,\r
403   ONE_FINGER_FLICK_UP_RETURN,\r
404   ONE_FINGER_FLICK_DOWN_RETURN,\r
405   TWO_FINGERS_FLICK_LEFT_RETURN,\r
406   TWO_FINGERS_FLICK_RIGHT_RETURN,\r
407   TWO_FINGERS_FLICK_UP_RETURN,\r
408   TWO_FINGERS_FLICK_DOWN_RETURN,\r
409   THREE_FINGERS_FLICK_LEFT_RETURN,\r
410   THREE_FINGERS_FLICK_RIGHT_RETURN,\r
411   THREE_FINGERS_FLICK_UP_RETURN,\r
412   THREE_FINGERS_FLICK_DOWN_RETURN,\r
413   ONE_FINGER_DOUBLE_TAP_N_HOLD,\r
414   TWO_FINGERS_DOUBLE_TAP_N_HOLD,\r
415   THREE_FINGERS_DOUBLE_TAP_N_HOLD,\r
416   MAX_COUNT\r
417 };\r
418 \r
419 /**\r
420  * @brief Enumeration indicating current state of gesture\r
421  * @see Dali::Accessibility::GestureInfo\r
422  */\r
423 enum class GestureState : int32_t\r
424 {\r
425   BEGIN,\r
426   ONGOING,\r
427   ENDED,\r
428   ABORTED\r
429 };\r
430 \r
431 /**\r
432  * @brief Enumeration of ReadingInfoType\r
433  */\r
434 enum class ReadingInfoType\r
435 {\r
436   NAME,\r
437   ROLE,\r
438   DESCRIPTION,\r
439   STATE,\r
440   MAX_COUNT\r
441 };\r
442 \r
443 /**\r
444  * @brief Enumeration of all AT-SPI interfaces.\r
445  *\r
446  * @see Dali::Accessibility::Accessible::GetInterfaceName()\r
447  * @see Dali::Accessibility::AtspiInterfaceType\r
448  */\r
449 enum class AtspiInterface\r
450 {\r
451   ACCESSIBLE,\r
452   ACTION,\r
453   APPLICATION,\r
454   CACHE,\r
455   COLLECTION,\r
456   COMPONENT,\r
457   DEVICE_EVENT_CONTROLLER,\r
458   DEVICE_EVENT_LISTENER,\r
459   DOCUMENT,\r
460   EDITABLE_TEXT,\r
461   EVENT_DOCUMENT,\r
462   EVENT_FOCUS,\r
463   EVENT_KEYBOARD,\r
464   EVENT_MOUSE,\r
465   EVENT_OBJECT,\r
466   EVENT_TERMINAL,\r
467   EVENT_WINDOW,\r
468   HYPERLINK,\r
469   HYPERTEXT,\r
470   IMAGE,\r
471   REGISTRY,\r
472   SELECTION,\r
473   SOCKET,\r
474   TABLE,\r
475   TABLE_CELL,\r
476   TEXT,\r
477   VALUE,\r
478   MAX_COUNT\r
479 };\r
480 \r
481 /**\r
482  * @brief Enumeration of all AT-SPI events.\r
483  */\r
484 enum class AtspiEvent\r
485 {\r
486   PROPERTY_CHANGED,\r
487   BOUNDS_CHANGED,\r
488   LINK_SELECTED,\r
489   STATE_CHANGED,\r
490   CHILDREN_CHANGED,\r
491   VISIBLE_DATA_CHANGED,\r
492   SELECTION_CHANGED,\r
493   MODEL_CHANGED,\r
494   ACTIVE_DESCENDANT_CHANGED,\r
495   ROW_INSERTED,\r
496   ROW_REORDERED,\r
497   ROW_DELETED,\r
498   COLUMN_INSERTED,\r
499   COLUMN_REORDERED,\r
500   COLUMN_DELETED,\r
501   TEXT_BOUNDS_CHANGED,\r
502   TEXT_SELECTION_CHANGED,\r
503   TEXT_CHANGED,\r
504   TEXT_ATTRIBUTES_CHANGED,\r
505   TEXT_CARET_MOVED,\r
506   ATTRIBUTES_CHANGED,\r
507   MOVED_OUT,\r
508   WINDOW_CHANGED,\r
509   SCROLL_STARTED,\r
510   SCROLL_FINISHED,\r
511   MAX_COUNT\r
512 };\r
513 \r
514 using AtspiInterfaces   = EnumBitSet<AtspiInterface, AtspiInterface::MAX_COUNT>;\r
515 using AtspiEvents       = EnumBitSet<AtspiEvent, AtspiEvent::MAX_COUNT>;\r
516 using ReadingInfoTypes  = EnumBitSet<ReadingInfoType, ReadingInfoType::MAX_COUNT>;\r
517 using States            = EnumBitSet<State, State::MAX_COUNT>;\r
518 using Attributes        = std::unordered_map<std::string, std::string>;\r
519 \r
520 namespace Internal\r
521 {\r
522 /*\r
523  * AT-SPI interfaces exposed as native C++ types should specialize this like so:\r
524  *\r
525  * template<>\r
526  * struct AtspiInterfaceTypeHelper<AtspiInterface::ACCESSIBLE>\r
527  * {\r
528  *   using Type = Dali::Accessibility::Accessible;\r
529  * };\r
530  */\r
531 template<AtspiInterface I>\r
532 struct AtspiInterfaceTypeHelper; // no default definition\r
533 \r
534 } // namespace Internal\r
535 \r
536 /**\r
537  * @brief Resolves to the native C++ type that represents the given AT-SPI interface.\r
538  *\r
539  * For example, @code AtspiInterfaceType<AtspiInterface::ACCESSIBLE> @endcode is the same as\r
540  * @code Dali::Accessibility::Accessible @endcode. Not all AT-SPI interfaces have native C++\r
541  * representations (in which case, such an expression will not compile).\r
542  *\r
543  * @tparam I Enumeration value indicating the requested AT-SPI interface.\r
544  */\r
545 template<AtspiInterface I>\r
546 using AtspiInterfaceType = typename Internal::AtspiInterfaceTypeHelper<I>::Type;\r
547 \r
548 /**\r
549  * @brief Class representing unique object address on accessibility bus\r
550  * @see Dali::Accessibility::Accessible::GetAddress\r
551  */\r
552 class DALI_ADAPTOR_API Address\r
553 {\r
554 public:\r
555   Address() = default;\r
556 \r
557   Address(std::string bus, std::string path)\r
558   : mBus(std::move(bus)),\r
559     mPath(std::move(path))\r
560   {\r
561   }\r
562 \r
563   explicit operator bool() const\r
564   {\r
565     return !mPath.empty();\r
566   }\r
567 \r
568   std::string ToString() const\r
569   {\r
570     return *this ? mBus + ":" + mPath : "::null";\r
571   }\r
572 \r
573   const std::string& GetBus() const;\r
574 \r
575   const std::string& GetPath() const\r
576   {\r
577     return mPath;\r
578   }\r
579 \r
580   bool operator==(const Address& a) const\r
581   {\r
582     return mBus == a.mBus && mPath == a.mPath;\r
583   }\r
584 \r
585   bool operator!=(const Address& a) const\r
586   {\r
587     return !(*this == a);\r
588   }\r
589 \r
590 private:\r
591   mutable std::string mBus, mPath;\r
592 };\r
593 \r
594 /**\r
595  * @brief Enumeration describing type of key event\r
596  * @see Adaptor::AccessibilityObserver::OnAccessibleKeyEvent\r
597  */\r
598 enum class KeyEventType\r
599 {\r
600   KEY_PRESSED,\r
601   KEY_RELEASED,\r
602 };\r
603 \r
604 /**\r
605  * @brief Enumeration with human readable values describing state of event\r
606  * @see Dali::Accessibility::Bridge::Emit\r
607  */\r
608 enum class Consumed\r
609 {\r
610   NO,\r
611   YES\r
612 };\r
613 \r
614 /**\r
615  * @brief Helper class representing two dimensional point with integer coordinates\r
616  */\r
617 struct DALI_ADAPTOR_API Point\r
618 {\r
619   int x = 0;\r
620   int y = 0;\r
621 \r
622   Point() = default;\r
623 \r
624   Point(int x, int y)\r
625   : x(x),\r
626     y(y)\r
627   {\r
628   }\r
629 \r
630   bool operator==(Point p) const\r
631   {\r
632     return x == p.x && y == p.y;\r
633   }\r
634   bool operator!=(Point p) const\r
635   {\r
636     return !(*this == p);\r
637   }\r
638 };\r
639 \r
640 /**\r
641 * @brief Helper class representing size of rectangle object with usage of two integer values\r
642 */\r
643 struct DALI_ADAPTOR_API Size\r
644 {\r
645   int width  = 0;\r
646   int height = 0;\r
647 \r
648   Size() = default;\r
649 \r
650   Size(int w, int h)\r
651   : width(w),\r
652     height(h)\r
653   {\r
654   }\r
655 \r
656   bool operator==(Size p) const\r
657   {\r
658     return width == p.width && height == p.height;\r
659   }\r
660 \r
661   bool operator!=(Size p) const\r
662   {\r
663     return !(*this == p);\r
664   }\r
665 };\r
666 \r
667 /**\r
668  * @brief Helper class used to store data related with Accessibility::Text interface\r
669  * @see Dali::Accessibility::Text::GetTextAtOffset\r
670  * @see Dali::Accessibility::Text::GetRangeOfSelection\r
671  */\r
672 struct DALI_ADAPTOR_API Range\r
673 {\r
674   int32_t     startOffset = 0;\r
675   int32_t     endOffset   = 0;\r
676   std::string content;\r
677 \r
678   Range() = default;\r
679 \r
680   Range(size_t start, size_t end)\r
681   : startOffset(start),\r
682     endOffset(end)\r
683   {\r
684   }\r
685 \r
686   Range(size_t start, size_t end, std::string content)\r
687   : startOffset(start),\r
688     endOffset(end),\r
689     content(content)\r
690   {\r
691   }\r
692 };\r
693 \r
694 /**\r
695  * @brief Structure containing all values needed to invoke Accessible::DoGesture\r
696  * type : numerated gesture type\r
697  * startPositionX, startPositionY : point where gesture begins\r
698  * endPositionX, endPositionY : point where gesture ends\r
699  * state : enumerated state of gesture\r
700  * eventTime : time when event occured\r
701  * @see Dali::Accessibility::Accessible::DoGesture\r
702  */\r
703 struct DALI_ADAPTOR_API GestureInfo\r
704 {\r
705   GestureInfo() = default;\r
706   GestureInfo(Gesture type, int32_t startPositionX, int32_t endPositionX, int32_t startPositionY, int32_t endPositionY, GestureState state, uint32_t eventTime)\r
707   : type(type),\r
708     startPointX(startPositionX),\r
709     endPointX(endPositionX),\r
710     startPointY(startPositionY),\r
711     endPointY(endPositionY),\r
712     state(state),\r
713     eventTime(eventTime)\r
714   {\r
715   }\r
716 \r
717   Gesture      type{};\r
718   int32_t      startPointX{};\r
719   int32_t      endPointX{};\r
720   int32_t      startPointY{};\r
721   int32_t      endPointY{};\r
722   GestureState state{};\r
723   uint32_t     eventTime{};\r
724 };\r
725 \r
726 /**\r
727  * @brief Class representing accessibility relations\r
728  *\r
729  * Class connecting one source object with multiple target objects with usage\r
730  * of specific relation type.\r
731  *\r
732  * A remote target object (i.e. one belonging to a different process) can be\r
733  * represented in terms of a ProxyAccessible.\r
734  *\r
735  * @see Dali::Accessibility::Accessible::Accessible\r
736  * @see Dali::Accessibility::Accessible::RelationType\r
737  */\r
738 struct DALI_ADAPTOR_API Relation\r
739 {\r
740   Relation(RelationType relationType, const std::vector<Accessible*>& targets)\r
741   : mRelationType(relationType),\r
742     mTargets(targets)\r
743   {\r
744   }\r
745 \r
746   RelationType             mRelationType;\r
747   std::vector<Accessible*> mTargets;\r
748 };\r
749 \r
750 } // namespace Accessibility\r
751 } // namespace Dali\r
752 \r
753 #endif // DALI_ATSPI_ACCESSIBILITY_H\r