atkobject.inc 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. // included by atk.pp
  2. {
  3. AtkObject represents the minimum information all accessible objects
  4. return. This information includes accessible name, accessible
  5. description, role and state of the anObject, as well information about
  6. its parent and children. It is also possible to obtain more specific
  7. accessibility information about a component if it supports one or more
  8. of the following interfaces:
  9. }
  10. {$IFDEF read_forward_definitions}
  11. {$ENDIF read_forward_definitions}
  12. //------------------------------------------------------------------------------
  13. {$IFDEF read_interface_types}
  14. {
  15. AtkRole:
  16. @ATK_ROLE_INVALID: Invalid role
  17. @ATK_ROLE_ACCEL_LABEL: A label which represents an accelerator
  18. @ATK_ROLE_ALERT: An anObject which is an alert to the user
  19. @ATK_ROLE_ANIMATION: An anObject which is an animated image
  20. @ATK_ROLE_ARROW: An arrow in one of the four cardinal directions
  21. @ATK_ROLE_CALENDAR: An anObject that displays a calendar and allows the user to select a date
  22. @ATK_ROLE_CANVAS: An anObject that can be drawn into and is used to trap events
  23. @ATK_ROLE_CHECK_BOX: A choice that can be checked or unchecked and provides a separate indicator for the current state
  24. @ATK_ROLE_CHECK_MENU_ITEM: A menu item with a check box
  25. @ATK_ROLE_COLOR_CHOOSER: A specialized dialog that lets the user choose a color
  26. @ATK_ROLE_COLUMN_HEADER: The header for a column of data
  27. @ATK_ROLE_COMBO_BOX: A list of choices the user can select from
  28. @ATK_ROLE_DATE_EDITOR: An anObject whose purpose is to allow a user to edit a date
  29. @ATK_ROLE_DESKTOP_ICON: An inconifed internal frame within a DESKTOP_PANE
  30. @ATK_ROLE_DESKTOP_FRAME: A pane that supports internal frames and iconified versions of those internal frames
  31. @ATK_ROLE_DIAL: An anObject whose purpose is to allow a user to set a value
  32. @ATK_ROLE_DIALOG: A top level window with title bar and a border
  33. @ATK_ROLE_DIRECTORY_PANE: A pane that allows the user to navigate through and select the contents of a directory
  34. @ATK_ROLE_DRAWING_AREA: An anObject used for drawing custom user interface elements
  35. @ATK_ROLE_FILE_CHOOSER: A specialized dialog that lets the user choose a file
  36. @ATK_ROLE_FILLER: A anObject that fills up space in a user interface
  37. @ATK_ROLE_FONT_CHOOSER: A specialized dialog that lets the user choose a font
  38. @ATK_ROLE_FRAME: A top level window with a title bar, border, menubar, etc.
  39. @ATK_ROLE_GLASS_PANE: A pane that is guaranteed to be painted on top of all panes beneath it
  40. @ATK_ROLE_HTML_CONTAINER: A document container for HTML, whose children represent the document content
  41. @ATK_ROLE_ICON: A small fixed size picture, typically used to decorate components
  42. @ATK_ROLE_IMAGE: An anObject whose primary purpose is to display an image
  43. @ATK_ROLE_INTERNAL_FRAME: A frame-like anObject that is clipped by a desktop pane
  44. @ATK_ROLE_LABEL: An anObject used to present an icon or short string in an interface
  45. @ATK_ROLE_LAYERED_PANE: A specialized pane that allows its children to be drawn in layers, providing a form of stacking order
  46. @ATK_ROLE_LIST: An anObject that presents a list of objects to the user and allows the user to select one or more of them
  47. @ATK_ROLE_LIST_ITEM: An anObject that represents an element of a list
  48. @ATK_ROLE_MENU: An anObject usually found inside a menu bar that contains a list of actions the user can choose from
  49. @ATK_ROLE_MENU_BAR: An anObject usually drawn at the top of the primary dialog box of an application that contains a list of menus the user can choose from
  50. @ATK_ROLE_MENU_ITEM: An anObject usually contained in a menu that presents an action the user can choose
  51. @ATK_ROLE_OPTION_PANE: A specialized pane whose primary use is inside a DIALOG
  52. @ATK_ROLE_PAGE_TAB: An anObject that is a child of a page tab list
  53. @ATK_ROLE_PAGE_TAB_LIST: An anObject that presents a series of panels (or page tabs), one at a time, through some mechanism provided by the anObject
  54. @ATK_ROLE_PANEL: A generic container that is often used to group objects
  55. @ATK_ROLE_PASSWORD_TEXT: A text anObject uses for passwords, or other places where the text content is not shown visibly to the user
  56. @ATK_ROLE_POPUP_MENU: 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
  57. @ATK_ROLE_PROGRESS_BAR: An anObject used to indicate how much of a task has been completed
  58. @ATK_ROLE_PUSH_BUTTON: An anObject the user can manipulate to tell the application to do something
  59. @ATK_ROLE_RADIO_BUTTON: A specialized check box that will cause other radio buttons in the same group to become unchecked when this one is checked
  60. @ATK_ROLE_RADIO_MENU_ITEM: A check menu item which belongs to a group. At each instant exactly one of the radio menu items from a group is selected
  61. @ATK_ROLE_ROOT_PANE: A specialized pane that has a glass pane and a layered pane as its children
  62. @ATK_ROLE_ROW_HEADER: The header for a row of data
  63. @ATK_ROLE_SCROLL_BAR: An anObject usually used to allow a user to incrementally view a large amount of data.
  64. @ATK_ROLE_SCROLL_PANE: An anObject that allows a user to incrementally view a large amount of information
  65. @ATK_ROLE_SEPARATOR: An anObject usually contained in a menu to provide a visible and logical separation of the contents in a menu
  66. @ATK_ROLE_SLIDER: An anObject that allows the user to select from a bounded range
  67. @ATK_ROLE_SPLIT_PANE: A specialized panel that presents two other panels at the same time
  68. @ATK_ROLE_SPIN_BUTTON: An anObject used to get an integer or floating point number from the user
  69. @ATK_ROLE_STATUSBAR: An anObject which reports messages of minor importance to the user
  70. @ATK_ROLE_TABLE: An anObject used to represent information in terms of rows and columns
  71. @ATK_ROLE_TABLE_CELL: A cell in a table
  72. @ATK_ROLE_TABLE_COLUMN_HEADER: The header for a column of a table
  73. @ATK_ROLE_TABLE_ROW_HEADER: The header for a row of a table
  74. @ATK_ROLE_TEAR_OFF_MENU_ITEM: A menu item used to tear off and reattach its menu
  75. @ATK_ROLE_TERMINAL: An anObject that represents an accessible terminal
  76. @ATK_ROLE_TEXT: An anObject that presents text to the user
  77. @ATK_ROLE_TOGGLE_BUTTON: A specialized push button that can be checked or unchecked, but does not provide a separate indicator for the current state
  78. @ATK_ROLE_TOOL_BAR: A bar or palette usually composed of push buttons or toggle buttons
  79. @ATK_ROLE_TOOL_TIP: An anObject that provides information about another anObject
  80. @ATK_ROLE_TREE: An anObject used to represent hierarchical information to the user
  81. @ATK_ROLE_TREE_TABLE: An anObject capable of expanding and collapsing rows as well as showing multiple columns of data
  82. @ATK_ROLE_UNKNOWN: The anObject contains some Accessible information, but its role is not known
  83. @ATK_ROLE_VIEWPORT: An anObject usually used in a scroll pane
  84. @ATK_ROLE_WINDOW: A top level window with no title or border
  85. @ATK_ROLE_LAST_DEFINED: not a valid role, used for finding theEnd of enumeration
  86. Describes the role of an anObject
  87. }
  88. PAtkRole = ^TAtkRole;
  89. TAtkRole = (
  90. ATK_ROLE_INVALID {:= 0},
  91. ATK_ROLE_ACCEL_LABEL,
  92. ATK_ROLE_ALERT,
  93. ATK_ROLE_ANIMATION,
  94. ATK_ROLE_ARROW,
  95. ATK_ROLE_CALENDAR,
  96. ATK_ROLE_CANVAS,
  97. ATK_ROLE_CHECK_BOX,
  98. ATK_ROLE_CHECK_MENU_ITEM,
  99. ATK_ROLE_COLOR_CHOOSER,
  100. ATK_ROLE_COLUMN_HEADER,
  101. ATK_ROLE_COMBO_BOX,
  102. ATK_ROLE_DATE_EDITOR,
  103. ATK_ROLE_DESKTOP_ICON,
  104. ATK_ROLE_DESKTOP_FRAME,
  105. ATK_ROLE_DIAL,
  106. ATK_ROLE_DIALOG,
  107. ATK_ROLE_DIRECTORY_PANE,
  108. ATK_ROLE_DRAWING_AREA,
  109. ATK_ROLE_FILE_CHOOSER,
  110. ATK_ROLE_FILLER,
  111. ATK_ROLE_FONT_CHOOSER,
  112. ATK_ROLE_FRAME,
  113. ATK_ROLE_GLASS_PANE,
  114. ATK_ROLE_HTML_CONTAINER,
  115. ATK_ROLE_ICON,
  116. ATK_ROLE_IMAGE,
  117. ATK_ROLE_INTERNAL_FRAME,
  118. ATK_ROLE_LABEL,
  119. ATK_ROLE_LAYERED_PANE,
  120. ATK_ROLE_LIST,
  121. ATK_ROLE_LIST_ITEM,
  122. ATK_ROLE_MENU,
  123. ATK_ROLE_MENU_BAR,
  124. ATK_ROLE_MENU_ITEM,
  125. ATK_ROLE_OPTION_PANE,
  126. ATK_ROLE_PAGE_TAB,
  127. ATK_ROLE_PAGE_TAB_LIST,
  128. ATK_ROLE_PANEL,
  129. ATK_ROLE_PASSWORD_TEXT,
  130. ATK_ROLE_POPUP_MENU,
  131. ATK_ROLE_PROGRESS_BAR,
  132. ATK_ROLE_PUSH_BUTTON,
  133. ATK_ROLE_RADIO_BUTTON,
  134. ATK_ROLE_RADIO_MENU_ITEM,
  135. ATK_ROLE_ROOT_PANE,
  136. ATK_ROLE_ROW_HEADER,
  137. ATK_ROLE_SCROLL_BAR,
  138. ATK_ROLE_SCROLL_PANE,
  139. ATK_ROLE_SEPARATOR,
  140. ATK_ROLE_SLIDER,
  141. ATK_ROLE_SPLIT_PANE,
  142. ATK_ROLE_SPIN_BUTTON,
  143. ATK_ROLE_STATUSBAR,
  144. ATK_ROLE_TABLE,
  145. ATK_ROLE_TABLE_CELL,
  146. ATK_ROLE_TABLE_COLUMN_HEADER,
  147. ATK_ROLE_TABLE_ROW_HEADER,
  148. ATK_ROLE_TEAR_OFF_MENU_ITEM,
  149. ATK_ROLE_TERMINAL,
  150. ATK_ROLE_TEXT,
  151. ATK_ROLE_TOGGLE_BUTTON,
  152. ATK_ROLE_TOOL_BAR,
  153. ATK_ROLE_TOOL_TIP,
  154. ATK_ROLE_TREE,
  155. ATK_ROLE_TREE_TABLE,
  156. ATK_ROLE_UNKNOWN,
  157. ATK_ROLE_VIEWPORT,
  158. ATK_ROLE_WINDOW,
  159. ATK_ROLE_LAST_DEFINED
  160. );
  161. {
  162. AtkLayer:
  163. @ATK_LAYER_INVALID: The anObject does not have a layer
  164. @ATK_LAYER_BACKGROUND: This layer is reserved for the desktop background
  165. @ATK_LAYER_CANVAS: This layer is used for Canvas components
  166. @ATK_LAYER_WIDGET: This layer is normally used for components
  167. @ATK_LAYER_MDI: This layer is used for layered components
  168. @ATK_LAYER_POPUP: This layer is used for popup components, such as menus
  169. @ATK_LAYER_OVERLAY: This layer is reserved for future use.
  170. Describes the layer of a component
  171. }
  172. PAtkLayer = ^TAtkLayer;
  173. TAtkLayer = (
  174. ATK_LAYER_INVALID,
  175. ATK_LAYER_BACKGROUND,
  176. ATK_LAYER_CANVAS,
  177. ATK_LAYER_WIDGET,
  178. ATK_LAYER_MDI,
  179. ATK_LAYER_POPUP,
  180. ATK_LAYER_OVERLAY
  181. );
  182. PAtkPropertyValues = ^TAtkPropertyValues;
  183. TAtkPropertyValues = record
  184. property_name : Pgchar;
  185. old_value : TGValue;
  186. new_value : TGValue;
  187. end;
  188. TAtkFunction = function (data:gpointer):gboolean; cdecl;
  189. {
  190. For most properties the old_value field of AtkPropertyValues will
  191. not contain a valid value.
  192. Currently, the only property for which old_value is used is
  193. accessible-state; for instance if there is a focus state the
  194. property change handler will be called for the anObject which lost the focus
  195. with the old_value containing an AtkState value corresponding to focused
  196. and the property change handler will be called for the anObject which
  197. received the focus with the new_value containing an AtkState value
  198. corresponding to focused.
  199. }
  200. PAtkObject = ^TAtkObject;
  201. PPAtkObject = ^PAtkObject;
  202. TAtkObject = record
  203. parent : TGObject;
  204. description : Pgchar;
  205. name : Pgchar;
  206. accessible_parent : PAtkObject;
  207. role : TAtkRole;
  208. relation_set : PAtkRelationSet;
  209. layer : TAtkLayer;
  210. end;
  211. TAtkPropertyChangeHandler = procedure (para1:PAtkObject; para2:PAtkPropertyValues); cdecl;
  212. {
  213. Gets the accessible name of the anObject
  214. }
  215. {
  216. Gets the accessible description of the anObject
  217. }
  218. {
  219. Gets the accessible parent of the anObject
  220. }
  221. {
  222. Gets the number of accessible children of the anObject
  223. }
  224. {
  225. Returns a reference to the specified accessible child of the anObject.
  226. The accessible children are 0-based so the first accessible child is
  227. at index 0, the second at index 1 and so on.
  228. }
  229. {
  230. Gets the 0-based index of this anObject in its parent; returns -1 if the
  231. anObject does not have an accessible parent.
  232. }
  233. {
  234. Gets the RelationSet associated with the anObject
  235. }
  236. {
  237. Gets the role of the anObject
  238. }
  239. {
  240. Gets the state set of the anObject
  241. }
  242. {
  243. Sets the accessible name of the anObject
  244. }
  245. {
  246. Sets the accessible description of the anObject
  247. }
  248. {
  249. Sets the accessible parent of the anObject
  250. }
  251. {
  252. Sets the accessible role of the anObject
  253. }
  254. {
  255. Specifies a function to be called when a property changes value
  256. }
  257. {
  258. Removes a property change handler which was specified using
  259. connect_property_change_handler
  260. }
  261. {
  262. The signal handler which is executed when there is a change in the
  263. children of the anObject
  264. }
  265. {
  266. The signal handler which is executed when there is a focus event
  267. for an anObject.
  268. }
  269. {
  270. The signal handler which is executed when there is a property_change
  271. signal for an anObject.
  272. }
  273. {
  274. The signal handler which is executed when there is a state_change
  275. signal for an anObject.
  276. }
  277. {
  278. The signal handler which is executed when there is a change in the
  279. visible data for an anObject
  280. }
  281. PAtkObjectClass = ^TAtkObjectClass;
  282. TAtkObjectClass = record
  283. parent : TGObjectClass;
  284. get_name : function (accessible:PAtkObject):Pgchar; cdecl;
  285. get_description : function (accessible:PAtkObject):Pgchar; cdecl;
  286. get_parent : function (accessible:PAtkObject):PAtkObject; cdecl;
  287. get_n_children : function (accessible:PAtkObject):gint; cdecl;
  288. ref_child : function (accessible:PAtkObject; i:gint):PAtkObject; cdecl;
  289. get_index_in_parent : function (accessible:PAtkObject):gint; cdecl;
  290. ref_relation_set : function (accessible:PAtkObject):PAtkRelationSet; cdecl;
  291. get_role : function (accessible:PAtkObject):TAtkRole; cdecl;
  292. get_layer : function (accessible:PAtkObject):TAtkLayer; cdecl;
  293. get_mdi_zorder : function (accessible:PAtkObject):gint; cdecl;
  294. ref_state_set : function (accessible:PAtkObject):PAtkStateSet; cdecl;
  295. set_name : procedure (accessible:PAtkObject; name:Pgchar); cdecl;
  296. set_description : procedure (accessible:PAtkObject; description:Pgchar); cdecl;
  297. set_parent : procedure (accessible:PAtkObject; parent:PAtkObject); cdecl;
  298. set_role : procedure (accessible:PAtkObject; role:TAtkRole); cdecl;
  299. connect_property_change_handler : function (accessible:PAtkObject; handler:TAtkPropertyChangeHandler):guint; cdecl;
  300. remove_property_change_handler : procedure (accessible:PAtkObject; handler_id:guint); cdecl;
  301. initialize : procedure (accessible:PAtkObject; data:gpointer); cdecl;
  302. children_changed : procedure (accessible:PAtkObject; change_index:guint; changed_child:gpointer); cdecl;
  303. focus_event : procedure (accessible:PAtkObject; focus_in:gboolean); cdecl;
  304. property_change : procedure (accessible:PAtkObject; values:PAtkPropertyValues); cdecl;
  305. state_change : procedure (accessible:PAtkObject; name:Pgchar; state_set:gboolean); cdecl;
  306. visible_data_changed : procedure (accessible:PAtkObject); cdecl;
  307. pad1 : TAtkFunction;
  308. pad2 : TAtkFunction;
  309. pad3 : TAtkFunction;
  310. pad4 : TAtkFunction;
  311. end;
  312. PAtkImplementorIface = ^TAtkImplementorIface;
  313. TAtkImplementorIface = record
  314. parent : TGTypeInterface;
  315. ref_accessible : function (implementor:PAtkImplementor):PAtkObject; cdecl;
  316. end;
  317. {$ENDIF read_interface_types}
  318. //------------------------------------------------------------------------------
  319. {$IFDEF read_interface_rest}
  320. function atk_role_register(name:Pgchar):TAtkRole; cdecl; external atklib;
  321. function atk_object_get_type:GType; cdecl; external atklib;
  322. function ATK_TYPE_OBJECT : GType;
  323. function ATK_OBJECT(obj: pointer) : PAtkObject;
  324. function ATK_OBJECT_CLASS(klass: pointer) : PAtkObjectClass;
  325. function ATK_IS_OBJECT(obj: pointer) : boolean;
  326. function ATK_IS_OBJECT_CLASS(klass: pointer) : boolean;
  327. function ATK_OBJECT_GET_CLASS(obj: pointer) : PAtkObjectClass;
  328. function ATK_TYPE_IMPLEMENTOR : GType;
  329. function ATK_IS_IMPLEMENTOR(obj: pointer) : boolean;
  330. function ATK_IMPLEMENTOR(obj: pointer) : PAtkImplementor;
  331. function ATK_IMPLEMENTOR_GET_IFACE(obj: pointer) : PAtkImplementorIface;
  332. function atk_implementor_get_type:GType; cdecl; external atklib;
  333. {
  334. This method uses the ref_accessible method in AtkImplementorIface,
  335. if the anObject's class implements AtkImplementorIface.
  336. Otherwise it returns %NULL.
  337. IMPORTANT:
  338. Note also that because this method may return flyweight objects,
  339. it increments the returned AtkObject's reference count.
  340. Therefore it is the responsibility of the calling
  341. program to unreference the anObject when no longer needed.
  342. (c.f. gtk_widget_get_accessible() where this is not the case).
  343. }
  344. function atk_implementor_ref_accessible(implementor:PAtkImplementor):PAtkObject; cdecl; external atklib;
  345. {
  346. Properties directly supported by AtkObject
  347. }
  348. function atk_object_get_name(accessible:PAtkObject):Pgchar; cdecl; external atklib;
  349. function atk_object_get_description(accessible:PAtkObject):Pgchar; cdecl; external atklib;
  350. function atk_object_get_parent(accessible:PAtkObject):PAtkObject; cdecl; external atklib;
  351. function atk_object_get_n_accessible_children(accessible:PAtkObject):gint; cdecl; external atklib;
  352. function atk_object_ref_accessible_child(accessible:PAtkObject; i:gint):PAtkObject; cdecl; external atklib;
  353. function atk_object_ref_relation_set(accessible:PAtkObject):PAtkRelationSet; cdecl; external atklib;
  354. function atk_object_get_role(accessible:PAtkObject):TAtkRole; cdecl; external atklib;
  355. function atk_object_get_layer(accessible:PAtkObject):TAtkLayer; cdecl; external atklib;
  356. function atk_object_get_mdi_zorder(accessible:PAtkObject):gint; cdecl; external atklib;
  357. function atk_object_ref_state_set(accessible:PAtkObject):PAtkStateSet; cdecl; external atklib;
  358. function atk_object_get_index_in_parent(accessible:PAtkObject):gint; cdecl; external atklib;
  359. procedure atk_object_set_name(accessible:PAtkObject; name:Pgchar); cdecl; external atklib;
  360. procedure atk_object_set_description(accessible:PAtkObject; description:Pgchar); cdecl; external atklib;
  361. procedure atk_object_set_parent(accessible:PAtkObject; parent:PAtkObject); cdecl; external atklib;
  362. procedure atk_object_set_role(accessible:PAtkObject; role:TAtkRole); cdecl; external atklib;
  363. function atk_object_connect_property_change_handler(accessible:PAtkObject; handler:TAtkPropertyChangeHandler):guint; cdecl; external atklib;
  364. procedure atk_object_remove_property_change_handler(accessible:PAtkObject; handler_id:guint); cdecl; external atklib;
  365. procedure atk_object_notify_state_change(accessible:PAtkObject; state:TAtkState; value:gboolean); cdecl; external atklib;
  366. procedure atk_object_initialize(accessible:PAtkObject; data:gpointer); cdecl; external atklib;
  367. function atk_role_get_name(role:TAtkRole):Pgchar; cdecl; external atklib;
  368. function atk_role_for_name(name:Pgchar):TAtkRole; cdecl; external atklib;
  369. {
  370. Note: the properties which are registered with the GType
  371. property registry, for type ATK_TYPE_OBJECT, are as follows:
  372. "accessible-name"
  373. "accessible-description"
  374. "accessible-parent"
  375. "accessible-role"
  376. "accessible-value"
  377. "accessible-component-layer"
  378. "accessible-component-zorder"
  379. "accessible-table-caption"
  380. "accessible-table-column-description"
  381. "accessible-table-column-header"
  382. "accessible-table-row-description"
  383. "accessible-table-row-header"
  384. "accessible-table-summary"
  385. "accessible-model"
  386. accessibility property change listeners should use the
  387. normal GObject property interfaces and "property-change"
  388. signal handler semantics to interpret the property change
  389. information relayed from AtkObject.
  390. (AtkObject instances will connect to the "notify"
  391. signal in their host objects, and relay the signals when appropriate).
  392. }
  393. (* For other signals, see related interfaces
  394. AtkActionIface,
  395. AtkComponentIface,
  396. AtkHypertextIface,
  397. AtkImageIface,
  398. AtkSelectionIface,
  399. AtkTableIface,
  400. AtkTextIface,
  401. AtkValueIface.
  402. The usage model for obtaining these interface instances is:
  403. ATK_<interfacename>_GET_IFACE(GObject accessible),
  404. where accessible, though specified as a GObject, is
  405. the AtkObject instance being queried.
  406. More usually, the interface will be used via a cast to the
  407. interface's corresponding "type":
  408. var
  409. textImpl: PAtkText;
  410. begin
  411. textImpl := ATK_TEXT(accessible);
  412. if (textImpl<>nil) then
  413. cpos := atk_text_get_caret_position(textImpl);
  414. end;
  415. If it's known in advance that accessible implements AtkTextIface,
  416. this is shortened to:
  417. cpos := atk_text_get_caret_position (ATK_TEXT (accessible));
  418. *)
  419. {$ENDIF read_interface_rest}
  420. //------------------------------------------------------------------------------
  421. {$IFDEF read_implementation}
  422. function ATK_TYPE_OBJECT : GType;
  423. begin
  424. ATK_TYPE_OBJECT:=atk_object_get_type;
  425. end;
  426. function ATK_OBJECT(obj: pointer) : PAtkObject;
  427. begin
  428. ATK_OBJECT:=PAtkObject(G_TYPE_CHECK_INSTANCE_CAST(obj,ATK_TYPE_OBJECT));
  429. end;
  430. function ATK_OBJECT_CLASS(klass: pointer) : PAtkObjectClass;
  431. begin
  432. ATK_OBJECT_CLASS:=PAtkObjectClass(G_TYPE_CHECK_CLASS_CAST(klass,ATK_TYPE_OBJECT));
  433. end;
  434. function ATK_IS_OBJECT(obj: pointer) : boolean;
  435. begin
  436. ATK_IS_OBJECT:=G_TYPE_CHECK_INSTANCE_TYPE(obj,ATK_TYPE_OBJECT);
  437. end;
  438. function ATK_IS_OBJECT_CLASS(klass: pointer) : boolean;
  439. begin
  440. ATK_IS_OBJECT_CLASS:=G_TYPE_CHECK_CLASS_TYPE(klass,ATK_TYPE_OBJECT);
  441. end;
  442. function ATK_OBJECT_GET_CLASS(obj: pointer) : PAtkObjectClass;
  443. begin
  444. ATK_OBJECT_GET_CLASS:=PAtkObjectClass(G_TYPE_INSTANCE_GET_CLASS(obj,ATK_TYPE_OBJECT));
  445. end;
  446. function ATK_TYPE_IMPLEMENTOR : GType;
  447. begin
  448. ATK_TYPE_IMPLEMENTOR:=atk_implementor_get_type;
  449. end;
  450. function ATK_IS_IMPLEMENTOR(obj: pointer) : boolean;
  451. begin
  452. ATK_IS_IMPLEMENTOR:=G_TYPE_CHECK_INSTANCE_TYPE(obj,ATK_TYPE_IMPLEMENTOR);
  453. end;
  454. function ATK_IMPLEMENTOR(obj: pointer) : PAtkImplementor;
  455. begin
  456. ATK_IMPLEMENTOR:=PAtkImplementor(G_TYPE_CHECK_INSTANCE_CAST(obj,ATK_TYPE_IMPLEMENTOR));
  457. end;
  458. function ATK_IMPLEMENTOR_GET_IFACE(obj: pointer) : PAtkImplementorIface;
  459. begin
  460. ATK_IMPLEMENTOR_GET_IFACE:=PAtkImplementorIface(G_TYPE_INSTANCE_GET_INTERFACE(obj,ATK_TYPE_IMPLEMENTOR));
  461. end;
  462. {$ENDIF read_implementation}