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