1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module atk.c.types;
26 
27 public import glib.c.types;
28 public import gobject.c.types;
29 
30 
31 /**
32  * This is a singly-linked list (a #GSList) of #AtkAttribute. It is
33  * used by atk_text_get_run_attributes(),
34  * atk_text_get_default_attributes(),
35  * atk_editable_text_set_run_attributes(),
36  * atk_document_get_attributes() and atk_object_get_attributes()
37  */
38 public alias GSList AtkAttributeSet;
39 
40 public alias ulong AtkState;
41 
42 /**
43  * Specifies how xy coordinates are to be interpreted. Used by functions such
44  * as atk_component_get_position() and atk_text_get_character_extents()
45  */
46 public enum AtkCoordType
47 {
48 	/**
49 	 * specifies xy coordinates relative to the screen
50 	 */
51 	SCREEN = 0,
52 	/**
53 	 * specifies xy coordinates relative to the widget's
54 	 * top-level window
55 	 */
56 	WINDOW = 1,
57 }
58 alias AtkCoordType CoordType;
59 
60 /**
61  * Describes the type of link
62  */
63 public enum AtkHyperlinkStateFlags
64 {
65 	/**
66 	 * Link is inline
67 	 */
68 	INLINE = 1,
69 }
70 alias AtkHyperlinkStateFlags HyperlinkStateFlags;
71 
72 /**
73  * Specifies the type of a keyboard evemt.
74  */
75 public enum AtkKeyEventType
76 {
77 	/**
78 	 * specifies a key press event
79 	 */
80 	PRESS = 0,
81 	/**
82 	 * specifies a key release event
83 	 */
84 	RELEASE = 1,
85 	/**
86 	 * Not a valid value; specifies end of enumeration
87 	 */
88 	LAST_DEFINED = 2,
89 }
90 alias AtkKeyEventType KeyEventType;
91 
92 /**
93  * Describes the layer of a component
94  *
95  * These enumerated "layer values" are used when determining which UI
96  * rendering layer a component is drawn into, which can help in making
97  * determinations of when components occlude one another.
98  */
99 public enum AtkLayer
100 {
101 	/**
102 	 * The object does not have a layer
103 	 */
104 	INVALID = 0,
105 	/**
106 	 * This layer is reserved for the desktop background
107 	 */
108 	BACKGROUND = 1,
109 	/**
110 	 * This layer is used for Canvas components
111 	 */
112 	CANVAS = 2,
113 	/**
114 	 * This layer is normally used for components
115 	 */
116 	WIDGET = 3,
117 	/**
118 	 * This layer is used for layered components
119 	 */
120 	MDI = 4,
121 	/**
122 	 * This layer is used for popup components, such as menus
123 	 */
124 	POPUP = 5,
125 	/**
126 	 * This layer is reserved for future use.
127 	 */
128 	OVERLAY = 6,
129 	/**
130 	 * This layer is used for toplevel windows.
131 	 */
132 	WINDOW = 7,
133 }
134 alias AtkLayer Layer;
135 
136 /**
137  * Describes the type of the relation
138  */
139 public enum AtkRelationType
140 {
141 	/**
142 	 * Not used, represens "no relationship" or an error condition.
143 	 */
144 	NULL = 0,
145 	/**
146 	 * Indicates an object controlled by one or more target objects.
147 	 */
148 	CONTROLLED_BY = 1,
149 	/**
150 	 * Indicates an object is an controller for one or more target objects.
151 	 */
152 	CONTROLLER_FOR = 2,
153 	/**
154 	 * Indicates an object is a label for one or more target objects.
155 	 */
156 	LABEL_FOR = 3,
157 	/**
158 	 * Indicates an object is labelled by one or more target objects.
159 	 */
160 	LABELLED_BY = 4,
161 	/**
162 	 * Indicates an object is a member of a group of one or more target objects.
163 	 */
164 	MEMBER_OF = 5,
165 	/**
166 	 * Indicates an object is a cell in a treetable which is displayed because a cell in the same column is expanded and identifies that cell.
167 	 */
168 	NODE_CHILD_OF = 6,
169 	/**
170 	 * Indicates that the object has content that flows logically to another
171 	 * AtkObject in a sequential way, (for instance text-flow).
172 	 */
173 	FLOWS_TO = 7,
174 	/**
175 	 * Indicates that the object has content that flows logically from
176 	 * another AtkObject in a sequential way, (for instance text-flow).
177 	 */
178 	FLOWS_FROM = 8,
179 	/**
180 	 * Indicates a subwindow attached to a component but otherwise has no connection in  the UI heirarchy to that component.
181 	 */
182 	SUBWINDOW_OF = 9,
183 	/**
184 	 * Indicates that the object visually embeds
185 	 * another object's content, i.e. this object's content flows around
186 	 * another's content.
187 	 */
188 	EMBEDS = 10,
189 	/**
190 	 * Reciprocal of %ATK_RELATION_EMBEDS, indicates that
191 	 * this object's content is visualy embedded in another object.
192 	 */
193 	EMBEDDED_BY = 11,
194 	/**
195 	 * Indicates that an object is a popup for another object.
196 	 */
197 	POPUP_FOR = 12,
198 	/**
199 	 * Indicates that an object is a parent window of another object.
200 	 */
201 	PARENT_WINDOW_OF = 13,
202 	/**
203 	 * Reciprocal of %ATK_RELATION_DESCRIPTION_FOR. Indicates that one
204 	 * or more target objects provide descriptive information about this object. This relation
205 	 * type is most appropriate for information that is not essential as its presentation may
206 	 * be user-configurable and/or limited to an on-demand mechanism such as an assistive
207 	 * technology command. For brief, essential information such as can be found in a widget's
208 	 * on-screen label, use %ATK_RELATION_LABELLED_BY. For an on-screen error message, use
209 	 * %ATK_RELATION_ERROR_MESSAGE. For lengthy extended descriptive information contained in
210 	 * an on-screen object, consider using %ATK_RELATION_DETAILS as assistive technologies may
211 	 * provide a means for the user to navigate to objects containing detailed descriptions so
212 	 * that their content can be more closely reviewed.
213 	 */
214 	DESCRIBED_BY = 14,
215 	/**
216 	 * Reciprocal of %ATK_RELATION_DESCRIBED_BY. Indicates that this
217 	 * object provides descriptive information about the target object(s). See also
218 	 * %ATK_RELATION_DETAILS_FOR and %ATK_RELATION_ERROR_FOR.
219 	 */
220 	DESCRIPTION_FOR = 15,
221 	/**
222 	 * Indicates an object is a cell in a treetable and is expanded to display other cells in the same column.
223 	 */
224 	NODE_PARENT_OF = 16,
225 	/**
226 	 * Reciprocal of %ATK_RELATION_DETAILS_FOR. Indicates that this object
227 	 * has a detailed or extended description, the contents of which can be found in the target
228 	 * object(s). This relation type is most appropriate for information that is sufficiently
229 	 * lengthy as to make navigation to the container of that information desirable. For less
230 	 * verbose information suitable for announcement only, see %ATK_RELATION_DESCRIBED_BY. If
231 	 * the detailed information describes an error condition, %ATK_RELATION_ERROR_FOR should be
232 	 * used instead. @Since: ATK-2.26.
233 	 */
234 	DETAILS = 17,
235 	/**
236 	 * Reciprocal of %ATK_RELATION_DETAILS. Indicates that this object
237 	 * provides a detailed or extended description about the target object(s). See also
238 	 * %ATK_RELATION_DESCRIPTION_FOR and %ATK_RELATION_ERROR_FOR. @Since: ATK-2.26.
239 	 */
240 	DETAILS_FOR = 18,
241 	/**
242 	 * Reciprocal of %ATK_RELATION_ERROR_FOR. Indicates that this object
243 	 * has one or more errors, the nature of which is described in the contents of the target
244 	 * object(s). Objects that have this relation type should also contain %ATK_STATE_INVALID_ENTRY
245 	 * in their #AtkStateSet. @Since: ATK-2.26.
246 	 */
247 	ERROR_MESSAGE = 19,
248 	/**
249 	 * Reciprocal of %ATK_RELATION_ERROR_MESSAGE. Indicates that this object
250 	 * contains an error message describing an invalid condition in the target object(s). @Since:
251 	 * ATK_2.26.
252 	 */
253 	ERROR_FOR = 20,
254 	/**
255 	 * Not used, this value indicates the end of the enumeration.
256 	 */
257 	LAST_DEFINED = 21,
258 }
259 alias AtkRelationType RelationType;
260 
261 /**
262  * Describes the role of an object
263  *
264  * These are the built-in enumerated roles that UI components can have in
265  * ATK.  Other roles may be added at runtime, so an AtkRole >=
266  * ATK_ROLE_LAST_DEFINED is not necessarily an error.
267  */
268 public enum AtkRole
269 {
270 	/**
271 	 * Invalid role
272 	 */
273 	INVALID = 0,
274 	/**
275 	 * A label which represents an accelerator
276 	 */
277 	ACCELERATOR_LABEL = 1,
278 	/**
279 	 * An object which is an alert to the user. Assistive Technologies typically respond to ATK_ROLE_ALERT by reading the entire onscreen contents of containers advertising this role.  Should be used for warning dialogs, etc.
280 	 */
281 	ALERT = 2,
282 	/**
283 	 * An object which is an animated image
284 	 */
285 	ANIMATION = 3,
286 	/**
287 	 * An arrow in one of the four cardinal directions
288 	 */
289 	ARROW = 4,
290 	/**
291 	 * An object that displays a calendar and allows the user to select a date
292 	 */
293 	CALENDAR = 5,
294 	/**
295 	 * An object that can be drawn into and is used to trap events
296 	 */
297 	CANVAS = 6,
298 	/**
299 	 * A choice that can be checked or unchecked and provides a separate indicator for the current state
300 	 */
301 	CHECK_BOX = 7,
302 	/**
303 	 * A menu item with a check box
304 	 */
305 	CHECK_MENU_ITEM = 8,
306 	/**
307 	 * A specialized dialog that lets the user choose a color
308 	 */
309 	COLOR_CHOOSER = 9,
310 	/**
311 	 * The header for a column of data
312 	 */
313 	COLUMN_HEADER = 10,
314 	/**
315 	 * A collapsible list of choices the user can select from
316 	 */
317 	COMBO_BOX = 11,
318 	/**
319 	 * An object whose purpose is to allow a user to edit a date
320 	 */
321 	DATE_EDITOR = 12,
322 	/**
323 	 * An inconifed internal frame within a DESKTOP_PANE
324 	 */
325 	DESKTOP_ICON = 13,
326 	/**
327 	 * A pane that supports internal frames and iconified versions of those internal frames
328 	 */
329 	DESKTOP_FRAME = 14,
330 	/**
331 	 * An object whose purpose is to allow a user to set a value
332 	 */
333 	DIAL = 15,
334 	/**
335 	 * A top level window with title bar and a border
336 	 */
337 	DIALOG = 16,
338 	/**
339 	 * A pane that allows the user to navigate through and select the contents of a directory
340 	 */
341 	DIRECTORY_PANE = 17,
342 	/**
343 	 * An object used for drawing custom user interface elements
344 	 */
345 	DRAWING_AREA = 18,
346 	/**
347 	 * A specialized dialog that lets the user choose a file
348 	 */
349 	FILE_CHOOSER = 19,
350 	/**
351 	 * A object that fills up space in a user interface
352 	 */
353 	FILLER = 20,
354 	/**
355 	 * A specialized dialog that lets the user choose a font
356 	 */
357 	FONT_CHOOSER = 21,
358 	/**
359 	 * A top level window with a title bar, border, menubar, etc.
360 	 */
361 	FRAME = 22,
362 	/**
363 	 * A pane that is guaranteed to be painted on top of all panes beneath it
364 	 */
365 	GLASS_PANE = 23,
366 	/**
367 	 * A document container for HTML, whose children represent the document content
368 	 */
369 	HTML_CONTAINER = 24,
370 	/**
371 	 * A small fixed size picture, typically used to decorate components
372 	 */
373 	ICON = 25,
374 	/**
375 	 * An object whose primary purpose is to display an image
376 	 */
377 	IMAGE = 26,
378 	/**
379 	 * A frame-like object that is clipped by a desktop pane
380 	 */
381 	INTERNAL_FRAME = 27,
382 	/**
383 	 * An object used to present an icon or short string in an interface
384 	 */
385 	LABEL = 28,
386 	/**
387 	 * A specialized pane that allows its children to be drawn in layers, providing a form of stacking order
388 	 */
389 	LAYERED_PANE = 29,
390 	/**
391 	 * An object that presents a list of objects to the user and allows the user to select one or more of them
392 	 */
393 	LIST = 30,
394 	/**
395 	 * An object that represents an element of a list
396 	 */
397 	LIST_ITEM = 31,
398 	/**
399 	 * An object usually found inside a menu bar that contains a list of actions the user can choose from
400 	 */
401 	MENU = 32,
402 	/**
403 	 * An object usually drawn at the top of the primary dialog box of an application that contains a list of menus the user can choose from
404 	 */
405 	MENU_BAR = 33,
406 	/**
407 	 * An object usually contained in a menu that presents an action the user can choose
408 	 */
409 	MENU_ITEM = 34,
410 	/**
411 	 * A specialized pane whose primary use is inside a DIALOG
412 	 */
413 	OPTION_PANE = 35,
414 	/**
415 	 * An object that is a child of a page tab list
416 	 */
417 	PAGE_TAB = 36,
418 	/**
419 	 * An object that presents a series of panels (or page tabs), one at a time, through some mechanism provided by the object
420 	 */
421 	PAGE_TAB_LIST = 37,
422 	/**
423 	 * A generic container that is often used to group objects
424 	 */
425 	PANEL = 38,
426 	/**
427 	 * A text object uses for passwords, or other places where the text content is not shown visibly to the user
428 	 */
429 	PASSWORD_TEXT = 39,
430 	/**
431 	 * A temporary window that is usually used to offer the user a list of choices, and then hides when the user selects one of those choices
432 	 */
433 	POPUP_MENU = 40,
434 	/**
435 	 * An object used to indicate how much of a task has been completed
436 	 */
437 	PROGRESS_BAR = 41,
438 	/**
439 	 * An object the user can manipulate to tell the application to do something
440 	 */
441 	PUSH_BUTTON = 42,
442 	/**
443 	 * A specialized check box that will cause other radio buttons in the same group to become unchecked when this one is checked
444 	 */
445 	RADIO_BUTTON = 43,
446 	/**
447 	 * A check menu item which belongs to a group. At each instant exactly one of the radio menu items from a group is selected
448 	 */
449 	RADIO_MENU_ITEM = 44,
450 	/**
451 	 * A specialized pane that has a glass pane and a layered pane as its children
452 	 */
453 	ROOT_PANE = 45,
454 	/**
455 	 * The header for a row of data
456 	 */
457 	ROW_HEADER = 46,
458 	/**
459 	 * An object usually used to allow a user to incrementally view a large amount of data.
460 	 */
461 	SCROLL_BAR = 47,
462 	/**
463 	 * An object that allows a user to incrementally view a large amount of information
464 	 */
465 	SCROLL_PANE = 48,
466 	/**
467 	 * An object usually contained in a menu to provide a visible and logical separation of the contents in a menu
468 	 */
469 	SEPARATOR = 49,
470 	/**
471 	 * An object that allows the user to select from a bounded range
472 	 */
473 	SLIDER = 50,
474 	/**
475 	 * A specialized panel that presents two other panels at the same time
476 	 */
477 	SPLIT_PANE = 51,
478 	/**
479 	 * An object used to get an integer or floating point number from the user
480 	 */
481 	SPIN_BUTTON = 52,
482 	/**
483 	 * An object which reports messages of minor importance to the user
484 	 */
485 	STATUSBAR = 53,
486 	/**
487 	 * An object used to represent information in terms of rows and columns
488 	 */
489 	TABLE = 54,
490 	/**
491 	 * A cell in a table
492 	 */
493 	TABLE_CELL = 55,
494 	/**
495 	 * The header for a column of a table
496 	 */
497 	TABLE_COLUMN_HEADER = 56,
498 	/**
499 	 * The header for a row of a table
500 	 */
501 	TABLE_ROW_HEADER = 57,
502 	/**
503 	 * A menu item used to tear off and reattach its menu
504 	 */
505 	TEAR_OFF_MENU_ITEM = 58,
506 	/**
507 	 * An object that represents an accessible terminal.  @Since: ATK-0.6
508 	 */
509 	TERMINAL = 59,
510 	/**
511 	 * An interactive widget that supports multiple lines of text and
512 	 * optionally accepts user input, but whose purpose is not to solicit user input.
513 	 * Thus ATK_ROLE_TEXT is appropriate for the text view in a plain text editor
514 	 * but inappropriate for an input field in a dialog box or web form. For widgets
515 	 * whose purpose is to solicit input from the user, see ATK_ROLE_ENTRY and
516 	 * ATK_ROLE_PASSWORD_TEXT. For generic objects which display a brief amount of
517 	 * textual information, see ATK_ROLE_STATIC.
518 	 */
519 	TEXT = 60,
520 	/**
521 	 * A specialized push button that can be checked or unchecked, but does not provide a separate indicator for the current state
522 	 */
523 	TOGGLE_BUTTON = 61,
524 	/**
525 	 * A bar or palette usually composed of push buttons or toggle buttons
526 	 */
527 	TOOL_BAR = 62,
528 	/**
529 	 * An object that provides information about another object
530 	 */
531 	TOOL_TIP = 63,
532 	/**
533 	 * An object used to represent hierarchical information to the user
534 	 */
535 	TREE = 64,
536 	/**
537 	 * An object capable of expanding and collapsing rows as well as showing multiple columns of data.   @Since: ATK-0.7
538 	 */
539 	TREE_TABLE = 65,
540 	/**
541 	 * The object contains some Accessible information, but its role is not known
542 	 */
543 	UNKNOWN = 66,
544 	/**
545 	 * An object usually used in a scroll pane
546 	 */
547 	VIEWPORT = 67,
548 	/**
549 	 * A top level window with no title or border.
550 	 */
551 	WINDOW = 68,
552 	/**
553 	 * An object that serves as a document header. @Since: ATK-1.1.1
554 	 */
555 	HEADER = 69,
556 	/**
557 	 * An object that serves as a document footer.  @Since: ATK-1.1.1
558 	 */
559 	FOOTER = 70,
560 	/**
561 	 * An object which is contains a paragraph of text content.   @Since: ATK-1.1.1
562 	 */
563 	PARAGRAPH = 71,
564 	/**
565 	 * An object which describes margins and tab stops, etc. for text objects which it controls (should have CONTROLLER_FOR relation to such).   @Since: ATK-1.1.1
566 	 */
567 	RULER = 72,
568 	/**
569 	 * The object is an application object, which may contain @ATK_ROLE_FRAME objects or other types of accessibles.  The root accessible of any application's ATK hierarchy should have ATK_ROLE_APPLICATION.   @Since: ATK-1.1.4
570 	 */
571 	APPLICATION = 73,
572 	/**
573 	 * The object is a dialog or list containing items for insertion into an entry widget, for instance a list of words for completion of a text entry.   @Since: ATK-1.3
574 	 */
575 	AUTOCOMPLETE = 74,
576 	/**
577 	 * The object is an editable text object in a toolbar.  @Since: ATK-1.5
578 	 */
579 	EDIT_BAR = 75,
580 	/**
581 	 * The object is an embedded container within a document or panel.  This role is a grouping "hint" indicating that the contained objects share a context.  @Since: ATK-1.7.2
582 	 */
583 	EMBEDDED = 76,
584 	/**
585 	 * The object is a component whose textual content may be entered or modified by the user, provided @ATK_STATE_EDITABLE is present.   @Since: ATK-1.11
586 	 */
587 	ENTRY = 77,
588 	/**
589 	 * The object is a graphical depiction of quantitative data. It may contain multiple subelements whose attributes and/or description may be queried to obtain both the quantitative data and information about how the data is being presented. The LABELLED_BY relation is particularly important in interpreting objects of this type, as is the accessible-description property.  @Since: ATK-1.11
590 	 */
591 	CHART = 78,
592 	/**
593 	 * The object contains descriptive information, usually textual, about another user interface element such as a table, chart, or image.  @Since: ATK-1.11
594 	 */
595 	CAPTION = 79,
596 	/**
597 	 * The object is a visual frame or container which contains a view of document content. Document frames may occur within another Document instance, in which case the second document may be said to be embedded in the containing instance. HTML frames are often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement the Document interface.  @Since: ATK-1.11
598 	 */
599 	DOCUMENT_FRAME = 80,
600 	/**
601 	 * The object serves as a heading for content which follows it in a document. The 'heading level' of the heading, if availabe, may be obtained by querying the object's attributes.
602 	 */
603 	HEADING = 81,
604 	/**
605 	 * The object is a containing instance which encapsulates a page of information. @ATK_ROLE_PAGE is used in documents and content which support a paginated navigation model.  @Since: ATK-1.11
606 	 */
607 	PAGE = 82,
608 	/**
609 	 * The object is a containing instance of document content which constitutes a particular 'logical' section of the document. The type of content within a section, and the nature of the section division itself, may be obtained by querying the object's attributes. Sections may be nested. @Since: ATK-1.11
610 	 */
611 	SECTION = 83,
612 	/**
613 	 * The object is redundant with another object in the hierarchy, and is exposed for purely technical reasons.  Objects of this role should normally be ignored by clients. @Since: ATK-1.11
614 	 */
615 	REDUNDANT_OBJECT = 84,
616 	/**
617 	 * The object is a container for form controls, for instance as part of a
618 	 * web form or user-input form within a document.  This role is primarily a tag/convenience for
619 	 * clients when navigating complex documents, it is not expected that ordinary GUI containers will
620 	 * always have ATK_ROLE_FORM. @Since: ATK-1.12.0
621 	 */
622 	FORM = 85,
623 	/**
624 	 * The object is a hypertext anchor, i.e. a "link" in a
625 	 * hypertext document.  Such objects are distinct from 'inline'
626 	 * content which may also use the Hypertext/Hyperlink interfaces
627 	 * to indicate the range/location within a text object where
628 	 * an inline or embedded object lies.  @Since: ATK-1.12.1
629 	 */
630 	LINK = 86,
631 	/**
632 	 * The object is a window or similar viewport
633 	 * which is used to allow composition or input of a 'complex character',
634 	 * in other words it is an "input method window." @Since: ATK-1.12.1
635 	 */
636 	INPUT_METHOD_WINDOW = 87,
637 	/**
638 	 * A row in a table.  @Since: ATK-2.1.0
639 	 */
640 	TABLE_ROW = 88,
641 	/**
642 	 * An object that represents an element of a tree.  @Since: ATK-2.1.0
643 	 */
644 	TREE_ITEM = 89,
645 	/**
646 	 * A document frame which contains a spreadsheet.  @Since: ATK-2.1.0
647 	 */
648 	DOCUMENT_SPREADSHEET = 90,
649 	/**
650 	 * A document frame which contains a presentation or slide content.  @Since: ATK-2.1.0
651 	 */
652 	DOCUMENT_PRESENTATION = 91,
653 	/**
654 	 * A document frame which contains textual content, such as found in a word processing application.  @Since: ATK-2.1.0
655 	 */
656 	DOCUMENT_TEXT = 92,
657 	/**
658 	 * A document frame which contains HTML or other markup suitable for display in a web browser.  @Since: ATK-2.1.0
659 	 */
660 	DOCUMENT_WEB = 93,
661 	/**
662 	 * A document frame which contains email content to be displayed or composed either in plain text or HTML.  @Since: ATK-2.1.0
663 	 */
664 	DOCUMENT_EMAIL = 94,
665 	/**
666 	 * An object found within a document and designed to present a comment, note, or other annotation. In some cases, this object might not be visible until activated.  @Since: ATK-2.1.0
667 	 */
668 	COMMENT = 95,
669 	/**
670 	 * A non-collapsible list of choices the user can select from. @Since: ATK-2.1.0
671 	 */
672 	LIST_BOX = 96,
673 	/**
674 	 * A group of related widgets. This group typically has a label. @Since: ATK-2.1.0
675 	 */
676 	GROUPING = 97,
677 	/**
678 	 * An image map object. Usually a graphic with multiple hotspots, where each hotspot can be activated resulting in the loading of another document or section of a document. @Since: ATK-2.1.0
679 	 */
680 	IMAGE_MAP = 98,
681 	/**
682 	 * A transitory object designed to present a message to the user, typically at the desktop level rather than inside a particular application.  @Since: ATK-2.1.0
683 	 */
684 	NOTIFICATION = 99,
685 	/**
686 	 * An object designed to present a message to the user within an existing window. @Since: ATK-2.1.0
687 	 */
688 	INFO_BAR = 100,
689 	/**
690 	 * A bar that serves as a level indicator to, for instance, show the strength of a password or the state of a battery.  @Since: ATK-2.7.3
691 	 */
692 	LEVEL_BAR = 101,
693 	/**
694 	 * A bar that serves as the title of a window or a
695 	 * dialog. @Since: ATK-2.12
696 	 */
697 	TITLE_BAR = 102,
698 	/**
699 	 * An object which contains a text section
700 	 * that is quoted from another source. @Since: ATK-2.12
701 	 */
702 	BLOCK_QUOTE = 103,
703 	/**
704 	 * An object which represents an audio element. @Since: ATK-2.12
705 	 */
706 	AUDIO = 104,
707 	/**
708 	 * An object which represents a video element. @Since: ATK-2.12
709 	 */
710 	VIDEO = 105,
711 	/**
712 	 * A definition of a term or concept. @Since: ATK-2.12
713 	 */
714 	DEFINITION = 106,
715 	/**
716 	 * A section of a page that consists of a
717 	 * composition that forms an independent part of a document, page, or
718 	 * site. Examples: A blog entry, a news story, a forum post. @Since:
719 	 * ATK-2.12
720 	 */
721 	ARTICLE = 107,
722 	/**
723 	 * A region of a web page intended as a
724 	 * navigational landmark. This is designed to allow Assistive
725 	 * Technologies to provide quick navigation among key regions within a
726 	 * document. @Since: ATK-2.12
727 	 */
728 	LANDMARK = 108,
729 	/**
730 	 * A text widget or container holding log content, such
731 	 * as chat history and error logs. In this role there is a
732 	 * relationship between the arrival of new items in the log and the
733 	 * reading order. The log contains a meaningful sequence and new
734 	 * information is added only to the end of the log, not at arbitrary
735 	 * points. @Since: ATK-2.12
736 	 */
737 	LOG = 109,
738 	/**
739 	 * A container where non-essential information
740 	 * changes frequently. Common usages of marquee include stock tickers
741 	 * and ad banners. The primary difference between a marquee and a log
742 	 * is that logs usually have a meaningful order or sequence of
743 	 * important content changes. @Since: ATK-2.12
744 	 */
745 	MARQUEE = 110,
746 	/**
747 	 * A text widget or container that holds a mathematical
748 	 * expression. @Since: ATK-2.12
749 	 */
750 	MATH = 111,
751 	/**
752 	 * A widget whose purpose is to display a rating,
753 	 * such as the number of stars associated with a song in a media
754 	 * player. Objects of this role should also implement
755 	 * AtkValue. @Since: ATK-2.12
756 	 */
757 	RATING = 112,
758 	/**
759 	 * An object containing a numerical counter which
760 	 * indicates an amount of elapsed time from a start point, or the time
761 	 * remaining until an end point. @Since: ATK-2.12
762 	 */
763 	TIMER = 113,
764 	/**
765 	 * An object that represents a list of
766 	 * term-value groups. A term-value group represents a individual
767 	 * description and consist of one or more names
768 	 * (ATK_ROLE_DESCRIPTION_TERM) followed by one or more values
769 	 * (ATK_ROLE_DESCRIPTION_VALUE). For each list, there should not be
770 	 * more than one group with the same term name. @Since: ATK-2.12
771 	 */
772 	DESCRIPTION_LIST = 114,
773 	/**
774 	 * An object that represents the term, or
775 	 * name, part of a term-description group in a description
776 	 * list. @Since: ATK-2.12
777 	 */
778 	DESCRIPTION_TERM = 115,
779 	/**
780 	 * An object that represents the
781 	 * description, definition or value of a term-description group in a
782 	 * description list. The values within a group are alternatives,
783 	 * meaning that you can have several ATK_ROLE_DESCRIPTION_VALUE for a
784 	 * given ATK_ROLE_DESCRIPTION_TERM. @Since: ATK-2.12
785 	 */
786 	DESCRIPTION_VALUE = 116,
787 	/**
788 	 * A generic non-container object whose purpose is to display a
789 	 * brief amount of information to the user and whose role is known by the
790 	 * implementor but lacks semantic value for the user. Examples in which
791 	 * ATK_ROLE_STATIC is appropriate include the message displayed in a message box
792 	 * and an image used as an alternative means to display text. ATK_ROLE_STATIC
793 	 * should not be applied to widgets which are traditionally interactive, objects
794 	 * which display a significant amount of content, or any object which has an
795 	 * accessible relation pointing to another object. Implementors should expose the
796 	 * displayed information through the accessible name of the object. If doing so seems
797 	 * inappropriate, it may indicate that a different role should be used. For
798 	 * labels which describe another widget, see ATK_ROLE_LABEL. For text views, see
799 	 * ATK_ROLE_TEXT. For generic containers, see ATK_ROLE_PANEL. For objects whose
800 	 * role is not known by the implementor, see ATK_ROLE_UNKNOWN. @Since: ATK-2.16.
801 	 */
802 	STATIC = 117,
803 	/**
804 	 * An object that represents a mathematical fraction.
805 	 */
806 	MATH_FRACTION = 118,
807 	/**
808 	 * An object that represents a mathematical expression
809 	 * displayed with a radical. @Since: ATK-2.16.
810 	 */
811 	MATH_ROOT = 119,
812 	/**
813 	 * An object that contains text that is displayed as a
814 	 * subscript. @Since: ATK-2.16.
815 	 */
816 	SUBSCRIPT = 120,
817 	/**
818 	 * An object that contains text that is displayed as a
819 	 * superscript. @Since: ATK-2.16.
820 	 */
821 	SUPERSCRIPT = 121,
822 	/**
823 	 * An object that contains the text of a footnote. @Since: ATK-2.26.
824 	 */
825 	FOOTNOTE = 122,
826 	/**
827 	 * not a valid role, used for finding end of the enumeration
828 	 */
829 	LAST_DEFINED = 123,
830 }
831 alias AtkRole Role;
832 
833 /**
834  * The possible types of states of an object
835  */
836 public enum AtkStateType
837 {
838 	/**
839 	 * Indicates an invalid state - probably an error condition.
840 	 */
841 	INVALID = 0,
842 	/**
843 	 * Indicates a window is currently the active window, or an object is the active subelement within a container or table. ATK_STATE_ACTIVE should not be used for objects which have ATK_STATE_FOCUSABLE or ATK_STATE_SELECTABLE: Those objects should use ATK_STATE_FOCUSED and ATK_STATE_SELECTED respectively. ATK_STATE_ACTIVE is a means to indicate that an object which is not focusable and not selectable is the currently-active item within its parent container.
844 	 */
845 	ACTIVE = 1,
846 	/**
847 	 * Indicates that the object is 'armed', i.e. will be activated by if a pointer button-release event occurs within its bounds.  Buttons often enter this state when a pointer click occurs within their bounds, as a precursor to activation. ATK_STATE_ARMED has been deprecated since ATK-2.16 and should not be used in newly-written code.
848 	 */
849 	ARMED = 2,
850 	/**
851 	 * Indicates the current object is busy, i.e. onscreen representation is in the process of changing, or the object is temporarily unavailable for interaction due to activity already in progress.  This state may be used by implementors of Document to indicate that content loading is underway.  It also may indicate other 'pending' conditions; clients may wish to interrogate this object when the ATK_STATE_BUSY flag is removed.
852 	 */
853 	BUSY = 3,
854 	/**
855 	 * Indicates this object is currently checked, for instance a checkbox is 'non-empty'.
856 	 */
857 	CHECKED = 4,
858 	/**
859 	 * Indicates that this object no longer has a valid backing widget (for instance, if its peer object has been destroyed)
860 	 */
861 	DEFUNCT = 5,
862 	/**
863 	 * Indicates that this object can contain text, and that the
864 	 * user can change the textual contents of this object by editing those contents
865 	 * directly. For an object which is expected to be editable due to its type, but
866 	 * which cannot be edited due to the application or platform preventing the user
867 	 * from doing so, that object's #AtkStateSet should lack ATK_STATE_EDITABLE and
868 	 * should contain ATK_STATE_READ_ONLY.
869 	 */
870 	EDITABLE = 6,
871 	/**
872 	 * Indicates that this object is enabled, i.e. that it currently reflects some application state. Objects that are "greyed out" may lack this state, and may lack the STATE_SENSITIVE if direct user interaction cannot cause them to acquire STATE_ENABLED. See also: ATK_STATE_SENSITIVE
873 	 */
874 	ENABLED = 7,
875 	/**
876 	 * Indicates this object allows progressive disclosure of its children
877 	 */
878 	EXPANDABLE = 8,
879 	/**
880 	 * Indicates this object its expanded - see ATK_STATE_EXPANDABLE above
881 	 */
882 	EXPANDED = 9,
883 	/**
884 	 * Indicates this object can accept keyboard focus, which means all events resulting from typing on the keyboard will normally be passed to it when it has focus
885 	 */
886 	FOCUSABLE = 10,
887 	/**
888 	 * Indicates this object currently has the keyboard focus
889 	 */
890 	FOCUSED = 11,
891 	/**
892 	 * Indicates the orientation of this object is horizontal; used, for instance, by objects of ATK_ROLE_SCROLL_BAR.  For objects where vertical/horizontal orientation is especially meaningful.
893 	 */
894 	HORIZONTAL = 12,
895 	/**
896 	 * Indicates this object is minimized and is represented only by an icon
897 	 */
898 	ICONIFIED = 13,
899 	/**
900 	 * Indicates something must be done with this object before the user can interact with an object in a different window
901 	 */
902 	MODAL = 14,
903 	/**
904 	 * Indicates this (text) object can contain multiple lines of text
905 	 */
906 	MULTI_LINE = 15,
907 	/**
908 	 * Indicates this object allows more than one of its children to be selected at the same time, or in the case of text objects, that the object supports non-contiguous text selections.
909 	 */
910 	MULTISELECTABLE = 16,
911 	/**
912 	 * Indicates this object paints every pixel within its rectangular region.
913 	 */
914 	OPAQUE = 17,
915 	/**
916 	 * Indicates this object is currently pressed.
917 	 */
918 	PRESSED = 18,
919 	/**
920 	 * Indicates the size of this object is not fixed
921 	 */
922 	RESIZABLE = 19,
923 	/**
924 	 * Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that can be selected
925 	 */
926 	SELECTABLE = 20,
927 	/**
928 	 * Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that has been selected
929 	 */
930 	SELECTED = 21,
931 	/**
932 	 * Indicates this object is sensitive, e.g. to user interaction.
933 	 * STATE_SENSITIVE usually accompanies STATE_ENABLED for user-actionable controls,
934 	 * but may be found in the absence of STATE_ENABLED if the current visible state of the
935 	 * control is "disconnected" from the application state.  In such cases, direct user interaction
936 	 * can often result in the object gaining STATE_SENSITIVE, for instance if a user makes
937 	 * an explicit selection using an object whose current state is ambiguous or undefined.
938 	 * @see STATE_ENABLED, STATE_INDETERMINATE.
939 	 */
940 	SENSITIVE = 22,
941 	/**
942 	 * Indicates this object, the object's parent, the object's parent's parent, and so on,
943 	 * are all 'shown' to the end-user, i.e. subject to "exposure" if blocking or obscuring objects do not interpose
944 	 * between this object and the top of the window stack.
945 	 */
946 	SHOWING = 23,
947 	/**
948 	 * Indicates this (text) object can contain only a single line of text
949 	 */
950 	SINGLE_LINE = 24,
951 	/**
952 	 * Indicates that the information returned for this object may no longer be
953 	 * synchronized with the application state.  This is implied if the object has STATE_TRANSIENT,
954 	 * and can also occur towards the end of the object peer's lifecycle. It can also be used to indicate that
955 	 * the index associated with this object has changed since the user accessed the object (in lieu of
956 	 * "index-in-parent-changed" events).
957 	 */
958 	STALE = 25,
959 	/**
960 	 * Indicates this object is transient, i.e. a snapshot which may not emit events when its
961 	 * state changes.  Data from objects with ATK_STATE_TRANSIENT should not be cached, since there may be no
962 	 * notification given when the cached data becomes obsolete.
963 	 */
964 	TRANSIENT = 26,
965 	/**
966 	 * Indicates the orientation of this object is vertical
967 	 */
968 	VERTICAL = 27,
969 	/**
970 	 * Indicates this object is visible, e.g. has been explicitly marked for exposure to the user.
971 	 */
972 	VISIBLE = 28,
973 	/**
974 	 * Indicates that "active-descendant-changed" event
975 	 * is sent when children become 'active' (i.e. are selected or navigated to onscreen).
976 	 * Used to prevent need to enumerate all children in very large containers, like tables.
977 	 * The presence of STATE_MANAGES_DESCENDANTS is an indication to the client.
978 	 * that the children should not, and need not, be enumerated by the client.
979 	 * Objects implementing this state are expected to provide relevant state
980 	 * notifications to listening clients, for instance notifications of visibility
981 	 * changes and activation of their contained child objects, without the client
982 	 * having previously requested references to those children.
983 	 */
984 	MANAGES_DESCENDANTS = 29,
985 	/**
986 	 * Indicates that the value, or some other quantifiable
987 	 * property, of this AtkObject cannot be fully determined. In the case of a large
988 	 * data set in which the total number of items in that set is unknown (e.g. 1 of
989 	 * 999+), implementors should expose the currently-known set size (999) along
990 	 * with this state. In the case of a check box, this state should be used to
991 	 * indicate that the check box is a tri-state check box which is currently
992 	 * neither checked nor unchecked.
993 	 */
994 	INDETERMINATE = 30,
995 	/**
996 	 * Indicates that an object is truncated, e.g. a text value in a speradsheet cell.
997 	 */
998 	TRUNCATED = 31,
999 	/**
1000 	 * Indicates that explicit user interaction with an object is required by the user interface, e.g. a required field in a "web-form" interface.
1001 	 */
1002 	REQUIRED = 32,
1003 	/**
1004 	 * Indicates that the object has encountered an error condition due to failure of input validation. For instance, a form control may acquire this state in response to invalid or malformed user input.
1005 	 */
1006 	INVALID_ENTRY = 33,
1007 	/**
1008 	 * Indicates that the object in question implements some form of ¨typeahead¨ or
1009 	 * pre-selection behavior whereby entering the first character of one or more sub-elements
1010 	 * causes those elements to scroll into view or become selected.  Subsequent character input
1011 	 * may narrow the selection further as long as one or more sub-elements match the string.
1012 	 * This state is normally only useful and encountered on objects that implement Selection.
1013 	 * In some cases the typeahead behavior may result in full or partial ¨completion¨ of
1014 	 * the data in the input field, in which case these input events may trigger text-changed
1015 	 * events from the AtkText interface.  This state supplants @ATK_ROLE_AUTOCOMPLETE.
1016 	 */
1017 	SUPPORTS_AUTOCOMPLETION = 34,
1018 	/**
1019 	 * Indicates that the object in question supports text selection. It should only be exposed on objects which implement the Text interface, in order to distinguish this state from @ATK_STATE_SELECTABLE, which infers that the object in question is a selectable child of an object which implements Selection. While similar, text selection and subelement selection are distinct operations.
1020 	 */
1021 	SELECTABLE_TEXT = 35,
1022 	/**
1023 	 * Indicates that the object is the "default" active component, i.e. the object which is activated by an end-user press of the "Enter" or "Return" key.  Typically a "close" or "submit" button.
1024 	 */
1025 	DEFAULT = 36,
1026 	/**
1027 	 * Indicates that the object changes its appearance dynamically as an inherent part of its presentation.  This state may come and go if an object is only temporarily animated on the way to a 'final' onscreen presentation.
1028 	 * @note some applications, notably content viewers, may not be able to detect
1029 	 * all kinds of animated content.  Therefore the absence of this state should not
1030 	 * be taken as definitive evidence that the object's visual representation is
1031 	 * static; this state is advisory.
1032 	 */
1033 	ANIMATED = 37,
1034 	/**
1035 	 * Indicates that the object (typically a hyperlink) has already been 'activated', and/or its backing data has already been downloaded, rendered, or otherwise "visited".
1036 	 */
1037 	VISITED = 38,
1038 	/**
1039 	 * Indicates this object has the potential to be
1040 	 * checked, such as a checkbox or toggle-able table cell. @Since:
1041 	 * ATK-2.12
1042 	 */
1043 	CHECKABLE = 39,
1044 	/**
1045 	 * Indicates that the object has a popup context
1046 	 * menu or sub-level menu which may or may not be showing. This means
1047 	 * that activation renders conditional content.  Note that ordinary
1048 	 * tooltips are not considered popups in this context. @Since: ATK-2.12
1049 	 */
1050 	HAS_POPUP = 40,
1051 	/**
1052 	 * Indicates this object has a tooltip. @Since: ATK-2.16
1053 	 */
1054 	HAS_TOOLTIP = 41,
1055 	/**
1056 	 * Indicates that a widget which is ENABLED and SENSITIVE
1057 	 * has a value which can be read, but not modified, by the user. Note that this
1058 	 * state should only be applied to widget types whose value is normally directly
1059 	 * user modifiable, such as check boxes, radio buttons, spin buttons, text input
1060 	 * fields, and combo boxes, as a means to convey that the expected interaction
1061 	 * with that widget is not possible. When the expected interaction with a
1062 	 * widget does not include modification by the user, as is the case with
1063 	 * labels and containers, ATK_STATE_READ_ONLY should not be applied. See also
1064 	 * ATK_STATE_EDITABLE. @Since: ATK-2-16
1065 	 */
1066 	READ_ONLY = 42,
1067 	/**
1068 	 * Not a valid state, used for finding end of enumeration
1069 	 */
1070 	LAST_DEFINED = 43,
1071 }
1072 alias AtkStateType StateType;
1073 
1074 /**
1075  * Describes the text attributes supported
1076  */
1077 public enum AtkTextAttribute
1078 {
1079 	/**
1080 	 * Invalid attribute, like bad spelling or grammar.
1081 	 */
1082 	INVALID = 0,
1083 	/**
1084 	 * The pixel width of the left margin
1085 	 */
1086 	LEFT_MARGIN = 1,
1087 	/**
1088 	 * The pixel width of the right margin
1089 	 */
1090 	RIGHT_MARGIN = 2,
1091 	/**
1092 	 * The number of pixels that the text is indented
1093 	 */
1094 	INDENT = 3,
1095 	/**
1096 	 * Either "true" or "false" indicating whether text is visible or not
1097 	 */
1098 	INVISIBLE = 4,
1099 	/**
1100 	 * Either "true" or "false" indicating whether text is editable or not
1101 	 */
1102 	EDITABLE = 5,
1103 	/**
1104 	 * Pixels of blank space to leave above each newline-terminated line.
1105 	 */
1106 	PIXELS_ABOVE_LINES = 6,
1107 	/**
1108 	 * Pixels of blank space to leave below each newline-terminated line.
1109 	 */
1110 	PIXELS_BELOW_LINES = 7,
1111 	/**
1112 	 * Pixels of blank space to leave between wrapped lines inside the same newline-terminated line (paragraph).
1113 	 */
1114 	PIXELS_INSIDE_WRAP = 8,
1115 	/**
1116 	 * "true" or "false" whether to make the background color for each character the height of the highest font used on the current line, or the height of the font used for the current character.
1117 	 */
1118 	BG_FULL_HEIGHT = 9,
1119 	/**
1120 	 * Number of pixels that the characters are risen above the baseline
1121 	 */
1122 	RISE = 10,
1123 	/**
1124 	 * "none", "single", "double", "low", or "error"
1125 	 */
1126 	UNDERLINE = 11,
1127 	/**
1128 	 * "true" or "false" whether the text is strikethrough
1129 	 */
1130 	STRIKETHROUGH = 12,
1131 	/**
1132 	 * The size of the characters in points. eg: 10
1133 	 */
1134 	SIZE = 13,
1135 	/**
1136 	 * The scale of the characters. The value is a string representation of a double
1137 	 */
1138 	SCALE = 14,
1139 	/**
1140 	 * The weight of the characters.
1141 	 */
1142 	WEIGHT = 15,
1143 	/**
1144 	 * The language used
1145 	 */
1146 	LANGUAGE = 16,
1147 	/**
1148 	 * The font family name
1149 	 */
1150 	FAMILY_NAME = 17,
1151 	/**
1152 	 * The background color. The value is an RGB value of the format "%u,%u,%u"
1153 	 */
1154 	BG_COLOR = 18,
1155 	/**
1156 	 * The foreground color. The value is an RGB value of the format "%u,%u,%u"
1157 	 */
1158 	FG_COLOR = 19,
1159 	/**
1160 	 * "true" if a #GdkBitmap is set for stippling the background color.
1161 	 */
1162 	BG_STIPPLE = 20,
1163 	/**
1164 	 * "true" if a #GdkBitmap is set for stippling the foreground color.
1165 	 */
1166 	FG_STIPPLE = 21,
1167 	/**
1168 	 * The wrap mode of the text, if any. Values are "none", "char", "word", or "word_char".
1169 	 */
1170 	WRAP_MODE = 22,
1171 	/**
1172 	 * The direction of the text, if set. Values are "none", "ltr" or "rtl"
1173 	 */
1174 	DIRECTION = 23,
1175 	/**
1176 	 * The justification of the text, if set. Values are "left", "right", "center" or "fill"
1177 	 */
1178 	JUSTIFICATION = 24,
1179 	/**
1180 	 * The stretch of the text, if set. Values are "ultra_condensed", "extra_condensed", "condensed", "semi_condensed", "normal", "semi_expanded", "expanded", "extra_expanded" or "ultra_expanded"
1181 	 */
1182 	STRETCH = 25,
1183 	/**
1184 	 * The capitalization variant of the text, if set. Values are "normal" or "small_caps"
1185 	 */
1186 	VARIANT = 26,
1187 	/**
1188 	 * The slant style of the text, if set. Values are "normal", "oblique" or "italic"
1189 	 */
1190 	STYLE = 27,
1191 	/**
1192 	 * not a valid text attribute, used for finding end of enumeration
1193 	 */
1194 	LAST_DEFINED = 28,
1195 }
1196 alias AtkTextAttribute TextAttribute;
1197 
1198 /**
1199  * Text boundary types used for specifying boundaries for regions of text.
1200  * This enumeration is deprecated since 2.9.4 and should not be used. Use
1201  * AtkTextGranularity with #atk_text_get_string_at_offset instead.
1202  */
1203 public enum AtkTextBoundary
1204 {
1205 	/**
1206 	 * Boundary is the boundary between characters
1207 	 * (including non-printing characters)
1208 	 */
1209 	CHAR = 0,
1210 	/**
1211 	 * Boundary is the start (i.e. first character) of a word.
1212 	 */
1213 	WORD_START = 1,
1214 	/**
1215 	 * Boundary is the end (i.e. last
1216 	 * character) of a word.
1217 	 */
1218 	WORD_END = 2,
1219 	/**
1220 	 * Boundary is the first character in a sentence.
1221 	 */
1222 	SENTENCE_START = 3,
1223 	/**
1224 	 * Boundary is the last (terminal)
1225 	 * character in a sentence; in languages which use "sentence stop"
1226 	 * punctuation such as English, the boundary is thus the '.', '?', or
1227 	 * similar terminal punctuation character.
1228 	 */
1229 	SENTENCE_END = 4,
1230 	/**
1231 	 * Boundary is the initial character of the content or a
1232 	 * character immediately following a newline, linefeed, or return character.
1233 	 */
1234 	LINE_START = 5,
1235 	/**
1236 	 * Boundary is the linefeed, or return
1237 	 * character.
1238 	 */
1239 	LINE_END = 6,
1240 }
1241 alias AtkTextBoundary TextBoundary;
1242 
1243 /**
1244  * Describes the type of clipping required.
1245  */
1246 public enum AtkTextClipType
1247 {
1248 	/**
1249 	 * No clipping to be done
1250 	 */
1251 	NONE = 0,
1252 	/**
1253 	 * Text clipped by min coordinate is omitted
1254 	 */
1255 	MIN = 1,
1256 	/**
1257 	 * Text clipped by max coordinate is omitted
1258 	 */
1259 	MAX = 2,
1260 	/**
1261 	 * Only text fully within mix/max bound is retained
1262 	 */
1263 	BOTH = 3,
1264 }
1265 alias AtkTextClipType TextClipType;
1266 
1267 /**
1268  * Text granularity types used for specifying the granularity of the region of
1269  * text we are interested in.
1270  */
1271 public enum AtkTextGranularity
1272 {
1273 	/**
1274 	 * Granularity is defined by the boundaries between characters
1275 	 * (including non-printing characters)
1276 	 */
1277 	CHAR = 0,
1278 	/**
1279 	 * Granularity is defined by the boundaries of a word,
1280 	 * starting at the beginning of the current word and finishing at the beginning of
1281 	 * the following one, if present.
1282 	 */
1283 	WORD = 1,
1284 	/**
1285 	 * Granularity is defined by the boundaries of a sentence,
1286 	 * starting at the beginning of the current sentence and finishing at the beginning of
1287 	 * the following one, if present.
1288 	 */
1289 	SENTENCE = 2,
1290 	/**
1291 	 * Granularity is defined by the boundaries of a line,
1292 	 * starting at the beginning of the current line and finishing at the beginning of
1293 	 * the following one, if present.
1294 	 */
1295 	LINE = 3,
1296 	/**
1297 	 * Granularity is defined by the boundaries of a paragraph,
1298 	 * starting at the beginning of the current paragraph and finishing at the beginning of
1299 	 * the following one, if present.
1300 	 */
1301 	PARAGRAPH = 4,
1302 }
1303 alias AtkTextGranularity TextGranularity;
1304 
1305 /**
1306  * Default types for a given value. Those are defined in order to
1307  * easily get localized strings to describe a given value or a given
1308  * subrange, using atk_value_type_get_localized_name().
1309  */
1310 public enum AtkValueType
1311 {
1312 	VERY_WEAK = 0,
1313 	WEAK = 1,
1314 	ACCEPTABLE = 2,
1315 	STRONG = 3,
1316 	VERY_STRONG = 4,
1317 	VERY_LOW = 5,
1318 	LOW = 6,
1319 	MEDIUM = 7,
1320 	HIGH = 8,
1321 	VERY_HIGH = 9,
1322 	VERY_BAD = 10,
1323 	BAD = 11,
1324 	GOOD = 12,
1325 	VERY_GOOD = 13,
1326 	BEST = 14,
1327 	LAST_DEFINED = 15,
1328 }
1329 alias AtkValueType ValueType;
1330 
1331 struct AtkAction;
1332 
1333 struct AtkActionIface
1334 {
1335 	GTypeInterface parent;
1336 	/**
1337 	 *
1338 	 * Params:
1339 	 *     action = a #GObject instance that implements AtkActionIface
1340 	 *     i = the action index corresponding to the action to be performed
1341 	 * Returns: %TRUE if success, %FALSE otherwise
1342 	 */
1343 	extern(C) int function(AtkAction* action, int i) doAction;
1344 	/**
1345 	 *
1346 	 * Params:
1347 	 *     action = a #GObject instance that implements AtkActionIface
1348 	 * Returns: a the number of actions, or 0 if @action does not
1349 	 *     implement this interface.
1350 	 */
1351 	extern(C) int function(AtkAction* action) getNActions;
1352 	/**
1353 	 *
1354 	 * Params:
1355 	 *     action = a #GObject instance that implements AtkActionIface
1356 	 *     i = the action index corresponding to the action to be performed
1357 	 * Returns: a description string, or %NULL if @action does
1358 	 *     not implement this interface.
1359 	 */
1360 	extern(C) const(char)* function(AtkAction* action, int i) getDescription;
1361 	/**
1362 	 *
1363 	 * Params:
1364 	 *     action = a #GObject instance that implements AtkActionIface
1365 	 *     i = the action index corresponding to the action to be performed
1366 	 * Returns: a name string, or %NULL if @action does not
1367 	 *     implement this interface.
1368 	 */
1369 	extern(C) const(char)* function(AtkAction* action, int i) getName;
1370 	/**
1371 	 *
1372 	 * Params:
1373 	 *     action = a #GObject instance that implements AtkActionIface
1374 	 *     i = the action index corresponding to the action to be performed
1375 	 * Returns: the keybinding which can be used to activate
1376 	 *     this action, or %NULL if there is no keybinding for this action.
1377 	 */
1378 	extern(C) const(char)* function(AtkAction* action, int i) getKeybinding;
1379 	/**
1380 	 *
1381 	 * Params:
1382 	 *     action = a #GObject instance that implements AtkActionIface
1383 	 *     i = the action index corresponding to the action to be performed
1384 	 *     desc = the description to be assigned to this action
1385 	 * Returns: a gboolean representing if the description was successfully set;
1386 	 */
1387 	extern(C) int function(AtkAction* action, int i, const(char)* desc) setDescription;
1388 	/**
1389 	 *
1390 	 * Params:
1391 	 *     action = a #GObject instance that implements AtkActionIface
1392 	 *     i = the action index corresponding to the action to be performed
1393 	 * Returns: a name string, or %NULL if @action does not
1394 	 *     implement this interface.
1395 	 */
1396 	extern(C) const(char)* function(AtkAction* action, int i) getLocalizedName;
1397 }
1398 
1399 struct AtkComponent;
1400 
1401 struct AtkComponentIface
1402 {
1403 	GTypeInterface parent;
1404 	/**
1405 	 *
1406 	 * Params:
1407 	 *     component = The #AtkComponent to attach the @handler to
1408 	 *     handler = The #AtkFocusHandler to be attached to @component
1409 	 * Returns: a handler id which can be used in atk_component_remove_focus_handler()
1410 	 *     or zero if the handler was already added.
1411 	 */
1412 	extern(C) uint function(AtkComponent* component, AtkFocusHandler handler) addFocusHandler;
1413 	/**
1414 	 *
1415 	 * Params:
1416 	 *     component = the #AtkComponent
1417 	 *     x = x coordinate
1418 	 *     y = y coordinate
1419 	 *     coordType = specifies whether the coordinates are relative to the screen
1420 	 *         or to the components top level window
1421 	 * Returns: %TRUE or %FALSE indicating whether the specified point is within
1422 	 *     the extent of the @component or not
1423 	 */
1424 	extern(C) int function(AtkComponent* component, int x, int y, AtkCoordType coordType) contains;
1425 	/**
1426 	 *
1427 	 * Params:
1428 	 *     component = the #AtkComponent
1429 	 *     x = x coordinate
1430 	 *     y = y coordinate
1431 	 *     coordType = specifies whether the coordinates are relative to the screen
1432 	 *         or to the components top level window
1433 	 * Returns: a reference to the accessible
1434 	 *     child, if one exists
1435 	 */
1436 	extern(C) AtkObject* function(AtkComponent* component, int x, int y, AtkCoordType coordType) refAccessibleAtPoint;
1437 	/** */
1438 	extern(C) void function(AtkComponent* component, int* x, int* y, int* width, int* height, AtkCoordType coordType) getExtents;
1439 	/** */
1440 	extern(C) void function(AtkComponent* component, int* x, int* y, AtkCoordType coordType) getPosition;
1441 	/** */
1442 	extern(C) void function(AtkComponent* component, int* width, int* height) getSize;
1443 	/**
1444 	 *
1445 	 * Params:
1446 	 *     component = an #AtkComponent
1447 	 * Returns: %TRUE if successful, %FALSE otherwise.
1448 	 */
1449 	extern(C) int function(AtkComponent* component) grabFocus;
1450 	/** */
1451 	extern(C) void function(AtkComponent* component, uint handlerId) removeFocusHandler;
1452 	/**
1453 	 *
1454 	 * Params:
1455 	 *     component = an #AtkComponent
1456 	 *     x = x coordinate
1457 	 *     y = y coordinate
1458 	 *     width = width to set for @component
1459 	 *     height = height to set for @component
1460 	 *     coordType = specifies whether the coordinates are relative to the screen
1461 	 *         or to the components top level window
1462 	 * Returns: %TRUE or %FALSE whether the extents were set or not
1463 	 */
1464 	extern(C) int function(AtkComponent* component, int x, int y, int width, int height, AtkCoordType coordType) setExtents;
1465 	/**
1466 	 *
1467 	 * Params:
1468 	 *     component = an #AtkComponent
1469 	 *     x = x coordinate
1470 	 *     y = y coordinate
1471 	 *     coordType = specifies whether the coordinates are relative to the screen
1472 	 *         or to the components top level window
1473 	 * Returns: %TRUE or %FALSE whether or not the position was set or not
1474 	 */
1475 	extern(C) int function(AtkComponent* component, int x, int y, AtkCoordType coordType) setPosition;
1476 	/**
1477 	 *
1478 	 * Params:
1479 	 *     component = an #AtkComponent
1480 	 *     width = width to set for @component
1481 	 *     height = height to set for @component
1482 	 * Returns: %TRUE or %FALSE whether the size was set or not
1483 	 */
1484 	extern(C) int function(AtkComponent* component, int width, int height) setSize;
1485 	/**
1486 	 *
1487 	 * Params:
1488 	 *     component = an #AtkComponent
1489 	 * Returns: an #AtkLayer which is the layer of the component
1490 	 */
1491 	extern(C) AtkLayer function(AtkComponent* component) getLayer;
1492 	/**
1493 	 *
1494 	 * Params:
1495 	 *     component = an #AtkComponent
1496 	 * Returns: a gint which is the zorder of the component, i.e. the depth at
1497 	 *     which the component is shown in relation to other components in the same
1498 	 *     container.
1499 	 */
1500 	extern(C) int function(AtkComponent* component) getMdiZorder;
1501 	/** */
1502 	extern(C) void function(AtkComponent* component, AtkRectangle* bounds) boundsChanged;
1503 	/**
1504 	 *
1505 	 * Params:
1506 	 *     component = an #AtkComponent
1507 	 * Returns: An alpha value from 0 to 1.0, inclusive.
1508 	 */
1509 	extern(C) double function(AtkComponent* component) getAlpha;
1510 }
1511 
1512 struct AtkDocument;
1513 
1514 struct AtkDocumentIface
1515 {
1516 	GTypeInterface parent;
1517 	/**
1518 	 *
1519 	 * Params:
1520 	 *     document = a #GObject instance that implements AtkDocumentIface
1521 	 * Returns: a string indicating the document type
1522 	 */
1523 	extern(C) const(char)* function(AtkDocument* document) getDocumentType;
1524 	/**
1525 	 *
1526 	 * Params:
1527 	 *     document = a #GObject instance that implements AtkDocumentIface
1528 	 * Returns: a %gpointer that points to an instance of the DOM.
1529 	 */
1530 	extern(C) void* function(AtkDocument* document) getDocument;
1531 	/** */
1532 	extern(C) const(char)* function(AtkDocument* document) getDocumentLocale;
1533 	/** */
1534 	extern(C) AtkAttributeSet* function(AtkDocument* document) getDocumentAttributes;
1535 	/** */
1536 	extern(C) const(char)* function(AtkDocument* document, const(char)* attributeName) getDocumentAttributeValue;
1537 	/** */
1538 	extern(C) int function(AtkDocument* document, const(char)* attributeName, const(char)* attributeValue) setDocumentAttribute;
1539 	/**
1540 	 *
1541 	 * Params:
1542 	 *     document = the #AtkDocument
1543 	 * Returns: current page number inside @document. -1 if not
1544 	 *     implemented, not know by the implementor or irrelevant.
1545 	 */
1546 	extern(C) int function(AtkDocument* document) getCurrentPageNumber;
1547 	/**
1548 	 *
1549 	 * Params:
1550 	 *     document = the #AtkDocument
1551 	 * Returns: total page count of @document. -1 if not implemented, not
1552 	 *     know by the implementor or irrelevant.
1553 	 */
1554 	extern(C) int function(AtkDocument* document) getPageCount;
1555 }
1556 
1557 struct AtkEditableText;
1558 
1559 struct AtkEditableTextIface
1560 {
1561 	GTypeInterface parentInterface;
1562 	/**
1563 	 *
1564 	 * Params:
1565 	 *     text = an #AtkEditableText
1566 	 *     attribSet = an #AtkAttributeSet
1567 	 *     startOffset = start of range in which to set attributes
1568 	 *     endOffset = end of range in which to set attributes
1569 	 * Returns: %TRUE if attributes successfully set for the specified
1570 	 *     range, otherwise %FALSE
1571 	 */
1572 	extern(C) int function(AtkEditableText* text, AtkAttributeSet* attribSet, int startOffset, int endOffset) setRunAttributes;
1573 	/** */
1574 	extern(C) void function(AtkEditableText* text, const(char)* str) setTextContents;
1575 	/** */
1576 	extern(C) void function(AtkEditableText* text, const(char)* str, int length, int* position) insertText;
1577 	/** */
1578 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) copyText;
1579 	/** */
1580 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) cutText;
1581 	/** */
1582 	extern(C) void function(AtkEditableText* text, int startPos, int endPos) deleteText;
1583 	/** */
1584 	extern(C) void function(AtkEditableText* text, int position) pasteText;
1585 }
1586 
1587 struct AtkGObjectAccessible
1588 {
1589 	AtkObject parent;
1590 }
1591 
1592 struct AtkGObjectAccessibleClass
1593 {
1594 	AtkObjectClass parentClass;
1595 	AtkFunction pad1;
1596 	AtkFunction pad2;
1597 }
1598 
1599 struct AtkHyperlink
1600 {
1601 	GObject parent;
1602 }
1603 
1604 struct AtkHyperlinkClass
1605 {
1606 	GObjectClass parent;
1607 	/**
1608 	 *
1609 	 * Params:
1610 	 *     link = an #AtkHyperlink
1611 	 *     i = a (zero-index) integer specifying the desired anchor
1612 	 * Returns: a string specifying the URI
1613 	 */
1614 	extern(C) char* function(AtkHyperlink* link, int i) getUri;
1615 	/**
1616 	 *
1617 	 * Params:
1618 	 *     link = an #AtkHyperlink
1619 	 *     i = a (zero-index) integer specifying the desired anchor
1620 	 * Returns: an #AtkObject associated with this hyperlinks
1621 	 *     i-th anchor
1622 	 */
1623 	extern(C) AtkObject* function(AtkHyperlink* link, int i) getObject;
1624 	/**
1625 	 *
1626 	 * Params:
1627 	 *     link = an #AtkHyperlink
1628 	 * Returns: the index with the hypertext document at which this link ends
1629 	 */
1630 	extern(C) int function(AtkHyperlink* link) getEndIndex;
1631 	/**
1632 	 *
1633 	 * Params:
1634 	 *     link = an #AtkHyperlink
1635 	 * Returns: the index with the hypertext document at which this link begins
1636 	 */
1637 	extern(C) int function(AtkHyperlink* link) getStartIndex;
1638 	/**
1639 	 *
1640 	 * Params:
1641 	 *     link = an #AtkHyperlink
1642 	 * Returns: whether or not this link is still valid
1643 	 */
1644 	extern(C) int function(AtkHyperlink* link) isValid;
1645 	/**
1646 	 *
1647 	 * Params:
1648 	 *     link = an #AtkHyperlink
1649 	 * Returns: the number of anchors associated with this hyperlink
1650 	 */
1651 	extern(C) int function(AtkHyperlink* link) getNAnchors;
1652 	/** */
1653 	extern(C) uint function(AtkHyperlink* link) linkState;
1654 	/**
1655 	 *
1656 	 * Params:
1657 	 *     link = an #AtkHyperlink
1658 	 * Returns: True if the AtkHyperlink is selected, False otherwise
1659 	 */
1660 	extern(C) int function(AtkHyperlink* link) isSelectedLink;
1661 	/** */
1662 	extern(C) void function(AtkHyperlink* link) linkActivated;
1663 	AtkFunction pad1;
1664 }
1665 
1666 struct AtkHyperlinkImpl;
1667 
1668 struct AtkHyperlinkImplIface
1669 {
1670 	GTypeInterface parent;
1671 	/**
1672 	 *
1673 	 * Params:
1674 	 *     impl = a #GObject instance that implements AtkHyperlinkImplIface
1675 	 * Returns: an AtkHyperlink object which points to this
1676 	 *     implementing AtkObject.
1677 	 */
1678 	extern(C) AtkHyperlink* function(AtkHyperlinkImpl* impl) getHyperlink;
1679 }
1680 
1681 struct AtkHypertext;
1682 
1683 struct AtkHypertextIface
1684 {
1685 	GTypeInterface parent;
1686 	/**
1687 	 *
1688 	 * Params:
1689 	 *     hypertext = an #AtkHypertext
1690 	 *     linkIndex = an integer specifying the desired link
1691 	 * Returns: the link in this hypertext document at
1692 	 *     index @link_index
1693 	 */
1694 	extern(C) AtkHyperlink* function(AtkHypertext* hypertext, int linkIndex) getLink;
1695 	/**
1696 	 *
1697 	 * Params:
1698 	 *     hypertext = an #AtkHypertext
1699 	 * Returns: the number of links within this hypertext document
1700 	 */
1701 	extern(C) int function(AtkHypertext* hypertext) getNLinks;
1702 	/**
1703 	 *
1704 	 * Params:
1705 	 *     hypertext = an #AtkHypertext
1706 	 *     charIndex = a character index
1707 	 * Returns: an index into the array of hyperlinks in @hypertext,
1708 	 *     or -1 if there is no hyperlink associated with this character.
1709 	 */
1710 	extern(C) int function(AtkHypertext* hypertext, int charIndex) getLinkIndex;
1711 	/** */
1712 	extern(C) void function(AtkHypertext* hypertext, int linkIndex) linkSelected;
1713 }
1714 
1715 struct AtkImage;
1716 
1717 struct AtkImageIface
1718 {
1719 	GTypeInterface parent;
1720 	/** */
1721 	extern(C) void function(AtkImage* image, int* x, int* y, AtkCoordType coordType) getImagePosition;
1722 	/**
1723 	 *
1724 	 * Params:
1725 	 *     image = a #GObject instance that implements AtkImageIface
1726 	 * Returns: a string representing the image description
1727 	 */
1728 	extern(C) const(char)* function(AtkImage* image) getImageDescription;
1729 	/** */
1730 	extern(C) void function(AtkImage* image, int* width, int* height) getImageSize;
1731 	/**
1732 	 *
1733 	 * Params:
1734 	 *     image = a #GObject instance that implements AtkImageIface
1735 	 *     description = a string description to set for @image
1736 	 * Returns: boolean TRUE, or FALSE if operation could
1737 	 *     not be completed.
1738 	 */
1739 	extern(C) int function(AtkImage* image, const(char)* description) setImageDescription;
1740 	/**
1741 	 *
1742 	 * Params:
1743 	 *     image = An #AtkImage
1744 	 * Returns: a string corresponding to the POSIX
1745 	 *     LC_MESSAGES locale used by the image description, or %NULL if the
1746 	 *     image does not specify a locale.
1747 	 */
1748 	extern(C) const(char)* function(AtkImage* image) getImageLocale;
1749 }
1750 
1751 struct AtkImplementor;
1752 
1753 /**
1754  * Encapsulates information about a key event.
1755  */
1756 struct AtkKeyEventStruct
1757 {
1758 	/**
1759 	 * An AtkKeyEventType, generally one of ATK_KEY_EVENT_PRESS or ATK_KEY_EVENT_RELEASE
1760 	 */
1761 	int type;
1762 	/**
1763 	 * A bitmask representing the state of the modifier keys immediately after the event takes place.
1764 	 * The meaning of the bits is currently defined to match the bitmask used by GDK in
1765 	 * GdkEventType.state, see
1766 	 * http://developer.gnome.org/doc/API/2.0/gdk/gdk-Event-Structures.html#GdkEventKey
1767 	 */
1768 	uint state;
1769 	/**
1770 	 * A guint representing a keysym value corresponding to those used by GDK and X11: see
1771 	 * /usr/X11/include/keysymdef.h.
1772 	 */
1773 	uint keyval;
1774 	/**
1775 	 * The length of member #string.
1776 	 */
1777 	int length;
1778 	/**
1779 	 * A string containing one of the following: either a string approximating the text that would
1780 	 * result from this keypress, if the key is a control or graphic character, or a symbolic name for this keypress.
1781 	 * Alphanumeric and printable keys will have the symbolic key name in this string member, for instance "A". "0",
1782 	 * "semicolon", "aacute".  Keypad keys have the prefix "KP".
1783 	 */
1784 	char* str;
1785 	/**
1786 	 * The raw hardware code that generated the key event.  This field is raraly useful.
1787 	 */
1788 	ushort keycode;
1789 	/**
1790 	 * A timestamp in milliseconds indicating when the event occurred.
1791 	 * These timestamps are relative to a starting point which should be considered arbitrary,
1792 	 * and only used to compare the dispatch times of events to one another.
1793 	 */
1794 	uint timestamp;
1795 }
1796 
1797 struct AtkMisc
1798 {
1799 	GObject parent;
1800 }
1801 
1802 /**
1803  * Usage of AtkMisc is deprecated since 2.12 and heavily discouraged.
1804  */
1805 struct AtkMiscClass
1806 {
1807 	GObjectClass parent;
1808 	/** */
1809 	extern(C) void function(AtkMisc* misc) threadsEnter;
1810 	/** */
1811 	extern(C) void function(AtkMisc* misc) threadsLeave;
1812 	void*[32] vfuncs;
1813 }
1814 
1815 struct AtkNoOpObject
1816 {
1817 	AtkObject parent;
1818 }
1819 
1820 struct AtkNoOpObjectClass
1821 {
1822 	AtkObjectClass parentClass;
1823 }
1824 
1825 struct AtkNoOpObjectFactory
1826 {
1827 	AtkObjectFactory parent;
1828 }
1829 
1830 struct AtkNoOpObjectFactoryClass
1831 {
1832 	AtkObjectFactoryClass parentClass;
1833 }
1834 
1835 struct AtkObject
1836 {
1837 	GObject parent;
1838 	char* description;
1839 	char* name;
1840 	AtkObject* accessibleParent;
1841 	AtkRole role;
1842 	AtkRelationSet* relationSet;
1843 	AtkLayer layer;
1844 }
1845 
1846 struct AtkObjectClass
1847 {
1848 	GObjectClass parent;
1849 	/**
1850 	 *
1851 	 * Params:
1852 	 *     accessible = an #AtkObject
1853 	 * Returns: a character string representing the accessible name of the object.
1854 	 */
1855 	extern(C) const(char)* function(AtkObject* accessible) getName;
1856 	/**
1857 	 *
1858 	 * Params:
1859 	 *     accessible = an #AtkObject
1860 	 * Returns: a character string representing the accessible description
1861 	 *     of the accessible.
1862 	 */
1863 	extern(C) const(char)* function(AtkObject* accessible) getDescription;
1864 	/**
1865 	 *
1866 	 * Params:
1867 	 *     accessible = an #AtkObject
1868 	 * Returns: an #AtkObject representing the accessible
1869 	 *     parent of the accessible
1870 	 */
1871 	extern(C) AtkObject* function(AtkObject* accessible) getParent;
1872 	/** */
1873 	extern(C) int function(AtkObject* accessible) getNChildren;
1874 	/** */
1875 	extern(C) AtkObject* function(AtkObject* accessible, int i) refChild;
1876 	/**
1877 	 *
1878 	 * Params:
1879 	 *     accessible = an #AtkObject
1880 	 * Returns: an integer which is the index of the accessible in its parent
1881 	 */
1882 	extern(C) int function(AtkObject* accessible) getIndexInParent;
1883 	/**
1884 	 *
1885 	 * Params:
1886 	 *     accessible = an #AtkObject
1887 	 * Returns: an #AtkRelationSet representing the relation set
1888 	 *     of the object.
1889 	 */
1890 	extern(C) AtkRelationSet* function(AtkObject* accessible) refRelationSet;
1891 	/**
1892 	 *
1893 	 * Params:
1894 	 *     accessible = an #AtkObject
1895 	 * Returns: an #AtkRole which is the role of the accessible
1896 	 */
1897 	extern(C) AtkRole function(AtkObject* accessible) getRole;
1898 	/**
1899 	 *
1900 	 * Params:
1901 	 *     accessible = an #AtkObject
1902 	 * Returns: an #AtkLayer which is the layer of the accessible
1903 	 */
1904 	extern(C) AtkLayer function(AtkObject* accessible) getLayer;
1905 	/**
1906 	 *
1907 	 * Params:
1908 	 *     accessible = an #AtkObject
1909 	 * Returns: a gint which is the zorder of the accessible, i.e. the depth at
1910 	 *     which the component is shown in relation to other components in the same
1911 	 *     container.
1912 	 */
1913 	extern(C) int function(AtkObject* accessible) getMdiZorder;
1914 	/**
1915 	 *
1916 	 * Params:
1917 	 *     accessible = an #AtkObject
1918 	 * Returns: a reference to an #AtkStateSet which is the state
1919 	 *     set of the accessible
1920 	 */
1921 	extern(C) AtkStateSet* function(AtkObject* accessible) refStateSet;
1922 	/** */
1923 	extern(C) void function(AtkObject* accessible, const(char)* name) setName;
1924 	/** */
1925 	extern(C) void function(AtkObject* accessible, const(char)* description) setDescription;
1926 	/** */
1927 	extern(C) void function(AtkObject* accessible, AtkObject* parent) setParent;
1928 	/** */
1929 	extern(C) void function(AtkObject* accessible, AtkRole role) setRole;
1930 	/**
1931 	 *
1932 	 * Params:
1933 	 *     accessible = an #AtkObject
1934 	 *     handler = a function to be called when a property changes its value
1935 	 * Returns: a #guint which is the handler id used in
1936 	 *     atk_object_remove_property_change_handler()
1937 	 */
1938 	extern(C) uint function(AtkObject* accessible, AtkPropertyChangeHandler* handler) connectPropertyChangeHandler;
1939 	/** */
1940 	extern(C) void function(AtkObject* accessible, uint handlerId) removePropertyChangeHandler;
1941 	/** */
1942 	extern(C) void function(AtkObject* accessible, void* data) initialize;
1943 	/** */
1944 	extern(C) void function(AtkObject* accessible, uint changeIndex, void* changedChild) childrenChanged;
1945 	/** */
1946 	extern(C) void function(AtkObject* accessible, int focusIn) focusEvent;
1947 	/** */
1948 	extern(C) void function(AtkObject* accessible, AtkPropertyValues* values) propertyChange;
1949 	/** */
1950 	extern(C) void function(AtkObject* accessible, const(char)* name, int stateSet) stateChange;
1951 	/** */
1952 	extern(C) void function(AtkObject* accessible) visibleDataChanged;
1953 	/** */
1954 	extern(C) void function(AtkObject* accessible, void** child) activeDescendantChanged;
1955 	/**
1956 	 *
1957 	 * Params:
1958 	 *     accessible = An #AtkObject.
1959 	 * Returns: an #AtkAttributeSet consisting of all
1960 	 *     explicit properties/annotations applied to the object, or an empty
1961 	 *     set if the object has no name-value pair attributes assigned to
1962 	 *     it. This #atkattributeset should be freed by a call to
1963 	 *     atk_attribute_set_free().
1964 	 */
1965 	extern(C) AtkAttributeSet* function(AtkObject* accessible) getAttributes;
1966 	/**
1967 	 *
1968 	 * Params:
1969 	 *     accessible = an #AtkObject
1970 	 * Returns: a UTF-8 string indicating the POSIX-style LC_MESSAGES
1971 	 *     locale of @accessible.
1972 	 */
1973 	extern(C) const(char)* function(AtkObject* accessible) getObjectLocale;
1974 	AtkFunction pad1;
1975 }
1976 
1977 struct AtkObjectFactory
1978 {
1979 	GObject parent;
1980 }
1981 
1982 struct AtkObjectFactoryClass
1983 {
1984 	GObjectClass parentClass;
1985 	/** */
1986 	extern(C) AtkObject* function(GObject* obj) createAccessible;
1987 	/** */
1988 	extern(C) void function(AtkObjectFactory* factory) invalidate;
1989 	/** */
1990 	extern(C) GType function() getAccessibleType;
1991 	AtkFunction pad1;
1992 	AtkFunction pad2;
1993 }
1994 
1995 struct AtkPlug
1996 {
1997 	AtkObject parent;
1998 }
1999 
2000 struct AtkPlugClass
2001 {
2002 	AtkObjectClass parentClass;
2003 	/** */
2004 	extern(C) char* function(AtkPlug* obj) getObjectId;
2005 }
2006 
2007 /**
2008  * Note: @old_value field of #AtkPropertyValues will not contain a
2009  * valid value. This is a field defined with the purpose of contain
2010  * the previous value of the property, but is not used anymore.
2011  */
2012 struct AtkPropertyValues
2013 {
2014 	/**
2015 	 * The name of the ATK property which has changed.
2016 	 */
2017 	const(char)* propertyName;
2018 	/**
2019 	 * NULL. This field is not used anymore.
2020 	 */
2021 	GValue oldValue;
2022 	/**
2023 	 * The new value of the named property.
2024 	 */
2025 	GValue newValue;
2026 }
2027 
2028 struct AtkRange;
2029 
2030 /**
2031  * A data structure for holding a rectangle. Those coordinates are
2032  * relative to the component top-level parent.
2033  */
2034 struct AtkRectangle
2035 {
2036 	/**
2037 	 * X coordinate of the left side of the rectangle.
2038 	 */
2039 	int x;
2040 	/**
2041 	 * Y coordinate of the top side of the rectangle.
2042 	 */
2043 	int y;
2044 	/**
2045 	 * width of the rectangle.
2046 	 */
2047 	int width;
2048 	/**
2049 	 * height of the rectangle.
2050 	 */
2051 	int height;
2052 }
2053 
2054 struct AtkRegistry
2055 {
2056 	GObject parent;
2057 	GHashTable* factoryTypeRegistry;
2058 	GHashTable* factorySingletonCache;
2059 }
2060 
2061 struct AtkRegistryClass
2062 {
2063 	GObjectClass parentClass;
2064 }
2065 
2066 struct AtkRelation
2067 {
2068 	GObject parent;
2069 	GPtrArray* target;
2070 	AtkRelationType relationship;
2071 }
2072 
2073 struct AtkRelationClass
2074 {
2075 	GObjectClass parent;
2076 }
2077 
2078 struct AtkRelationSet
2079 {
2080 	GObject parent;
2081 	GPtrArray* relations;
2082 }
2083 
2084 struct AtkRelationSetClass
2085 {
2086 	GObjectClass parent;
2087 	AtkFunction pad1;
2088 	AtkFunction pad2;
2089 }
2090 
2091 struct AtkSelection;
2092 
2093 struct AtkSelectionIface
2094 {
2095 	GTypeInterface parent;
2096 	/**
2097 	 *
2098 	 * Params:
2099 	 *     selection = a #GObject instance that implements AtkSelectionIface
2100 	 *     i = a #gint specifying the child index.
2101 	 * Returns: TRUE if success, FALSE otherwise.
2102 	 */
2103 	extern(C) int function(AtkSelection* selection, int i) addSelection;
2104 	/**
2105 	 *
2106 	 * Params:
2107 	 *     selection = a #GObject instance that implements AtkSelectionIface
2108 	 * Returns: TRUE if success, FALSE otherwise.
2109 	 */
2110 	extern(C) int function(AtkSelection* selection) clearSelection;
2111 	/**
2112 	 *
2113 	 * Params:
2114 	 *     selection = a #GObject instance that implements AtkSelectionIface
2115 	 *     i = a #gint specifying the index in the selection set.  (e.g. the
2116 	 *         ith selection as opposed to the ith child).
2117 	 * Returns: an #AtkObject representing the
2118 	 *     selected accessible, or %NULL if @selection does not implement this
2119 	 *     interface.
2120 	 */
2121 	extern(C) AtkObject* function(AtkSelection* selection, int i) refSelection;
2122 	/**
2123 	 *
2124 	 * Params:
2125 	 *     selection = a #GObject instance that implements AtkSelectionIface
2126 	 * Returns: a gint representing the number of items selected, or 0
2127 	 *     if @selection does not implement this interface.
2128 	 */
2129 	extern(C) int function(AtkSelection* selection) getSelectionCount;
2130 	/**
2131 	 *
2132 	 * Params:
2133 	 *     selection = a #GObject instance that implements AtkSelectionIface
2134 	 *     i = a #gint specifying the child index.
2135 	 * Returns: a gboolean representing the specified child is selected, or 0
2136 	 *     if @selection does not implement this interface.
2137 	 */
2138 	extern(C) int function(AtkSelection* selection, int i) isChildSelected;
2139 	/**
2140 	 *
2141 	 * Params:
2142 	 *     selection = a #GObject instance that implements AtkSelectionIface
2143 	 *     i = a #gint specifying the index in the selection set.  (e.g. the
2144 	 *         ith selection as opposed to the ith child).
2145 	 * Returns: TRUE if success, FALSE otherwise.
2146 	 */
2147 	extern(C) int function(AtkSelection* selection, int i) removeSelection;
2148 	/**
2149 	 *
2150 	 * Params:
2151 	 *     selection = a #GObject instance that implements AtkSelectionIface
2152 	 * Returns: TRUE if success, FALSE otherwise.
2153 	 */
2154 	extern(C) int function(AtkSelection* selection) selectAllSelection;
2155 	/** */
2156 	extern(C) void function(AtkSelection* selection) selectionChanged;
2157 }
2158 
2159 struct AtkSocket
2160 {
2161 	AtkObject parent;
2162 	char* embeddedPlugId;
2163 }
2164 
2165 struct AtkSocketClass
2166 {
2167 	AtkObjectClass parentClass;
2168 	/** */
2169 	extern(C) void function(AtkSocket* obj, char* plugId) embed;
2170 }
2171 
2172 struct AtkStateSet
2173 {
2174 	GObject parent;
2175 }
2176 
2177 struct AtkStateSetClass
2178 {
2179 	GObjectClass parent;
2180 }
2181 
2182 struct AtkStreamableContent;
2183 
2184 struct AtkStreamableContentIface
2185 {
2186 	GTypeInterface parent;
2187 	/**
2188 	 *
2189 	 * Params:
2190 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2191 	 * Returns: a gint which is the number of mime types supported by the object.
2192 	 */
2193 	extern(C) int function(AtkStreamableContent* streamable) getNMimeTypes;
2194 	/**
2195 	 *
2196 	 * Params:
2197 	 *     streamable = a GObject instance that implements AtkStreamableContent
2198 	 *     i = a gint representing the position of the mime type starting from 0
2199 	 * Returns: a gchar* representing the specified mime type; the caller
2200 	 *     should not free the character string.
2201 	 */
2202 	extern(C) const(char)* function(AtkStreamableContent* streamable, int i) getMimeType;
2203 	/**
2204 	 *
2205 	 * Params:
2206 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2207 	 *     mimeType = a gchar* representing the mime type
2208 	 * Returns: A #GIOChannel which contains the content in the
2209 	 *     specified mime type.
2210 	 */
2211 	extern(C) GIOChannel* function(AtkStreamableContent* streamable, const(char)* mimeType) getStream;
2212 	/**
2213 	 *
2214 	 * Params:
2215 	 *     streamable = a GObject instance that implements AtkStreamableContentIface
2216 	 *     mimeType = a gchar* representing the mime type, or NULL to request a URI
2217 	 *         for the default mime type.
2218 	 * Returns: Returns a string representing a URI, or %NULL
2219 	 *     if no corresponding URI can be constructed.
2220 	 */
2221 	extern(C) const(char)* function(AtkStreamableContent* streamable, const(char)* mimeType) getUri;
2222 	AtkFunction pad1;
2223 	AtkFunction pad2;
2224 	AtkFunction pad3;
2225 }
2226 
2227 struct AtkTable;
2228 
2229 struct AtkTableCell;
2230 
2231 struct AtkTableCellIface
2232 {
2233 	GTypeInterface parent;
2234 	/**
2235 	 *
2236 	 * Params:
2237 	 *     cell = a GObject instance that implements AtkTableCellIface
2238 	 * Returns: a gint representing the number of columns occupied by this cell,
2239 	 *     or 0 if the cell does not implement this method.
2240 	 */
2241 	extern(C) int function(AtkTableCell* cell) getColumnSpan;
2242 	/**
2243 	 *
2244 	 * Params:
2245 	 *     cell = a GObject instance that implements AtkTableCellIface
2246 	 * Returns: a GPtrArray of AtkObjects
2247 	 *     representing the column header cells.
2248 	 */
2249 	extern(C) GPtrArray* function(AtkTableCell* cell) getColumnHeaderCells;
2250 	/**
2251 	 *
2252 	 * Params:
2253 	 *     cell = a GObject instance that implements AtkTableCellIface
2254 	 *     row = the row of the given cell.
2255 	 *     column = the column of the given cell.
2256 	 * Returns: TRUE if successful; FALSE otherwise.
2257 	 */
2258 	extern(C) int function(AtkTableCell* cell, int* row, int* column) getPosition;
2259 	/**
2260 	 *
2261 	 * Params:
2262 	 *     cell = a GObject instance that implements AtkTableCellIface
2263 	 * Returns: a gint representing the number of rows occupied by this cell,
2264 	 *     or 0 if the cell does not implement this method.
2265 	 */
2266 	extern(C) int function(AtkTableCell* cell) getRowSpan;
2267 	/**
2268 	 *
2269 	 * Params:
2270 	 *     cell = a GObject instance that implements AtkTableCellIface
2271 	 * Returns: a GPtrArray of AtkObjects
2272 	 *     representing the row header cells.
2273 	 */
2274 	extern(C) GPtrArray* function(AtkTableCell* cell) getRowHeaderCells;
2275 	/**
2276 	 *
2277 	 * Params:
2278 	 *     cell = a GObject instance that implements AtkTableCellIface
2279 	 *     row = the row index of the given cell.
2280 	 *     column = the column index of the given cell.
2281 	 *     rowSpan = the number of rows occupied by this cell.
2282 	 *     columnSpan = the number of columns occupied by this cell.
2283 	 * Returns: TRUE if successful; FALSE otherwise.
2284 	 */
2285 	extern(C) int function(AtkTableCell* cell, int* row, int* column, int* rowSpan, int* columnSpan) getRowColumnSpan;
2286 	/**
2287 	 *
2288 	 * Params:
2289 	 *     cell = a GObject instance that implements AtkTableCellIface
2290 	 * Returns: the atk object for the containing table.
2291 	 */
2292 	extern(C) AtkObject* function(AtkTableCell* cell) getTable;
2293 }
2294 
2295 struct AtkTableIface
2296 {
2297 	GTypeInterface parent;
2298 	/**
2299 	 *
2300 	 * Params:
2301 	 *     table = a GObject instance that implements AtkTableIface
2302 	 *     row = a #gint representing a row in @table
2303 	 *     column = a #gint representing a column in @table
2304 	 * Returns: an #AtkObject representing the referred
2305 	 *     to accessible
2306 	 */
2307 	extern(C) AtkObject* function(AtkTable* table, int row, int column) refAt;
2308 	/**
2309 	 *
2310 	 * Params:
2311 	 *     table = a GObject instance that implements AtkTableIface
2312 	 *     row = a #gint representing a row in @table
2313 	 *     column = a #gint representing a column in @table
2314 	 * Returns: a #gint representing the index at specified position.
2315 	 *     The value -1 is returned if the object at row,column is not a child
2316 	 *     of table or table does not implement this interface.
2317 	 */
2318 	extern(C) int function(AtkTable* table, int row, int column) getIndexAt;
2319 	/**
2320 	 *
2321 	 * Params:
2322 	 *     table = a GObject instance that implements AtkTableInterface
2323 	 *     index = a #gint representing an index in @table
2324 	 * Returns: a gint representing the column at the specified index,
2325 	 *     or -1 if the table does not implement this method.
2326 	 */
2327 	extern(C) int function(AtkTable* table, int index) getColumnAtIndex;
2328 	/**
2329 	 *
2330 	 * Params:
2331 	 *     table = a GObject instance that implements AtkTableInterface
2332 	 *     index = a #gint representing an index in @table
2333 	 * Returns: a gint representing the row at the specified index,
2334 	 *     or -1 if the table does not implement this method.
2335 	 */
2336 	extern(C) int function(AtkTable* table, int index) getRowAtIndex;
2337 	/**
2338 	 *
2339 	 * Params:
2340 	 *     table = a GObject instance that implements AtkTableIface
2341 	 * Returns: a gint representing the number of columns, or 0
2342 	 *     if value does not implement this interface.
2343 	 */
2344 	extern(C) int function(AtkTable* table) getNColumns;
2345 	/**
2346 	 *
2347 	 * Params:
2348 	 *     table = a GObject instance that implements AtkTableIface
2349 	 * Returns: a gint representing the number of rows, or 0
2350 	 *     if value does not implement this interface.
2351 	 */
2352 	extern(C) int function(AtkTable* table) getNRows;
2353 	/**
2354 	 *
2355 	 * Params:
2356 	 *     table = a GObject instance that implements AtkTableIface
2357 	 *     row = a #gint representing a row in @table
2358 	 *     column = a #gint representing a column in @table
2359 	 * Returns: a gint representing the column extent at specified position, or 0
2360 	 *     if value does not implement this interface.
2361 	 */
2362 	extern(C) int function(AtkTable* table, int row, int column) getColumnExtentAt;
2363 	/**
2364 	 *
2365 	 * Params:
2366 	 *     table = a GObject instance that implements AtkTableIface
2367 	 *     row = a #gint representing a row in @table
2368 	 *     column = a #gint representing a column in @table
2369 	 * Returns: a gint representing the row extent at specified position, or 0
2370 	 *     if value does not implement this interface.
2371 	 */
2372 	extern(C) int function(AtkTable* table, int row, int column) getRowExtentAt;
2373 	/**
2374 	 *
2375 	 * Params:
2376 	 *     table = a GObject instance that implements AtkTableInterface
2377 	 * Returns: a AtkObject* representing the
2378 	 *     table caption, or %NULL if value does not implement this interface.
2379 	 */
2380 	extern(C) AtkObject* function(AtkTable* table) getCaption;
2381 	/**
2382 	 *
2383 	 * Params:
2384 	 *     table = a GObject instance that implements AtkTableIface
2385 	 *     column = a #gint representing a column in @table
2386 	 * Returns: a gchar* representing the column description, or %NULL
2387 	 *     if value does not implement this interface.
2388 	 */
2389 	extern(C) const(char)* function(AtkTable* table, int column) getColumnDescription;
2390 	/**
2391 	 *
2392 	 * Params:
2393 	 *     table = a GObject instance that implements AtkTableIface
2394 	 *     column = a #gint representing a column in the table
2395 	 * Returns: a AtkObject* representing the
2396 	 *     specified column header, or %NULL if value does not implement this
2397 	 *     interface.
2398 	 */
2399 	extern(C) AtkObject* function(AtkTable* table, int column) getColumnHeader;
2400 	/**
2401 	 *
2402 	 * Params:
2403 	 *     table = a GObject instance that implements AtkTableIface
2404 	 *     row = a #gint representing a row in @table
2405 	 * Returns: a gchar* representing the row description, or
2406 	 *     %NULL if value does not implement this interface.
2407 	 */
2408 	extern(C) const(char)* function(AtkTable* table, int row) getRowDescription;
2409 	/**
2410 	 *
2411 	 * Params:
2412 	 *     table = a GObject instance that implements AtkTableIface
2413 	 *     row = a #gint representing a row in the table
2414 	 * Returns: a AtkObject* representing the
2415 	 *     specified row header, or %NULL if value does not implement this
2416 	 *     interface.
2417 	 */
2418 	extern(C) AtkObject* function(AtkTable* table, int row) getRowHeader;
2419 	/**
2420 	 *
2421 	 * Params:
2422 	 *     table = a GObject instance that implements AtkTableIface
2423 	 * Returns: a AtkObject* representing a summary description
2424 	 *     of the table, or zero if value does not implement this interface.
2425 	 */
2426 	extern(C) AtkObject* function(AtkTable* table) getSummary;
2427 	/** */
2428 	extern(C) void function(AtkTable* table, AtkObject* caption) setCaption;
2429 	/** */
2430 	extern(C) void function(AtkTable* table, int column, const(char)* description) setColumnDescription;
2431 	/** */
2432 	extern(C) void function(AtkTable* table, int column, AtkObject* header) setColumnHeader;
2433 	/** */
2434 	extern(C) void function(AtkTable* table, int row, const(char)* description) setRowDescription;
2435 	/** */
2436 	extern(C) void function(AtkTable* table, int row, AtkObject* header) setRowHeader;
2437 	/** */
2438 	extern(C) void function(AtkTable* table, AtkObject* accessible) setSummary;
2439 	/**
2440 	 *
2441 	 * Params:
2442 	 *     table = a GObject instance that implements AtkTableIface
2443 	 *     selected = a #gint** that is to contain the selected columns numbers
2444 	 * Returns: a gint representing the number of selected columns,
2445 	 *     or %0 if value does not implement this interface.
2446 	 */
2447 	extern(C) int function(AtkTable* table, int** selected) getSelectedColumns;
2448 	/**
2449 	 *
2450 	 * Params:
2451 	 *     table = a GObject instance that implements AtkTableIface
2452 	 *     selected = a #gint** that is to contain the selected row numbers
2453 	 * Returns: a gint representing the number of selected rows,
2454 	 *     or zero if value does not implement this interface.
2455 	 */
2456 	extern(C) int function(AtkTable* table, int** selected) getSelectedRows;
2457 	/**
2458 	 *
2459 	 * Params:
2460 	 *     table = a GObject instance that implements AtkTableIface
2461 	 *     column = a #gint representing a column in @table
2462 	 * Returns: a gboolean representing if the column is selected, or 0
2463 	 *     if value does not implement this interface.
2464 	 */
2465 	extern(C) int function(AtkTable* table, int column) isColumnSelected;
2466 	/**
2467 	 *
2468 	 * Params:
2469 	 *     table = a GObject instance that implements AtkTableIface
2470 	 *     row = a #gint representing a row in @table
2471 	 * Returns: a gboolean representing if the row is selected, or 0
2472 	 *     if value does not implement this interface.
2473 	 */
2474 	extern(C) int function(AtkTable* table, int row) isRowSelected;
2475 	/**
2476 	 *
2477 	 * Params:
2478 	 *     table = a GObject instance that implements AtkTableIface
2479 	 *     row = a #gint representing a row in @table
2480 	 *     column = a #gint representing a column in @table
2481 	 * Returns: a gboolean representing if the cell is selected, or 0
2482 	 *     if value does not implement this interface.
2483 	 */
2484 	extern(C) int function(AtkTable* table, int row, int column) isSelected;
2485 	/**
2486 	 *
2487 	 * Params:
2488 	 *     table = a GObject instance that implements AtkTableIface
2489 	 *     row = a #gint representing a row in @table
2490 	 * Returns: a gboolean representing if row was successfully added to selection,
2491 	 *     or 0 if value does not implement this interface.
2492 	 */
2493 	extern(C) int function(AtkTable* table, int row) addRowSelection;
2494 	/**
2495 	 *
2496 	 * Params:
2497 	 *     table = a GObject instance that implements AtkTableIface
2498 	 *     row = a #gint representing a row in @table
2499 	 * Returns: a gboolean representing if the row was successfully removed from
2500 	 *     the selection, or 0 if value does not implement this interface.
2501 	 */
2502 	extern(C) int function(AtkTable* table, int row) removeRowSelection;
2503 	/**
2504 	 *
2505 	 * Params:
2506 	 *     table = a GObject instance that implements AtkTableIface
2507 	 *     column = a #gint representing a column in @table
2508 	 * Returns: a gboolean representing if the column was successfully added to
2509 	 *     the selection, or 0 if value does not implement this interface.
2510 	 */
2511 	extern(C) int function(AtkTable* table, int column) addColumnSelection;
2512 	/**
2513 	 *
2514 	 * Params:
2515 	 *     table = a GObject instance that implements AtkTableIface
2516 	 *     column = a #gint representing a column in @table
2517 	 * Returns: a gboolean representing if the column was successfully removed from
2518 	 *     the selection, or 0 if value does not implement this interface.
2519 	 */
2520 	extern(C) int function(AtkTable* table, int column) removeColumnSelection;
2521 	/** */
2522 	extern(C) void function(AtkTable* table, int row, int numInserted) rowInserted;
2523 	/** */
2524 	extern(C) void function(AtkTable* table, int column, int numInserted) columnInserted;
2525 	/** */
2526 	extern(C) void function(AtkTable* table, int row, int numDeleted) rowDeleted;
2527 	/** */
2528 	extern(C) void function(AtkTable* table, int column, int numDeleted) columnDeleted;
2529 	/** */
2530 	extern(C) void function(AtkTable* table) rowReordered;
2531 	/** */
2532 	extern(C) void function(AtkTable* table) columnReordered;
2533 	/** */
2534 	extern(C) void function(AtkTable* table) modelChanged;
2535 }
2536 
2537 struct AtkText;
2538 
2539 struct AtkTextIface
2540 {
2541 	GTypeInterface parent;
2542 	/**
2543 	 *
2544 	 * Params:
2545 	 *     text = an #AtkText
2546 	 *     startOffset = start position
2547 	 *     endOffset = end position, or -1 for the end of the string.
2548 	 * Returns: a newly allocated string containing the text from @start_offset up
2549 	 *     to, but not including @end_offset. Use g_free() to free the returned string.
2550 	 */
2551 	extern(C) char* function(AtkText* text, int startOffset, int endOffset) getText;
2552 	/**
2553 	 *
2554 	 * Params:
2555 	 *     text = an #AtkText
2556 	 *     offset = position
2557 	 *     boundaryType = An #AtkTextBoundary
2558 	 *     startOffset = the start offset of the returned string
2559 	 *     endOffset = the offset of the first character after the
2560 	 *         returned substring
2561 	 * Returns: a newly allocated string containing the text after @offset bounded
2562 	 *     by the specified @boundary_type. Use g_free() to free the returned string.
2563 	 */
2564 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextAfterOffset;
2565 	/**
2566 	 *
2567 	 * Params:
2568 	 *     text = an #AtkText
2569 	 *     offset = position
2570 	 *     boundaryType = An #AtkTextBoundary
2571 	 *     startOffset = the start offset of the returned string
2572 	 *     endOffset = the offset of the first character after the
2573 	 *         returned substring
2574 	 * Returns: a newly allocated string containing the text at @offset bounded by
2575 	 *     the specified @boundary_type. Use g_free() to free the returned string.
2576 	 */
2577 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextAtOffset;
2578 	/**
2579 	 *
2580 	 * Params:
2581 	 *     text = an #AtkText
2582 	 *     offset = position
2583 	 * Returns: the character at @offset.
2584 	 */
2585 	extern(C) dchar function(AtkText* text, int offset) getCharacterAtOffset;
2586 	/**
2587 	 *
2588 	 * Params:
2589 	 *     text = an #AtkText
2590 	 *     offset = position
2591 	 *     boundaryType = An #AtkTextBoundary
2592 	 *     startOffset = the start offset of the returned string
2593 	 *     endOffset = the offset of the first character after the
2594 	 *         returned substring
2595 	 * Returns: a newly allocated string containing the text before @offset bounded
2596 	 *     by the specified @boundary_type. Use g_free() to free the returned string.
2597 	 */
2598 	extern(C) char* function(AtkText* text, int offset, AtkTextBoundary boundaryType, int* startOffset, int* endOffset) getTextBeforeOffset;
2599 	/**
2600 	 *
2601 	 * Params:
2602 	 *     text = an #AtkText
2603 	 * Returns: the offset position of the caret (cursor).
2604 	 */
2605 	extern(C) int function(AtkText* text) getCaretOffset;
2606 	/**
2607 	 *
2608 	 * Params:
2609 	 *     text = an #AtkText
2610 	 *     offset = the offset at which to get the attributes, -1 means the offset of
2611 	 *         the character to be inserted at the caret location.
2612 	 *     startOffset = the address to put the start offset of the range
2613 	 *     endOffset = the address to put the end offset of the range
2614 	 * Returns: an #AtkAttributeSet which contains the attributes
2615 	 *     explicitly set at @offset. This #AtkAttributeSet should be freed by a call
2616 	 *     to atk_attribute_set_free().
2617 	 */
2618 	extern(C) AtkAttributeSet* function(AtkText* text, int offset, int* startOffset, int* endOffset) getRunAttributes;
2619 	/**
2620 	 *
2621 	 * Params:
2622 	 *     text = an #AtkText
2623 	 * Returns: an #AtkAttributeSet which contains the default
2624 	 *     values of attributes.  at @offset. this #atkattributeset should be freed by
2625 	 *     a call to atk_attribute_set_free().
2626 	 */
2627 	extern(C) AtkAttributeSet* function(AtkText* text) getDefaultAttributes;
2628 	/** */
2629 	extern(C) void function(AtkText* text, int offset, int* x, int* y, int* width, int* height, AtkCoordType coords) getCharacterExtents;
2630 	/**
2631 	 *
2632 	 * Params:
2633 	 *     text = an #AtkText
2634 	 * Returns: the number of characters.
2635 	 */
2636 	extern(C) int function(AtkText* text) getCharacterCount;
2637 	/**
2638 	 *
2639 	 * Params:
2640 	 *     text = an #AtkText
2641 	 *     x = screen x-position of character
2642 	 *     y = screen y-position of character
2643 	 *     coords = specify whether coordinates are relative to the screen or
2644 	 *         widget window
2645 	 * Returns: the offset to the character which is located at
2646 	 *     the specified @x and @y coordinates.
2647 	 */
2648 	extern(C) int function(AtkText* text, int x, int y, AtkCoordType coords) getOffsetAtPoint;
2649 	/**
2650 	 *
2651 	 * Params:
2652 	 *     text = an #AtkText
2653 	 * Returns: The number of selected regions, or -1 if a failure
2654 	 *     occurred.
2655 	 */
2656 	extern(C) int function(AtkText* text) getNSelections;
2657 	/**
2658 	 *
2659 	 * Params:
2660 	 *     text = an #AtkText
2661 	 *     selectionNum = The selection number.  The selected regions are
2662 	 *         assigned numbers that correspond to how far the region is from the
2663 	 *         start of the text.  The selected region closest to the beginning
2664 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2665 	 *         moving or deleting a selected region can change the numbering.
2666 	 *     startOffset = passes back the start position of the selected region
2667 	 *     endOffset = passes back the end position of (e.g. offset immediately past)
2668 	 *         the selected region
2669 	 * Returns: a newly allocated string containing the selected text. Use g_free()
2670 	 *     to free the returned string.
2671 	 */
2672 	extern(C) char* function(AtkText* text, int selectionNum, int* startOffset, int* endOffset) getSelection;
2673 	/**
2674 	 *
2675 	 * Params:
2676 	 *     text = an #AtkText
2677 	 *     startOffset = the start position of the selected region
2678 	 *     endOffset = the offset of the first character after the selected region.
2679 	 * Returns: %TRUE if success, %FALSE otherwise
2680 	 */
2681 	extern(C) int function(AtkText* text, int startOffset, int endOffset) addSelection;
2682 	/**
2683 	 *
2684 	 * Params:
2685 	 *     text = an #AtkText
2686 	 *     selectionNum = The selection number.  The selected regions are
2687 	 *         assigned numbers that correspond to how far the region is from the
2688 	 *         start of the text.  The selected region closest to the beginning
2689 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2690 	 *         moving or deleting a selected region can change the numbering.
2691 	 * Returns: %TRUE if success, %FALSE otherwise
2692 	 */
2693 	extern(C) int function(AtkText* text, int selectionNum) removeSelection;
2694 	/**
2695 	 *
2696 	 * Params:
2697 	 *     text = an #AtkText
2698 	 *     selectionNum = The selection number.  The selected regions are
2699 	 *         assigned numbers that correspond to how far the region is from the
2700 	 *         start of the text.  The selected region closest to the beginning
2701 	 *         of the text region is assigned the number 0, etc.  Note that adding,
2702 	 *         moving or deleting a selected region can change the numbering.
2703 	 *     startOffset = the new start position of the selection
2704 	 *     endOffset = the new end position of (e.g. offset immediately past)
2705 	 *         the selection
2706 	 * Returns: %TRUE if success, %FALSE otherwise
2707 	 */
2708 	extern(C) int function(AtkText* text, int selectionNum, int startOffset, int endOffset) setSelection;
2709 	/**
2710 	 *
2711 	 * Params:
2712 	 *     text = an #AtkText
2713 	 *     offset = position
2714 	 * Returns: %TRUE if success, %FALSE otherwise.
2715 	 */
2716 	extern(C) int function(AtkText* text, int offset) setCaretOffset;
2717 	/** */
2718 	extern(C) void function(AtkText* text, int position, int length) textChanged;
2719 	/** */
2720 	extern(C) void function(AtkText* text, int location) textCaretMoved;
2721 	/** */
2722 	extern(C) void function(AtkText* text) textSelectionChanged;
2723 	/** */
2724 	extern(C) void function(AtkText* text) textAttributesChanged;
2725 	/** */
2726 	extern(C) void function(AtkText* text, int startOffset, int endOffset, AtkCoordType coordType, AtkTextRectangle* rect) getRangeExtents;
2727 	/** */
2728 	extern(C) AtkTextRange** function(AtkText* text, AtkTextRectangle* rect, AtkCoordType coordType, AtkTextClipType xClipType, AtkTextClipType yClipType) getBoundedRanges;
2729 	/**
2730 	 *
2731 	 * Params:
2732 	 *     text = an #AtkText
2733 	 *     offset = position
2734 	 *     granularity = An #AtkTextGranularity
2735 	 *     startOffset = the start offset of the returned string, or -1
2736 	 *         if an error has occurred (e.g. invalid offset, not implemented)
2737 	 *     endOffset = the offset of the first character after the returned string,
2738 	 *         or -1 if an error has occurred (e.g. invalid offset, not implemented)
2739 	 * Returns: a newly allocated string containing the text
2740 	 *     at the @offset bounded by the specified @granularity. Use
2741 	 *     g_free() to free the returned string.  Returns %NULL if the
2742 	 *     offset is invalid or no implementation is available.
2743 	 */
2744 	extern(C) char* function(AtkText* text, int offset, AtkTextGranularity granularity, int* startOffset, int* endOffset) getStringAtOffset;
2745 }
2746 
2747 /**
2748  * A structure used to describe a text range.
2749  */
2750 struct AtkTextRange
2751 {
2752 	/**
2753 	 * A rectangle giving the bounds of the text range
2754 	 */
2755 	AtkTextRectangle bounds;
2756 	/**
2757 	 * The start offset of a AtkTextRange
2758 	 */
2759 	int startOffset;
2760 	/**
2761 	 * The end offset of a AtkTextRange
2762 	 */
2763 	int endOffset;
2764 	/**
2765 	 * The text in the text range
2766 	 */
2767 	char* content;
2768 }
2769 
2770 /**
2771  * A structure used to store a rectangle used by AtkText.
2772  */
2773 struct AtkTextRectangle
2774 {
2775 	/**
2776 	 * The horizontal coordinate of a rectangle
2777 	 */
2778 	int x;
2779 	/**
2780 	 * The vertical coordinate of a rectangle
2781 	 */
2782 	int y;
2783 	/**
2784 	 * The width of a rectangle
2785 	 */
2786 	int width;
2787 	/**
2788 	 * The height of a rectangle
2789 	 */
2790 	int height;
2791 }
2792 
2793 /**
2794  * A set of ATK utility functions which are used to support event
2795  * registration of various types, and obtaining the 'root' accessible
2796  * of a process and information about the current ATK implementation
2797  * and toolkit version.
2798  */
2799 struct AtkUtil
2800 {
2801 	GObject parent;
2802 }
2803 
2804 struct AtkUtilClass
2805 {
2806 	GObjectClass parent;
2807 	/** */
2808 	extern(C) uint function(GSignalEmissionHook listener, const(char)* eventType) addGlobalEventListener;
2809 	/** */
2810 	extern(C) void function(uint listenerId) removeGlobalEventListener;
2811 	/** */
2812 	extern(C) uint function(AtkKeySnoopFunc listener, void* data) addKeyEventListener;
2813 	/** */
2814 	extern(C) void function(uint listenerId) removeKeyEventListener;
2815 	/** */
2816 	extern(C) AtkObject* function() getRoot;
2817 	/** */
2818 	extern(C) const(char)* function() getToolkitName;
2819 	/** */
2820 	extern(C) const(char)* function() getToolkitVersion;
2821 }
2822 
2823 struct AtkValue;
2824 
2825 struct AtkValueIface
2826 {
2827 	GTypeInterface parent;
2828 	/** */
2829 	extern(C) void function(AtkValue* obj, GValue* value) getCurrentValue;
2830 	/** */
2831 	extern(C) void function(AtkValue* obj, GValue* value) getMaximumValue;
2832 	/** */
2833 	extern(C) void function(AtkValue* obj, GValue* value) getMinimumValue;
2834 	/**
2835 	 *
2836 	 * Params:
2837 	 *     obj = a GObject instance that implements AtkValueIface
2838 	 *     value = a #GValue which is the desired new accessible value.
2839 	 * Returns: %TRUE if new value is successfully set, %FALSE otherwise.
2840 	 */
2841 	extern(C) int function(AtkValue* obj, GValue* value) setCurrentValue;
2842 	/** */
2843 	extern(C) void function(AtkValue* obj, GValue* value) getMinimumIncrement;
2844 	/** */
2845 	extern(C) void function(AtkValue* obj, double* value, char** text) getValueAndText;
2846 	/**
2847 	 *
2848 	 * Params:
2849 	 *     obj = a GObject instance that implements AtkValueIface
2850 	 * Returns: a newly allocated #AtkRange
2851 	 *     that represents the minimum, maximum and descriptor (if available)
2852 	 *     of @obj. NULL if that range is not defined.
2853 	 */
2854 	extern(C) AtkRange* function(AtkValue* obj) getRange;
2855 	/**
2856 	 *
2857 	 * Params:
2858 	 *     obj = a GObject instance that implements AtkValueIface
2859 	 * Returns: the minimum increment by which the value of this
2860 	 *     object may be changed. zero if undefined.
2861 	 */
2862 	extern(C) double function(AtkValue* obj) getIncrement;
2863 	/**
2864 	 *
2865 	 * Params:
2866 	 *     obj = a GObject instance that implements AtkValueIface
2867 	 * Returns: an #GSList of
2868 	 *     #AtkRange which each of the subranges defined for this object. Free
2869 	 *     the returns list with g_slist_free().
2870 	 */
2871 	extern(C) GSList* function(AtkValue* obj) getSubRanges;
2872 	/** */
2873 	extern(C) void function(AtkValue* obj, double newValue) setValue;
2874 }
2875 
2876 struct AtkWindow;
2877 
2878 struct AtkWindowIface
2879 {
2880 	GTypeInterface parent;
2881 }
2882 
2883 /**
2884  * A function which is called when an object emits a matching event,
2885  * as used in #atk_add_focus_tracker.
2886  * Currently the only events for which object-specific handlers are
2887  * supported are events of type "focus:".  Most clients of ATK will prefer to
2888  * attach signal handlers for the various ATK signals instead.
2889  *
2890  * see atk_add_focus_tracker.
2891  *
2892  * Params:
2893  *     obj = An #AtkObject instance for whom the callback will be called when
2894  *         the specified event (e.g. 'focus:') takes place.
2895  */
2896 public alias extern(C) void function(AtkObject* obj) AtkEventListener;
2897 
2898 /**
2899  * An #AtkEventListenerInit function is a special function that is
2900  * called in order to initialize the per-object event registration system
2901  * used by #AtkEventListener, if any preparation is required.
2902  *
2903  * see atk_focus_tracker_init.
2904  */
2905 public alias extern(C) void function() AtkEventListenerInit;
2906 
2907 /**
2908  * The type of callback function used for
2909  * atk_component_add_focus_handler() and
2910  * atk_component_remove_focus_handler()
2911  *
2912  * Deprecated: Deprecated with atk_component_add_focus_handler()
2913  * and atk_component_remove_focus_handler(). See those
2914  * methods for more information.
2915  *
2916  * Params:
2917  *     object = the #AtkObject that receives/lose the focus
2918  *     focusIn = TRUE if the object receives the focus
2919  */
2920 public alias extern(C) void function(AtkObject* object, int focusIn) AtkFocusHandler;
2921 
2922 /**
2923  * An AtkFunction is a function definition used for padding which has
2924  * been added to class and interface structures to allow for expansion
2925  * in the future.
2926  *
2927  * Params:
2928  *     userData = custom data defined by the user
2929  *
2930  * Returns: not used
2931  */
2932 public alias extern(C) int function(void* userData) AtkFunction;
2933 
2934 /**
2935  * An #AtkKeySnoopFunc is a type of callback which is called whenever a key event occurs,
2936  * if registered via atk_add_key_event_listener.  It allows for pre-emptive
2937  * interception of key events via the return code as described below.
2938  *
2939  * Params:
2940  *     event = an AtkKeyEventStruct containing information about the key event for which
2941  *         notification is being given.
2942  *     userData = a block of data which will be passed to the event listener, on notification.
2943  *
2944  * Returns: TRUE (nonzero) if the event emission should be stopped and the event
2945  *     discarded without being passed to the normal GUI recipient; FALSE (zero) if the
2946  *     event dispatch to the client application should proceed as normal.
2947  *
2948  *     see atk_add_key_event_listener.
2949  */
2950 public alias extern(C) int function(AtkKeyEventStruct* event, void* userData) AtkKeySnoopFunc;
2951 
2952 /**
2953  * An AtkPropertyChangeHandler is a function which is executed when an
2954  * AtkObject's property changes value. It is specified in a call to
2955  * atk_object_connect_property_change_handler().
2956  *
2957  * Deprecated: Since 2.12.
2958  *
2959  * Params:
2960  *     obj = atkobject which property changes
2961  *     vals = values changed
2962  */
2963 public alias extern(C) void function(AtkObject* obj, AtkPropertyValues* vals) AtkPropertyChangeHandler;
2964 
2965 /**
2966  * Like atk_get_binary_age(), but from the headers used at
2967  * application compile time, rather than from the library linked
2968  * against at application run time.
2969  */
2970 enum BINARY_AGE = 22611;
2971 alias ATK_BINARY_AGE = BINARY_AGE;
2972 
2973 /**
2974  * Like atk_get_interface_age(), but from the headers used at
2975  * application compile time, rather than from the library linked
2976  * against at application run time.
2977  */
2978 enum INTERFACE_AGE = 1;
2979 alias ATK_INTERFACE_AGE = INTERFACE_AGE;
2980 
2981 /**
2982  * Like atk_get_major_version(), but from the headers used at
2983  * application compile time, rather than from the library linked
2984  * against at application run time.
2985  */
2986 enum MAJOR_VERSION = 2;
2987 alias ATK_MAJOR_VERSION = MAJOR_VERSION;
2988 
2989 /**
2990  * Like atk_get_micro_version(), but from the headers used at
2991  * application compile time, rather than from the library linked
2992  * against at application run time.
2993  */
2994 enum MICRO_VERSION = 1;
2995 alias ATK_MICRO_VERSION = MICRO_VERSION;
2996 
2997 /**
2998  * Like atk_get_minor_version(), but from the headers used at
2999  * application compile time, rather than from the library linked
3000  * against at application run time.
3001  */
3002 enum MINOR_VERSION = 26;
3003 alias ATK_MINOR_VERSION = MINOR_VERSION;
3004 
3005 /**
3006  * A macro that should be defined by the user prior to including
3007  * the atk/atk.h header.
3008  * The definition should be one of the predefined ATK version
3009  * macros: %ATK_VERSION_2_12, %ATK_VERSION_2_14,...
3010  *
3011  * This macro defines the earliest version of ATK that the package is
3012  * required to be able to compile against.
3013  *
3014  * If the compiler is configured to warn about the use of deprecated
3015  * functions, then using functions that were deprecated in version
3016  * %ATK_VERSION_MIN_REQUIRED or earlier will cause warnings (but
3017  * using functions deprecated in later releases will not).
3018  */
3019 enum VERSION_MIN_REQUIRED = 2;
3020 alias ATK_VERSION_MIN_REQUIRED = VERSION_MIN_REQUIRED;