Merge "Fix a heap-buffer-overflow issue." 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) 2023 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   POST_RENDER,\r
345 };\r
346 \r
347 /**\r
348  * @brief Restored window state\r
349  * @see Accessibility::Accessible::Emit\r
350  */\r
351 enum class WindowRestoreType\r
352 {\r
353   RESTORE_FROM_ICONIFY,  // The Window is Deiconified.\r
354   RESTORE_FROM_MAXIMIZE  // The Window is Unmaximized.\r
355 };\r
356 \r
357 /**\r
358  * @brief Enumeration used to acquire bounded text from accessible object having textual content.\r
359  * @see Accessibility::Text::GetTextAtOffset\r
360  * @note Currently only TextBoundary::Character is supported\r
361  */\r
362 enum class TextBoundary : uint32_t\r
363 {\r
364   CHARACTER, ///> Only one character is acquired.\r
365   WORD,      ///> Not supported.\r
366   SENTENCE,  ///> Not supported.\r
367   LINE,      ///> Not supported.\r
368   PARAGRAPH, ///> Not supported.\r
369   MAX_COUNT\r
370 };\r
371 \r
372 /**\r
373  * @brief Enumeration describing type of gesture\r
374  * @see Accessibility::Accessible::DoGesture\r
375  */\r
376 enum class Gesture : int32_t\r
377 {\r
378   ONE_FINGER_HOVER,\r
379   TWO_FINGER_HOVER,\r
380   THREE_FINGER_HOVER,\r
381   ONE_FINGER_FLICK_LEFT,\r
382   ONE_FINGER_FLICK_RIGHT,\r
383   ONE_FINGER_FLICK_UP,\r
384   ONE_FINGER_FLICK_DOWN,\r
385   TWO_FINGERS_FLICK_LEFT,\r
386   TWO_FINGERS_FLICK_RIGHT,\r
387   TWO_FINGERS_FLICK_UP,\r
388   TWO_FINGERS_FLICK_DOWN,\r
389   THREE_FINGERS_FLICK_LEFT,\r
390   THREE_FINGERS_FLICK_RIGHT,\r
391   THREE_FINGERS_FLICK_UP,\r
392   THREE_FINGERS_FLICK_DOWN,\r
393   ONE_FINGER_SINGLE_TAP,\r
394   ONE_FINGER_DOUBLE_TAP,\r
395   ONE_FINGER_TRIPLE_TAP,\r
396   TWO_FINGERS_SINGLE_TAP,\r
397   TWO_FINGERS_DOUBLE_TAP,\r
398   TWO_FINGERS_TRIPLE_TAP,\r
399   THREE_FINGERS_SINGLE_TAP,\r
400   THREE_FINGERS_DOUBLE_TAP,\r
401   THREE_FINGERS_TRIPLE_TAP,\r
402   ONE_FINGER_FLICK_LEFT_RETURN,\r
403   ONE_FINGER_FLICK_RIGHT_RETURN,\r
404   ONE_FINGER_FLICK_UP_RETURN,\r
405   ONE_FINGER_FLICK_DOWN_RETURN,\r
406   TWO_FINGERS_FLICK_LEFT_RETURN,\r
407   TWO_FINGERS_FLICK_RIGHT_RETURN,\r
408   TWO_FINGERS_FLICK_UP_RETURN,\r
409   TWO_FINGERS_FLICK_DOWN_RETURN,\r
410   THREE_FINGERS_FLICK_LEFT_RETURN,\r
411   THREE_FINGERS_FLICK_RIGHT_RETURN,\r
412   THREE_FINGERS_FLICK_UP_RETURN,\r
413   THREE_FINGERS_FLICK_DOWN_RETURN,\r
414   ONE_FINGER_DOUBLE_TAP_N_HOLD,\r
415   TWO_FINGERS_DOUBLE_TAP_N_HOLD,\r
416   THREE_FINGERS_DOUBLE_TAP_N_HOLD,\r
417   MAX_COUNT\r
418 };\r
419 \r
420 /**\r
421  * @brief Enumeration indicating current state of gesture\r
422  * @see Dali::Accessibility::GestureInfo\r
423  */\r
424 enum class GestureState : int32_t\r
425 {\r
426   BEGIN,\r
427   ONGOING,\r
428   ENDED,\r
429   ABORTED\r
430 };\r
431 \r
432 /**\r
433  * @brief Enumeration of ReadingInfoType\r
434  */\r
435 enum class ReadingInfoType\r
436 {\r
437   NAME,\r
438   ROLE,\r
439   DESCRIPTION,\r
440   STATE,\r
441   MAX_COUNT\r
442 };\r
443 \r
444 /**\r
445  * @brief Enumeration of all AT-SPI interfaces.\r
446  *\r
447  * @see Dali::Accessibility::Accessible::GetInterfaceName()\r
448  * @see Dali::Accessibility::AtspiInterfaceType\r
449  */\r
450 enum class AtspiInterface\r
451 {\r
452   ACCESSIBLE,\r
453   ACTION,\r
454   APPLICATION,\r
455   CACHE,\r
456   COLLECTION,\r
457   COMPONENT,\r
458   DEVICE_EVENT_CONTROLLER,\r
459   DEVICE_EVENT_LISTENER,\r
460   DOCUMENT,\r
461   EDITABLE_TEXT,\r
462   EVENT_DOCUMENT,\r
463   EVENT_FOCUS,\r
464   EVENT_KEYBOARD,\r
465   EVENT_MOUSE,\r
466   EVENT_OBJECT,\r
467   EVENT_TERMINAL,\r
468   EVENT_WINDOW,\r
469   HYPERLINK,\r
470   HYPERTEXT,\r
471   IMAGE,\r
472   REGISTRY,\r
473   SELECTION,\r
474   SOCKET,\r
475   TABLE,\r
476   TABLE_CELL,\r
477   TEXT,\r
478   VALUE,\r
479   MAX_COUNT\r
480 };\r
481 \r
482 /**\r
483  * @brief Enumeration of all AT-SPI events.\r
484  */\r
485 enum class AtspiEvent\r
486 {\r
487   PROPERTY_CHANGED,\r
488   BOUNDS_CHANGED,\r
489   LINK_SELECTED,\r
490   STATE_CHANGED,\r
491   CHILDREN_CHANGED,\r
492   VISIBLE_DATA_CHANGED,\r
493   SELECTION_CHANGED,\r
494   MODEL_CHANGED,\r
495   ACTIVE_DESCENDANT_CHANGED,\r
496   ROW_INSERTED,\r
497   ROW_REORDERED,\r
498   ROW_DELETED,\r
499   COLUMN_INSERTED,\r
500   COLUMN_REORDERED,\r
501   COLUMN_DELETED,\r
502   TEXT_BOUNDS_CHANGED,\r
503   TEXT_SELECTION_CHANGED,\r
504   TEXT_CHANGED,\r
505   TEXT_ATTRIBUTES_CHANGED,\r
506   TEXT_CARET_MOVED,\r
507   ATTRIBUTES_CHANGED,\r
508   MOVED_OUT,\r
509   WINDOW_CHANGED,\r
510   SCROLL_STARTED,\r
511   SCROLL_FINISHED,\r
512   MAX_COUNT\r
513 };\r
514 \r
515 using AtspiInterfaces   = EnumBitSet<AtspiInterface, AtspiInterface::MAX_COUNT>;\r
516 using AtspiEvents       = EnumBitSet<AtspiEvent, AtspiEvent::MAX_COUNT>;\r
517 using ReadingInfoTypes  = EnumBitSet<ReadingInfoType, ReadingInfoType::MAX_COUNT>;\r
518 using States            = EnumBitSet<State, State::MAX_COUNT>;\r
519 using Attributes        = std::unordered_map<std::string, std::string>;\r
520 \r
521 namespace Internal\r
522 {\r
523 /*\r
524  * AT-SPI interfaces exposed as native C++ types should specialize this like so:\r
525  *\r
526  * template<>\r
527  * struct AtspiInterfaceTypeHelper<AtspiInterface::ACCESSIBLE>\r
528  * {\r
529  *   using Type = Dali::Accessibility::Accessible;\r
530  * };\r
531  */\r
532 template<AtspiInterface I>\r
533 struct AtspiInterfaceTypeHelper; // no default definition\r
534 \r
535 } // namespace Internal\r
536 \r
537 /**\r
538  * @brief Resolves to the native C++ type that represents the given AT-SPI interface.\r
539  *\r
540  * For example, @code AtspiInterfaceType<AtspiInterface::ACCESSIBLE> @endcode is the same as\r
541  * @code Dali::Accessibility::Accessible @endcode. Not all AT-SPI interfaces have native C++\r
542  * representations (in which case, such an expression will not compile).\r
543  *\r
544  * @tparam I Enumeration value indicating the requested AT-SPI interface.\r
545  */\r
546 template<AtspiInterface I>\r
547 using AtspiInterfaceType = typename Internal::AtspiInterfaceTypeHelper<I>::Type;\r
548 \r
549 /**\r
550  * @brief Class representing unique object address on accessibility bus\r
551  * @see Dali::Accessibility::Accessible::GetAddress\r
552  */\r
553 class DALI_ADAPTOR_API Address\r
554 {\r
555 public:\r
556   Address() = default;\r
557 \r
558   Address(std::string bus, std::string path)\r
559   : mBus(std::move(bus)),\r
560     mPath(std::move(path))\r
561   {\r
562   }\r
563 \r
564   explicit operator bool() const\r
565   {\r
566     return !mPath.empty();\r
567   }\r
568 \r
569   std::string ToString() const\r
570   {\r
571     return *this ? mBus + ":" + mPath : "::null";\r
572   }\r
573 \r
574   const std::string& GetBus() const;\r
575 \r
576   const std::string& GetPath() const\r
577   {\r
578     return mPath;\r
579   }\r
580 \r
581   bool operator==(const Address& a) const\r
582   {\r
583     return mBus == a.mBus && mPath == a.mPath;\r
584   }\r
585 \r
586   bool operator!=(const Address& a) const\r
587   {\r
588     return !(*this == a);\r
589   }\r
590 \r
591 private:\r
592   mutable std::string mBus, mPath;\r
593 };\r
594 \r
595 /**\r
596  * @brief Enumeration describing type of key event\r
597  * @see Adaptor::AccessibilityObserver::OnAccessibleKeyEvent\r
598  */\r
599 enum class KeyEventType\r
600 {\r
601   KEY_PRESSED,\r
602   KEY_RELEASED,\r
603 };\r
604 \r
605 /**\r
606  * @brief Enumeration with human readable values describing state of event\r
607  * @see Dali::Accessibility::Bridge::Emit\r
608  */\r
609 enum class Consumed\r
610 {\r
611   NO,\r
612   YES\r
613 };\r
614 \r
615 /**\r
616  * @brief Helper class representing two dimensional point with integer coordinates\r
617  */\r
618 struct DALI_ADAPTOR_API Point\r
619 {\r
620   int x = 0;\r
621   int y = 0;\r
622 \r
623   Point() = default;\r
624 \r
625   Point(int x, int y)\r
626   : x(x),\r
627     y(y)\r
628   {\r
629   }\r
630 \r
631   bool operator==(Point p) const\r
632   {\r
633     return x == p.x && y == p.y;\r
634   }\r
635   bool operator!=(Point p) const\r
636   {\r
637     return !(*this == p);\r
638   }\r
639 };\r
640 \r
641 /**\r
642 * @brief Helper class representing size of rectangle object with usage of two integer values\r
643 */\r
644 struct DALI_ADAPTOR_API Size\r
645 {\r
646   int width  = 0;\r
647   int height = 0;\r
648 \r
649   Size() = default;\r
650 \r
651   Size(int w, int h)\r
652   : width(w),\r
653     height(h)\r
654   {\r
655   }\r
656 \r
657   bool operator==(Size p) const\r
658   {\r
659     return width == p.width && height == p.height;\r
660   }\r
661 \r
662   bool operator!=(Size p) const\r
663   {\r
664     return !(*this == p);\r
665   }\r
666 };\r
667 \r
668 /**\r
669  * @brief Helper class used to store data related with Accessibility::Text interface\r
670  * @see Dali::Accessibility::Text::GetTextAtOffset\r
671  * @see Dali::Accessibility::Text::GetRangeOfSelection\r
672  */\r
673 struct DALI_ADAPTOR_API Range\r
674 {\r
675   int32_t     startOffset = 0;\r
676   int32_t     endOffset   = 0;\r
677   std::string content;\r
678 \r
679   Range() = default;\r
680 \r
681   Range(size_t start, size_t end)\r
682   : startOffset(start),\r
683     endOffset(end)\r
684   {\r
685   }\r
686 \r
687   Range(size_t start, size_t end, std::string content)\r
688   : startOffset(start),\r
689     endOffset(end),\r
690     content(content)\r
691   {\r
692   }\r
693 };\r
694 \r
695 /**\r
696  * @brief Structure containing all values needed to invoke Accessible::DoGesture\r
697  * type : numerated gesture type\r
698  * startPositionX, startPositionY : point where gesture begins\r
699  * endPositionX, endPositionY : point where gesture ends\r
700  * state : enumerated state of gesture\r
701  * eventTime : time when event occured\r
702  * @see Dali::Accessibility::Accessible::DoGesture\r
703  */\r
704 struct DALI_ADAPTOR_API GestureInfo\r
705 {\r
706   GestureInfo() = default;\r
707   GestureInfo(Gesture type, int32_t startPositionX, int32_t endPositionX, int32_t startPositionY, int32_t endPositionY, GestureState state, uint32_t eventTime)\r
708   : type(type),\r
709     startPointX(startPositionX),\r
710     endPointX(endPositionX),\r
711     startPointY(startPositionY),\r
712     endPointY(endPositionY),\r
713     state(state),\r
714     eventTime(eventTime)\r
715   {\r
716   }\r
717 \r
718   Gesture      type{};\r
719   int32_t      startPointX{};\r
720   int32_t      endPointX{};\r
721   int32_t      startPointY{};\r
722   int32_t      endPointY{};\r
723   GestureState state{};\r
724   uint32_t     eventTime{};\r
725 };\r
726 \r
727 /**\r
728  * @brief Class representing accessibility relations\r
729  *\r
730  * Class connecting one source object with multiple target objects with usage\r
731  * of specific relation type.\r
732  *\r
733  * A remote target object (i.e. one belonging to a different process) can be\r
734  * represented in terms of a ProxyAccessible.\r
735  *\r
736  * @see Dali::Accessibility::Accessible::Accessible\r
737  * @see Dali::Accessibility::Accessible::RelationType\r
738  */\r
739 struct DALI_ADAPTOR_API Relation\r
740 {\r
741   Relation(RelationType relationType, const std::vector<Accessible*>& targets)\r
742   : mRelationType(relationType),\r
743     mTargets(targets)\r
744   {\r
745   }\r
746 \r
747   RelationType             mRelationType;\r
748   std::vector<Accessible*> mTargets;\r
749 };\r
750 \r
751 } // namespace Accessibility\r
752 } // namespace Dali\r
753 \r
754 #endif // DALI_ATSPI_ACCESSIBILITY_H\r