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