Flutter Linux Embedder
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
fl_accessible_node.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_SHELL_PLATFORM_LINUX_FL_ACCESSIBLE_NODE_H_
6 #define FLUTTER_SHELL_PLATFORM_LINUX_FL_ACCESSIBLE_NODE_H_
7 
8 #include <atk/atk.h>
9 #include <gio/gio.h>
10 
11 #include "flutter/shell/platform/embedder/embedder.h"
13 
14 G_BEGIN_DECLS
15 
16 // ATK g_autoptr macros weren't added until 2.37. Add them manually.
17 // https://gitlab.gnome.org/GNOME/atk/-/issues/10
18 #if !ATK_CHECK_VERSION(2, 37, 0)
19 G_DEFINE_AUTOPTR_CLEANUP_FUNC(AtkObject, g_object_unref)
20 #endif
21 
22 G_DECLARE_DERIVABLE_TYPE(FlAccessibleNode,
23  fl_accessible_node,
24  FL,
25  ACCESSIBLE_NODE,
26  AtkObject);
27 
28 /**
29  * FlAccessibleNode:
30  *
31  * #FlAccessibleNode is an object that exposes a Flutter accessibility node to
32  * ATK.
33  */
35  AtkObjectClass parent_class;
36 
37  void (*set_name)(FlAccessibleNode* node, const gchar* name);
38  void (*set_extents)(FlAccessibleNode* node,
39  gint x,
40  gint y,
41  gint width,
42  gint height);
43  void (*set_flags)(FlAccessibleNode* node, FlutterSemanticsFlag flags);
44  void (*set_actions)(FlAccessibleNode* node, FlutterSemanticsAction actions);
45  void (*set_value)(FlAccessibleNode* node, const gchar* value);
46  void (*set_text_selection)(FlAccessibleNode* node, gint base, gint extent);
47  void (*set_text_direction)(FlAccessibleNode* node,
48  FlutterTextDirection direction);
49 
50  void (*perform_action)(FlAccessibleNode* node,
51  FlutterSemanticsAction action,
52  GBytes* data);
53 };
54 
55 /**
56  * fl_accessible_node_new:
57  * @engine: the #FlEngine this node came from.
58  * @id: the semantics node ID this object represents.
59  *
60  * Creates a new accessibility object that exposes Flutter accessibility
61  * information to ATK.
62  *
63  * Returns: a new #FlAccessibleNode.
64  */
65 FlAccessibleNode* fl_accessible_node_new(FlEngine* engine, int32_t id);
66 
67 /**
68  * fl_accessible_node_set_parent:
69  * @node: an #FlAccessibleNode.
70  * @parent: an #AtkObject.
71  * @index: the index of this node in the parent.
72  *
73  * Sets the parent of this node. The parent can be changed at any time.
74  */
75 void fl_accessible_node_set_parent(FlAccessibleNode* node,
76  AtkObject* parent,
77  gint index);
78 
79 /**
80  * fl_accessible_node_set_children:
81  * @node: an #FlAccessibleNode.
82  * @children: (transfer none) (element-type AtkObject): a list of #AtkObject.
83  *
84  * Sets the children of this node. The children can be changed at any time.
85  */
86 void fl_accessible_node_set_children(FlAccessibleNode* node,
87  GPtrArray* children);
88 
89 /**
90  * fl_accessible_node_set_name:
91  * @node: an #FlAccessibleNode.
92  * @name: a node name.
93  *
94  * Sets the name of this node as reported to the a11y consumer.
95  */
96 void fl_accessible_node_set_name(FlAccessibleNode* node, const gchar* name);
97 
98 /**
99  * fl_accessible_node_set_extents:
100  * @node: an #FlAccessibleNode.
101  * @x: x co-ordinate of this node relative to its parent.
102  * @y: y co-ordinate of this node relative to its parent.
103  * @width: width of this node in pixels.
104  * @height: height of this node in pixels.
105  *
106  * Sets the position and size of this node.
107  */
108 void fl_accessible_node_set_extents(FlAccessibleNode* node,
109  gint x,
110  gint y,
111  gint width,
112  gint height);
113 
114 /**
115  * fl_accessible_node_set_flags:
116  * @node: an #FlAccessibleNode.
117  * @flags: the flags for this node.
118  *
119  * Sets the flags for this node.
120  */
121 void fl_accessible_node_set_flags(FlAccessibleNode* node,
122  FlutterSemanticsFlag flags);
123 
124 /**
125  * fl_accessible_node_set_actions:
126  * @node: an #FlAccessibleNode.
127  * @actions: the actions this node can perform.
128  *
129  * Sets the actions that this node can perform.
130  */
131 void fl_accessible_node_set_actions(FlAccessibleNode* node,
132  FlutterSemanticsAction actions);
133 
134 /**
135  * fl_accessible_node_set_value:
136  * @node: an #FlAccessibleNode.
137  * @value: a node value.
138  *
139  * Sets the value of this node.
140  */
141 void fl_accessible_node_set_value(FlAccessibleNode* node, const gchar* value);
142 
143 /**
144  * fl_accessible_node_set_text_selection:
145  * @node: an #FlAccessibleNode.
146  * @base: the position at which the text selection originates.
147  * @extent: the position at which the text selection terminates.
148  *
149  * Sets the text selection of this node.
150  */
151 void fl_accessible_node_set_text_selection(FlAccessibleNode* node,
152  gint base,
153  gint extent);
154 
155 /**
156  * fl_accessible_node_set_text_direction:
157  * @node: an #FlAccessibleNode.
158  * @direction: the direction of the text.
159  *
160  * Sets the text direction of this node.
161  */
162 void fl_accessible_node_set_text_direction(FlAccessibleNode* node,
163  FlutterTextDirection direction);
164 
165 /**
166  * fl_accessible_node_dispatch_action:
167  * @node: an #FlAccessibleNode.
168  * @action: the action being dispatched.
169  * @data: (allow-none): data associated with the action.
170  *
171  * Performs a semantic action for this node.
172  */
173 void fl_accessible_node_perform_action(FlAccessibleNode* node,
174  FlutterSemanticsAction action,
175  GBytes* data);
176 
177 G_END_DECLS
178 
179 #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_ACCESSIBLE_NODE_H_
fl_accessible_node_perform_action
void fl_accessible_node_perform_action(FlAccessibleNode *node, FlutterSemanticsAction action, GBytes *data)
Definition: fl_accessible_node.cc:580
fl_accessible_node_set_text_direction
void fl_accessible_node_set_text_direction(FlAccessibleNode *node, FlutterTextDirection direction)
Definition: fl_accessible_node.cc:572
_FlAccessibleNodeClass::set_text_selection
void(* set_text_selection)(FlAccessibleNode *node, gint base, gint extent)
Definition: fl_accessible_node.h:46
G_DECLARE_DERIVABLE_TYPE
G_BEGIN_DECLS G_DECLARE_DERIVABLE_TYPE(FlAccessibleNode, fl_accessible_node, FL, ACCESSIBLE_NODE, AtkObject)
_FlAccessibleNodeClass::set_extents
void(* set_extents)(FlAccessibleNode *node, gint x, gint y, gint width, gint height)
Definition: fl_accessible_node.h:38
_FlAccessibleNodeClass
Definition: fl_accessible_node.h:34
_FlAccessibleNodeClass::parent_class
AtkObjectClass parent_class
Definition: fl_accessible_node.h:35
fl_accessible_node_set_children
void fl_accessible_node_set_children(FlAccessibleNode *node, GPtrArray *children)
Definition: fl_accessible_node.cc:499
flags
FlutterSemanticsFlag flags
Definition: fl_accessible_node.cc:106
_FlAccessibleNodeClass::set_text_direction
void(* set_text_direction)(FlAccessibleNode *node, FlutterTextDirection direction)
Definition: fl_accessible_node.h:47
_FlAccessibleNodeClass::set_value
void(* set_value)(FlAccessibleNode *node, const gchar *value)
Definition: fl_accessible_node.h:45
fl_accessible_node_set_name
void fl_accessible_node_set_name(FlAccessibleNode *node, const gchar *name)
Definition: fl_accessible_node.cc:526
fl_accessible_node_new
FlAccessibleNode * fl_accessible_node_new(FlEngine *engine, int32_t id)
Definition: fl_accessible_node.cc:482
_FlAccessibleNodeClass::set_name
void(* set_name)(FlAccessibleNode *node, const gchar *name)
Definition: fl_accessible_node.h:37
_FlAccessibleNodeClass::perform_action
void(* perform_action)(FlAccessibleNode *node, FlutterSemanticsAction action, GBytes *data)
Definition: fl_accessible_node.h:50
FL
FL
Definition: fl_binary_messenger.cc:27
fl_accessible_node_set_parent
void fl_accessible_node_set_parent(FlAccessibleNode *node, AtkObject *parent, gint index)
Definition: fl_accessible_node.cc:488
height
const uint8_t uint32_t uint32_t * height
Definition: fl_pixel_buffer_texture_test.cc:39
fl_accessible_node_set_extents
void fl_accessible_node_set_extents(FlAccessibleNode *node, gint x, gint y, gint width, gint height)
Definition: fl_accessible_node.cc:532
fl_engine.h
_FlAccessibleNodeClass::set_actions
void(* set_actions)(FlAccessibleNode *node, FlutterSemanticsAction actions)
Definition: fl_accessible_node.h:44
fl_accessible_node_set_flags
void fl_accessible_node_set_flags(FlAccessibleNode *node, FlutterSemanticsFlag flags)
Definition: fl_accessible_node.cc:543
fl_accessible_node_set_text_selection
void fl_accessible_node_set_text_selection(FlAccessibleNode *node, gint base, gint extent)
Definition: fl_accessible_node.cc:563
width
const uint8_t uint32_t * width
Definition: fl_pixel_buffer_texture_test.cc:38
_FlAccessibleNodeClass::set_flags
void(* set_flags)(FlAccessibleNode *node, FlutterSemanticsFlag flags)
Definition: fl_accessible_node.h:43
fl_accessible_node_set_actions
void fl_accessible_node_set_actions(FlAccessibleNode *node, FlutterSemanticsAction actions)
Definition: fl_accessible_node.cc:550
fl_accessible_node_set_value
void fl_accessible_node_set_value(FlAccessibleNode *node, const gchar *value)
Definition: fl_accessible_node.cc:557
value
uint8_t value
Definition: fl_standard_message_codec.cc:36