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