2003-06-10 Padraig O'Briain <padraig.obriain@sun.com>
[platform/core/uifw/at-spi2-atk.git] / cspi / spi.h
1 /*
2  * AT-SPI - Assistive Technology Service Provider Interface
3  * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
4  *
5  * Copyright 2001, 2002 Sun Microsystems Inc.,
6  * Copyright 2001, 2002 Ximian, Inc.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public
19  * License along with this library; if not, write to the
20  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23
24 #ifndef _SPI_H
25 #define _SPI_H
26
27 #include <cspi/spi-impl.h>
28 /*
29  * Definitions for AccessibleRole, AccessibleState,
30  * and event listeners.
31  */
32 #include <cspi/spi-roletypes.h>
33 #include <cspi/spi-statetypes.h>
34 #include <cspi/spi-listener.h>
35
36 /*
37  * Auxiliary typedefs and mask definitions
38  */
39 #include <libspi/keymasks.h>
40
41 #ifdef  __cplusplus
42 extern "C" {
43 #endif
44
45 /**
46  *AccessibleTextBoundaryType:
47  *@SPI_TEXT_BOUNDARY_CHAR:
48  *@SPI_TEXT_BOUNDARY_CURSOR_POS:
49  *@SPI_TEXT_BOUNDARY_WORD_START:
50  *@SPI_TEXT_BOUNDARY_WORD_END:
51  *@SPI_TEXT_BOUNDARY_SENTENCE_START:
52  *@SPI_TEXT_BOUNDARY_SENTENCE_END:
53  *@SPI_TEXT_BOUNDARY_LINE_START:
54  *@SPI_TEXT_BOUNDARY_LINE_END:
55  *@SPI_TEXT_BOUNDARY_ATTRIBUTE_RANGE:
56  *
57  *Text boundary types used for specifying boundaries for regions of text
58  **/
59 typedef enum
60 {
61   SPI_TEXT_BOUNDARY_CHAR,
62   SPI_TEXT_BOUNDARY_CURSOR_POS,
63   SPI_TEXT_BOUNDARY_WORD_START,
64   SPI_TEXT_BOUNDARY_WORD_END,
65   SPI_TEXT_BOUNDARY_SENTENCE_START,
66   SPI_TEXT_BOUNDARY_SENTENCE_END,
67   SPI_TEXT_BOUNDARY_LINE_START,
68   SPI_TEXT_BOUNDARY_LINE_END,
69   SPI_TEXT_BOUNDARY_ATTRIBUTE_RANGE
70 } AccessibleTextBoundaryType;
71
72 /**
73  *AccessibleTextClipType
74  *@SPI_TEXT_CLIP_NONE: No clipping to be done
75  *@SPI_TEXT_CLIP_MIN: Text clipped by min coordinate is omitted
76  *@SPI_TEXT_CLIP_MAX: Text clipped by max coordinate is omitted
77  *@SPI_TEXT_CLIP_BOTH: Only text fully within mix/max bound is retained
78  *
79  *Describes the type of clipping required.
80  **/
81 typedef enum
82 {
83   SPI_TEXT_CLIP_NONE,
84   SPI_TEXT_CLIP_MIN,
85   SPI_TEXT_CLIP_MAX,
86   SPI_TEXT_CLIP_BOTH
87 } AccessibleTextClipType;
88
89 /**
90  *AccessibleRelationType:
91  *@SPI_RELATION_NULL:
92  *@SPI_RELATION_LABEL_FOR: Indicates an object is a label for one or more target objects.
93  *@SPI_RELATION_LABELED_BY: Indicates an object is labelled by one or more target objects.
94  *@SPI_RELATION_CONTROLLED_BY: Indicates an object controlled by one or more target objects.
95  *@SPI_RELATION_CONTROLLER_FOR: Indicates an object is an controller for one or more target objects.
96  *@SPI_RELATION_MEMBER_OF: Indicates an object is a member of a group of one or
97 more target objects.
98  *@SPI_RELATION_NODE_CHILD_OF: 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.
99  *@SPI_RELATION_EXTENDED:
100  *@SPI_RELATION_FLOWS_TO: Indicates that the object has content that flows logically to another
101  *  AtkObject in a sequential way, (for instance text-flow).
102  *@SPI_RELATION_FLOWS_FROM: Indicates that the object has content that flows logically from
103  *  another AtkObject in a sequential way, (for instance text-flow).
104  *@SPI_RELATION_SUBWINDOW_OF: 
105  *@SPI_RELATION_EMBEDS: Indicates that the object visually embeds
106  *  another object's content, i.e. this object's content flows around
107  *  another's content.
108  *@SPI_RELATION_EMBEDDED_BY: Inverse of %SPI_RELATION_EMBEDS, indicates that
109  *  this object's content is visualy embedded in another object.
110  *@SPI_RELATION_POPUP_FOR: Indicates that an object is a popup for another objec
111 t.
112  *@SPI_RELATION_LAST_DEFINED:
113  *
114  *Describes the type of the relation
115  **/
116 typedef enum
117 {
118   SPI_RELATION_NULL,
119   SPI_RELATION_LABEL_FOR,
120   SPI_RELATION_LABELED_BY,
121   SPI_RELATION_CONTROLLER_FOR,
122   SPI_RELATION_CONTROLLED_BY,
123   SPI_RELATION_MEMBER_OF,
124   SPI_RELATION_NODE_CHILD_OF,
125   SPI_RELATION_EXTENDED,
126   SPI_RELATION_FLOWS_TO,
127   SPI_RELATION_FLOWS_FROM,
128   SPI_RELATION_SUBWINDOW_OF,
129   SPI_RELATION_EMBEDS,
130   SPI_RELATION_EMBEDDED_BY,
131   SPI_RELATION_POPUP_FOR,
132   SPI_RELATION_LAST_DEFINED
133 } AccessibleRelationType;
134
135
136 /* don't change the order of these ! */
137 /**
138  *AccessibleCoordType:
139  *@SPI_COORD_TYPE_SCREEN: specifies xy coordinates relative to the screen
140  *@SPI_COORD_TYPE_WINDOW: specifies xy coordinates relative to an object's
141  * top-level window
142  *
143  *Specifies how xy coordinates are to be interpreted. Used by functions such
144  *as AccessibleComponent_getPosition() and AccessibleText_getCharacterExtents()
145  **/
146 typedef enum {
147   SPI_COORD_TYPE_SCREEN,
148   SPI_COORD_TYPE_WINDOW
149 } AccessibleCoordType;
150
151 /**
152  *AccessibleKeySynthType:
153  *@SPI_KEY_PRESS:
154  *@SPI_KEY_RELEASE:
155  *@SPI_KEY_PRESSRELEASE:
156  *@SPI_KEY_SYM:
157  *@SPI_KEY_STRING:
158  *
159  *Specified the type of a generated event.
160  **/
161 typedef enum {
162   SPI_KEY_PRESS,
163   SPI_KEY_RELEASE, 
164   SPI_KEY_PRESSRELEASE,
165   SPI_KEY_SYM,
166   SPI_KEY_STRING
167 } AccessibleKeySynthType;
168
169 /**
170  *AccessibleKeyListenerSyncType:
171  *@SPI_KEYLISTENER_NOSYNC:
172  *@SPI_KEYLISTENER_SYNCHRONOUS:
173  *@SPI_KEYLISTENER_CANCONSUME:
174  *@SPI_KEYLISTENER_ALL_WINDOWS:
175  *
176  *Specified the tyupe of a key listener event.
177  **/
178 typedef enum {
179   SPI_KEYLISTENER_NOSYNC = 0,
180   SPI_KEYLISTENER_SYNCHRONOUS = 1,
181   SPI_KEYLISTENER_CANCONSUME = 2,
182   SPI_KEYLISTENER_ALL_WINDOWS = 4
183 } AccessibleKeyListenerSyncType;
184
185
186 typedef struct _SPIException SPIException;
187
188 typedef SPIBoolean 
189 (* SPIExceptionHandler) (SPIException *err, SPIBoolean is_fatal);
190
191 typedef enum {
192         SPI_EXCEPTION_UNSPECIFIED,
193         SPI_EXCEPTION_DISCONNECT,
194         SPI_EXCEPTION_NO_IMPL,
195         SPI_EXCEPTION_IO,
196         SPI_EXCEPTION_BAD_DATA
197 } SPIExceptionCode;
198
199 typedef enum {
200         SPI_EXCEPTION_SOURCE_UNSPECIFIED,
201         SPI_EXCEPTION_SOURCE_ACCESSIBLE,
202         SPI_EXCEPTION_SOURCE_REGISTRY,
203         SPI_EXCEPTION_SOURCE_DEVICE
204 } SPIExceptionType;
205
206 typedef unsigned long AccessibleKeyEventMask;
207 typedef unsigned long AccessibleDeviceEventMask;
208
209 /**
210  *AccessibleComponentLayer:
211  *@SPI_LAYER_INVALID: The layer cannot be determined or is somehow undefined.
212  *@SPI_LAYER_BACKGROUND: Component belongs to the destop background.
213  *@SPI_LAYER_CANVAS: Component is a canvas backdrop or drawing area.
214  *@SPI_LAYER_WIDGET: Component is a 'normal' widget.
215  *@SPI_LAYER_MDI: Component is drawn in the MDI layer and may have valid
216  *                         Z-information relative to other MDI-layer components.
217  *@SPI_LAYER_POPUP: Component is in the popup layer, above other widgets and
218  *                         MDI components.
219  *@SPI_LAYER_OVERLAY: Component is in the overlay plane - this value is reserved
220  *                         for future use.
221  *@SPI_LAYER_WINDOW: Component is in the window layer and have valid Z-information
222  *                   relative to other window-layer components.
223  *@SPI_LAYER_LAST_DEFINED: Used to determine the last valid value in the enum,
224  *                         should not be encountered.   
225  *
226  * Describes the layer of a component.
227  *
228  * These enumerated "layer values" are used when determining which UI
229  * rendering layer a component is drawn into, which can help in making
230  * determinations of when components occlude one another.
231  **/
232 typedef enum {
233     SPI_LAYER_INVALID,
234     SPI_LAYER_BACKGROUND,
235     SPI_LAYER_CANVAS,
236     SPI_LAYER_WIDGET,
237     SPI_LAYER_MDI,
238     SPI_LAYER_POPUP,
239     SPI_LAYER_OVERLAY,
240     SPI_LAYER_WINDOW,
241     SPI_LAYER_LAST_DEFINED      
242 } AccessibleComponentLayer;
243
244
245 /**
246  * AccessibleTextRange:
247  * @start: the first nominal character position within the range.
248  * @end: the first nominal character position following the range.
249  * @content: The actual text content between @start and @end, as a UTF-8 string.
250  *
251  * Structure which encapsulates a text range - must be associated with an
252  *          AccessibleText-implementing object.
253  **/
254 typedef struct _AccessibleTextRange
255 {
256   long int        start;
257   long int        end;
258   char           *contents;
259 } AccessibleTextRange;
260
261 /**
262  * AccessibleKeySet:
263  * @keysyms:
264  * @keycodes:
265  * @len:
266  *
267  * Structure containing identifying information about a set of keycode or
268  *        keysyms.
269  **/
270 typedef struct _AccessibleKeySet
271 {
272   unsigned long  *keysyms;
273   unsigned short *keycodes;
274   char          **keystrings;
275   short           len;
276 } AccessibleKeySet;
277
278 /*
279  * A special value for an AccessibleKeySet type, which tacitly
280  * includes all keycodes and keyvals for the specified modifier set.
281  */
282 #define SPI_KEYSET_ALL_KEYS NULL
283
284 typedef unsigned long AccessibleModifierMaskType;
285 /**
286  *AccessibleKeyMaskType:
287  *
288  *AccessibleKeyMaskType is a mask which is a set of key event modifiers
289  *which is specified in SPI_registerAccessibleKeystrokeListener.
290  **/
291
292 typedef AccessibleModifierMaskType AccessibleKeyMaskType;
293
294 /* Basic SPI initialization and event loop function prototypes */
295
296 int              SPI_init         (void);
297 void             SPI_event_main   (void);
298 void             SPI_event_quit   (void);
299 SPIBoolean       SPI_eventIsReady (void);
300 AccessibleEvent *SPI_nextEvent    (SPIBoolean waitForEvent);
301 int              SPI_exit         (void);
302
303 /* Event Listener creation and support.  */
304
305 void                      SPI_freeAccessibleKeySet (
306                                                    AccessibleKeySet         *keyset);
307 AccessibleKeySet        * SPI_createAccessibleKeySet (
308                                                    int                       len,
309                                                    const char               *keysyms,
310                                                    short                    *keycodes,
311                                                    const char              **keystrings);
312 AccessibleEventListener * SPI_createAccessibleEventListener (
313                                                    AccessibleEventListenerCB callback,
314                                                    void                     *user_data);
315 SPIBoolean                AccessibleEventListener_addCallback (
316                                                    AccessibleEventListener  *listener,
317                                                    AccessibleEventListenerCB callback,
318                                                    void                     *user_data);
319 SPIBoolean                AccessibleEventListener_removeCallback (
320                                                    AccessibleEventListener  *listener,
321                                                    AccessibleEventListenerCB callback);
322 void                      AccessibleEventListener_unref (
323                                                    AccessibleEventListener  *listener);
324
325 /* Device Event Listener creation and support.  */
326
327 /* First four are deprecated in favor of the last four; really just a re-name */
328
329 AccessibleKeystrokeListener * SPI_createAccessibleKeystrokeListener (
330                                         AccessibleKeystrokeListenerCB callback,
331                                         void                         *user_data);
332 SPIBoolean                    AccessibleKeystrokeListener_addCallback (
333                                         AccessibleKeystrokeListener  *listener,
334                                         AccessibleKeystrokeListenerCB callback,
335                                         void                         *user_data);
336 SPIBoolean                    AccessibleKeystrokeListener_removeCallback (
337                                         AccessibleKeystrokeListener *listener,
338                                         AccessibleKeystrokeListenerCB callback);
339 void                          AccessibleKeystrokeListener_unref (
340                                         AccessibleKeystrokeListener *listener);
341
342 AccessibleDeviceListener   * SPI_createAccessibleDeviceListener (
343                                         AccessibleDeviceListenerCB callback,
344                                         void                      *user_data);
345 SPIBoolean                    AccessibleDeviceListener_addCallback (
346                                         AccessibleDeviceListener  *listener,
347                                         AccessibleDeviceListenerCB callback,
348                                         void                      *user_data);
349 SPIBoolean                    AccessibleDeviceListener_removeCallback (
350                                         AccessibleDeviceListener  *listener,
351                                         AccessibleDeviceListenerCB callback);
352 void                          AccessibleDeviceListener_unref (
353                                         AccessibleDeviceListener *listener);
354
355 /* Global functions serviced by the registry */
356
357 SPIBoolean SPI_registerGlobalEventListener           (
358                                        AccessibleEventListener *listener,
359                                        const char              *eventType);
360 SPIBoolean SPI_deregisterGlobalEventListener         (
361                                        AccessibleEventListener *listener,
362                                        const char              *eventType);
363 SPIBoolean SPI_deregisterGlobalEventListenerAll      (
364                                        AccessibleEventListener *listener);
365 SPIBoolean SPI_registerAccessibleKeystrokeListener   (
366                                        AccessibleKeystrokeListener *listener,
367                                        AccessibleKeySet             *keys,
368                                        AccessibleKeyMaskType         modmask,
369                                        AccessibleKeyEventMask        eventmask,
370                                        AccessibleKeyListenerSyncType sync_type);
371 SPIBoolean SPI_deregisterAccessibleKeystrokeListener (
372                                        AccessibleKeystrokeListener *listener,
373                                        AccessibleKeyMaskType        modmask);
374
375 SPIBoolean SPI_registerDeviceEventListener   (
376                                        AccessibleDeviceListener   *listener,
377                                        AccessibleDeviceEventMask   eventmask,
378                                        void                       *filter);
379 SPIBoolean SPI_deregisterDeviceEventListener (
380                                        AccessibleDeviceListener   *listener,
381                                        void                       *filter);
382
383 int         SPI_getDesktopCount                  (void);
384 Accessible *SPI_getDesktop                       (int i);
385 int         SPI_getDesktopList                   (Accessible ***desktop_list);
386 void        SPI_freeDesktopList                  (Accessible  **desktop_list);
387
388 SPIBoolean  SPI_generateKeyboardEvent            (long int                    keyval,
389                                                   char                       *keystring,
390                                                   AccessibleKeySynthType      synth_type);
391
392 SPIBoolean  SPI_generateMouseEvent               (long int x, long int y, char *name);
393
394 /* Accessible function prototypes  */
395
396 void                 Accessible_ref              (Accessible *obj);
397 void                 Accessible_unref            (Accessible *obj);
398 char *               Accessible_getName          (Accessible *obj);
399 char *               Accessible_getDescription   (Accessible *obj);
400 Accessible *         Accessible_getParent        (Accessible *obj);
401 long                 Accessible_getChildCount    (Accessible *obj);
402 Accessible *         Accessible_getChildAtIndex  (Accessible *obj,
403                                                   long int    childIndex);
404 long                 Accessible_getIndexInParent (Accessible *obj);
405 AccessibleRelation **Accessible_getRelationSet   (Accessible *obj);
406 AccessibleRole       Accessible_getRole          (Accessible *obj);
407 char *               Accessible_getRoleName      (Accessible *obj);
408 AccessibleStateSet * Accessible_getStateSet      (Accessible *obj);
409
410 /* Interface query methods */
411
412 SPIBoolean Accessible_isAction            (Accessible *obj);
413 SPIBoolean Accessible_isApplication       (Accessible *obj);
414 SPIBoolean Accessible_isComponent         (Accessible *obj);
415 SPIBoolean Accessible_isEditableText      (Accessible *obj);
416 SPIBoolean Accessible_isHypertext         (Accessible *obj);
417 SPIBoolean Accessible_isImage             (Accessible *obj);
418 SPIBoolean Accessible_isSelection         (Accessible *obj);
419 SPIBoolean Accessible_isStreamableContent (Accessible *obj);
420 SPIBoolean Accessible_isTable             (Accessible *obj);
421 SPIBoolean Accessible_isText              (Accessible *obj);
422 SPIBoolean Accessible_isValue             (Accessible *obj);
423
424 AccessibleAction *            Accessible_getAction            (Accessible *obj);
425 AccessibleApplication *       Accessible_getApplication       (Accessible *obj);
426 AccessibleComponent *         Accessible_getComponent         (Accessible *obj);
427 AccessibleEditableText *      Accessible_getEditableText      (Accessible *obj);
428 AccessibleHypertext *         Accessible_getHypertext         (Accessible *obj);
429 AccessibleImage *             Accessible_getImage             (Accessible *obj);
430 AccessibleSelection *         Accessible_getSelection         (Accessible *obj);
431 AccessibleStreamableContent * Accessible_getStreamableContent (Accessible *obj);
432 AccessibleTable *             Accessible_getTable             (Accessible *obj);
433 AccessibleText *              Accessible_getText              (Accessible *obj);
434 AccessibleValue *             Accessible_getValue             (Accessible *obj);
435 AccessibleUnknown *           Accessible_queryInterface       (Accessible *obj,
436                                                    const char *interface_name);
437
438 /* AccessibleAction function prototypes  */
439
440 void       AccessibleAction_ref            (AccessibleAction *obj);
441 void       AccessibleAction_unref          (AccessibleAction *obj);
442 long       AccessibleAction_getNActions    (AccessibleAction *obj);
443 char      *AccessibleAction_getName        (AccessibleAction *obj,
444                                             long int          i);
445 char      *AccessibleAction_getDescription (AccessibleAction *obj,
446                                             long int          i);
447 SPIBoolean AccessibleAction_doAction       (AccessibleAction *obj,
448                                             long int          i);
449 char      *AccessibleAction_getKeyBinding  (AccessibleAction *obj,
450                                             long int          i);
451
452 /* AccessibleApplication function prototypes  */
453
454 void       AccessibleApplication_ref            (AccessibleApplication *obj);
455 void       AccessibleApplication_unref          (AccessibleApplication *obj);
456 char      *AccessibleApplication_getToolkitName (AccessibleApplication *obj);
457 char      *AccessibleApplication_getVersion     (AccessibleApplication *obj);
458 long       AccessibleApplication_getID          (AccessibleApplication *obj);
459 SPIBoolean AccessibleApplication_pause          (AccessibleApplication *obj);
460 SPIBoolean AccessibleApplication_resume         (AccessibleApplication *obj);
461
462 /* AccessibleComponent function prototypes */
463
464 void        AccessibleComponent_ref         (AccessibleComponent *obj);
465 void        AccessibleComponent_unref       (AccessibleComponent *obj);
466 SPIBoolean  AccessibleComponent_contains    (AccessibleComponent *obj,
467                                              long int             x,
468                                              long int             y,
469                                              AccessibleCoordType  ctype);
470 Accessible *AccessibleComponent_getAccessibleAtPoint (
471                                              AccessibleComponent *obj,
472                                              long int             x,
473                                              long int             y,
474                                              AccessibleCoordType  ctype);
475 void        AccessibleComponent_getExtents  (AccessibleComponent *obj,
476                                              long int            *x,
477                                              long int            *y,
478                                              long int            *width,
479                                              long int            *height,
480                                              AccessibleCoordType  ctype);
481 void        AccessibleComponent_getPosition (AccessibleComponent *obj,
482                                              long int            *x,
483                                              long int            *y,
484                                              AccessibleCoordType  ctype);
485 void        AccessibleComponent_getSize     (AccessibleComponent *obj,
486                                              long int            *width,
487                                              long int            *height);
488 AccessibleComponentLayer
489             AccessibleComponent_getLayer    (AccessibleComponent *obj);
490 SPIBoolean  AccessibleComponent_grabFocus   (AccessibleComponent *obj);
491 short       AccessibleComponent_getMDIZOrder(AccessibleComponent *obj);
492
493 /* AccessibleEditableText function prototypes  */
494
495 void
496 AccessibleEditableText_ref (AccessibleEditableText *obj);
497
498 void
499 AccessibleEditableText_unref (AccessibleEditableText *obj);
500
501 SPIBoolean
502 AccessibleEditableText_setAttributes (AccessibleEditableText *obj,
503                                       const char *attributes,
504                                       long int startOffset,
505                                       long int endOffset);
506
507 SPIBoolean
508 AccessibleEditableText_setTextContents (AccessibleEditableText *obj,
509                                         const char *newContents);
510
511 SPIBoolean
512 AccessibleEditableText_insertText (AccessibleEditableText *obj,
513                                    long int position,
514                                    const char *text,
515                                    long int length);
516
517 SPIBoolean
518 AccessibleEditableText_copyText (AccessibleText *obj,
519                                  long int startPos,
520                                  long int endPos);
521
522 SPIBoolean
523 AccessibleEditableText_cutText (AccessibleEditableText *obj,
524                                 long int startPos,
525                                 long int endPos);
526
527 SPIBoolean
528 AccessibleEditableText_deleteText (AccessibleEditableText *obj,
529                                    long int startPos,
530                                    long int endPos);
531
532 SPIBoolean
533 AccessibleEditableText_pasteText (AccessibleEditableText *obj,
534                                   long int position);
535
536 /*
537  *
538  * AccessibleHyperlink function prototypes
539  *
540  */
541 void
542 AccessibleHyperlink_ref (AccessibleHyperlink *obj);
543 void
544 AccessibleHyperlink_unref (AccessibleHyperlink *obj);
545
546 long
547 AccessibleHyperlink_getNAnchors (AccessibleHyperlink *obj);
548
549 char *
550 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
551                             long int i);
552
553 Accessible *
554 AccessibleHyperlink_getObject (AccessibleHyperlink *obj,
555                                long int i);
556
557 void
558 AccessibleHyperlink_getIndexRange (AccessibleHyperlink *obj,
559                                    long int *startIndex,
560                                    long int *endIndex);
561
562 SPIBoolean
563 AccessibleHyperlink_isValid (AccessibleHyperlink *obj);
564
565 /*
566  *
567  * AccessibleHypertext function prototypes
568  *
569  */
570
571 void
572 AccessibleHypertext_ref (AccessibleHypertext *obj);
573
574 void
575 AccessibleHypertext_unref (AccessibleHypertext *obj);
576
577 long
578 AccessibleHypertext_getNLinks (AccessibleHypertext *obj);
579
580 AccessibleHyperlink *
581 AccessibleHypertext_getLink (AccessibleHypertext *obj,
582                              long int linkIndex);
583
584 long
585 AccessibleHypertext_getLinkIndex (AccessibleHypertext *obj,
586                                   long int characterOffset);
587
588 /*
589  *
590  * AccessibleImage function prototypes
591  *
592  */
593
594 void
595 AccessibleImage_ref (AccessibleImage *obj);
596
597 void
598 AccessibleImage_unref (AccessibleImage *obj);
599
600 char *
601 AccessibleImage_getImageDescription (AccessibleImage *obj);
602
603 void
604 AccessibleImage_getImageSize (AccessibleImage *obj,
605                               long int *width,
606                               long int *height);
607
608 void
609 AccessibleImage_getImagePosition (AccessibleImage *obj,
610                                   long int *x,
611                                   long int *y,
612                                   AccessibleCoordType ctype);
613
614 void
615 AccessibleImage_getImageExtents (AccessibleImage *obj,
616                                  long int *x,
617                                  long int *y,
618                                  long int *width,
619                                  long int *height,
620                                  AccessibleCoordType ctype);
621 /*
622  *
623  * AccessibleRelation function prototypes
624  *
625  */
626
627 void AccessibleRelation_ref   (AccessibleRelation *obj);
628 void AccessibleRelation_unref (AccessibleRelation *obj);
629
630 AccessibleRelationType
631 AccessibleRelation_getRelationType (AccessibleRelation *obj);
632
633 int
634 AccessibleRelation_getNTargets (AccessibleRelation *obj);
635
636 Accessible *
637 AccessibleRelation_getTarget (AccessibleRelation *obj, int i);
638
639
640 /*
641  *
642  * AccessibleSelection function prototypes
643  *
644  */
645
646 void AccessibleSelection_ref   (AccessibleSelection *obj);
647 void AccessibleSelection_unref (AccessibleSelection *obj);
648
649 long
650 AccessibleSelection_getNSelectedChildren (AccessibleSelection *obj);
651
652 Accessible *
653 AccessibleSelection_getSelectedChild (AccessibleSelection *obj,
654                                       long int selectedChildIndex);
655
656 SPIBoolean
657 AccessibleSelection_selectChild (AccessibleSelection *obj,
658                                  long int childIndex);
659
660 SPIBoolean
661 AccessibleSelection_deselectSelectedChild (AccessibleSelection *obj,
662                                            long int selectedChildIndex);
663
664 SPIBoolean
665 AccessibleSelection_isChildSelected (AccessibleSelection *obj,
666                                      long int childIndex);
667
668 SPIBoolean
669 AccessibleSelection_selectAll (AccessibleSelection *obj);
670
671 SPIBoolean
672 AccessibleSelection_clearSelection (AccessibleSelection *obj);
673
674
675 /*
676  *
677  * AccessibleStateSet function prototypes
678  *
679  */
680
681 void AccessibleStateSet_ref   (AccessibleStateSet *obj);
682 void AccessibleStateSet_unref (AccessibleStateSet *obj);
683
684 SPIBoolean
685 AccessibleStateSet_contains (AccessibleStateSet *obj,
686                              AccessibleState state);
687
688 void
689 AccessibleStateSet_add (AccessibleStateSet *obj,
690                         AccessibleState state);
691
692 void
693 AccessibleStateSet_remove (AccessibleStateSet *obj,
694                            AccessibleState state);
695
696 SPIBoolean
697 AccessibleStateSet_equals (AccessibleStateSet *obj,
698                            AccessibleStateSet *obj2);
699
700 AccessibleStateSet *
701 AccessibleStateSet_compare (AccessibleStateSet *obj,
702                             AccessibleStateSet *obj2);
703
704 SPIBoolean
705 AccessibleStateSet_isEmpty (AccessibleStateSet *obj);
706
707 void
708 AccessibleStreamableContent_ref (AccessibleStreamableContent *obj);
709 void
710 AccessibleStreamableContent_unref (AccessibleStreamableContent *obj);
711 char **
712 AccessibleStreamableContent_getContentTypes (AccessibleStreamableContent *obj);
713 SPIBoolean
714 AccessibleStreamableContent_open (AccessibleStreamableContent *obj,
715                                   const char *content_type);
716 SPIBoolean
717 AccessibleStreamableContent_seek (AccessibleStreamableContent *obj,
718                                   long int offset,
719                                   unsigned int seek_type);
720 SPIBoolean
721 AccessibleStreamableContent_read (AccessibleStreamableContent *obj,
722                                   void *buff,
723                                   long int nbytes,
724                                   unsigned int read_type);
725 /*
726  *
727  * AccessibleTable function prototypes
728  *
729  */
730
731 void AccessibleTable_ref   (AccessibleTable *obj);
732 void AccessibleTable_unref (AccessibleTable *obj);
733
734 Accessible *
735 AccessibleTable_getCaption (AccessibleTable *obj);
736
737 Accessible *
738 AccessibleTable_getSummary (AccessibleTable *obj);
739
740 long
741 AccessibleTable_getNRows (AccessibleTable *obj);
742
743 long
744 AccessibleTable_getNColumns (AccessibleTable *obj);
745
746 Accessible *
747 AccessibleTable_getAccessibleAt (AccessibleTable *obj,
748                                  long int row,
749                                  long int column);
750
751 long
752 AccessibleTable_getIndexAt (AccessibleTable *obj,
753                             long int row,
754                             long int column);
755
756 long
757 AccessibleTable_getRowAtIndex (AccessibleTable *obj,
758                                long int index);
759
760 long
761 AccessibleTable_getColumnAtIndex (AccessibleTable *obj,
762                                   long int index);
763
764 char *
765 AccessibleTable_getRowDescription (AccessibleTable *obj,
766                                    long int row);
767
768 char *
769 AccessibleTable_getColumnDescription (AccessibleTable *obj,
770                                       long int column);
771
772 long
773 AccessibleTable_getRowExtentAt (AccessibleTable *obj,
774                                 long int row,
775                                 long int column);
776
777 long
778 AccessibleTable_getColumnExtentAt (AccessibleTable *obj,
779                                    long int row,
780                                    long int column);
781
782 Accessible *
783 AccessibleTable_getRowHeader (AccessibleTable *obj,
784                               long int row);
785
786 Accessible *
787 AccessibleTable_getColumnHeader (AccessibleTable *obj,
788                                  long int column);
789
790 long
791 AccessibleTable_getNSelectedRows (AccessibleTable *obj);
792
793 long
794 AccessibleTable_getSelectedRows (AccessibleTable *obj,
795                                  long int **selectedRows);
796
797 long
798 AccessibleTable_getNSelectedColumns (AccessibleTable *obj);
799
800 long
801 AccessibleTable_getSelectedColumns (AccessibleTable *obj,
802                                     long int **selectedColumns);
803
804 SPIBoolean
805 AccessibleTable_isRowSelected (AccessibleTable *obj,
806                                long int row);
807
808 SPIBoolean
809 AccessibleTable_isColumnSelected (AccessibleTable *obj,
810                                   long int column);
811
812 SPIBoolean
813 AccessibleTable_isSelected (AccessibleTable *obj,
814                             long int row,
815                             long int column);
816
817 /*
818  *
819  * AccessibleText function prototypes
820  *
821  */
822
823 void AccessibleText_ref   (AccessibleText *obj);
824 void AccessibleText_unref (AccessibleText *obj);
825
826 long
827 AccessibleText_getCharacterCount (AccessibleText *obj);
828
829 char *
830 AccessibleText_getText (AccessibleText *obj,
831                         long int startOffset,
832                         long int endOffset);
833
834 long
835 AccessibleText_getCaretOffset (AccessibleText *obj);
836
837 char *
838 AccessibleText_getAttributes (AccessibleText *obj,
839                                  long int offset,
840                                  long int *startOffset,
841                                  long int *endOffset);
842
843
844 SPIBoolean
845 AccessibleText_setCaretOffset (AccessibleText *obj,
846                                long int newOffset);
847
848 char *
849 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
850                                     long int offset,
851                                     AccessibleTextBoundaryType type,
852                                     long int *startOffset,
853                                     long int *endOffset);
854
855 char *
856 AccessibleText_getTextAtOffset (AccessibleText *obj,
857                                 long int offset,
858                                 AccessibleTextBoundaryType type,
859                                 long int *startOffset,
860                                 long int *endOffset);
861
862 char *
863 AccessibleText_getTextAfterOffset (AccessibleText *obj,
864                                    long int offset,
865                                    AccessibleTextBoundaryType type,
866                                    long int *startOffset,
867                                    long int *endOffset);
868
869 unsigned long
870 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
871                                      long int offset);
872
873 void
874 AccessibleText_getCharacterExtents (AccessibleText *obj,
875                                     long int offset,
876                                     long int *x,
877                                     long int *y,
878                                     long int *width,
879                                     long int *height,
880                                     AccessibleCoordType type);
881
882 void
883 AccessibleText_getRangeExtents (AccessibleText *obj,
884                                 long int startOffset,
885                                 long int endOffset,
886                                 long int *x,
887                                 long int *y,
888                                 long int *width,
889                                 long int *height,
890                                 AccessibleCoordType type);
891
892 AccessibleTextRange **
893 AccessibleText_getBoundedRanges (AccessibleText *obj,
894                                  long int x,
895                                  long int y,
896                                  long int width,
897                                  long int height,
898                                  AccessibleCoordType type,
899                                  AccessibleTextClipType clipTypeX,
900                                  AccessibleTextClipType clipTypeY);
901
902 void
903 AccessibleTextRange_freeRanges (AccessibleTextRange **ranges);
904
905 long
906 AccessibleText_getOffsetAtPoint (AccessibleText *obj,
907                                  long int x,
908                                  long int y,
909                                  AccessibleCoordType type);
910
911 long
912 AccessibleText_getNSelections (AccessibleText *obj);
913
914 void
915 AccessibleText_getSelection (AccessibleText *obj,
916                              long int selectionNum,
917                              long int *startOffset,
918                              long int *endOffset);
919
920
921 SPIBoolean
922 AccessibleText_addSelection (AccessibleText *obj,
923                              long int startOffset,
924                              long int endOffset);
925
926 SPIBoolean
927 AccessibleText_removeSelection (AccessibleText *obj,
928                                 long int selectionNum);
929
930 SPIBoolean
931 AccessibleText_setSelection (AccessibleText *obj,
932                              long int selectionNum,
933                              long int startOffset,
934                              long int endOffset);
935
936 /* AccessibleValue Function Prototypes:  */
937
938 void       AccessibleValue_ref             (AccessibleValue *obj);
939 void       AccessibleValue_unref           (AccessibleValue *obj);
940 double     AccessibleValue_getMinimumValue (AccessibleValue *obj);
941 double     AccessibleValue_getCurrentValue (AccessibleValue *obj);
942 double     AccessibleValue_getMaximumValue (AccessibleValue *obj);
943 SPIBoolean AccessibleValue_setCurrentValue (AccessibleValue *obj,
944                                             double           newValue);
945
946 /* Persistance and lifecycle control for AccessibleEvents. */
947 SPIBoolean AccessibleEvent_ref (const AccessibleEvent *e);
948 void AccessibleEvent_unref (const AccessibleEvent *e);
949
950 /*
951  * Prototypes for accessor functions, to obtain context
952  * information for accessible events.
953  */
954
955 char*        AccessibleTextChangedEvent_getChangeString (const AccessibleEvent *e);
956 Accessible * AccessibleChildChangedEvent_getChildAccessible (const AccessibleEvent *e);
957
958 Accessible * AccessibleParentChangedEvent_getParentAccessible (const AccessibleEvent *e);
959
960 char*        AccessibleTextSelectionChangedEvent_getSelectionString (const AccessibleEvent *e);
961
962 char*        AccessibleWindowEvent_getTitleString (const AccessibleEvent *e);
963
964 Accessible * AccessibleActiveDescendantChangedEvent_getActiveDescendant (const AccessibleEvent *e);
965
966 Accessible * AccessibleTableSummaryChangedEvent_getSummaryAccessible (const AccessibleEvent *e); 
967
968 Accessible * AccessibleTableHeaderChangedEvent_getHeaderAccessible (const AccessibleEvent *e);
969
970 char *       AccessibleTableCaptionChangedEvent_getCaptionString (const AccessibleEvent *e);
971
972 char *       AccessibleTableRowDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
973
974 char *       AccessibleTableColumnDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
975
976 char *       AccessibleDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
977
978 char *       AccessibleNameChangedEvent_getNameString (const AccessibleEvent *e);
979
980 /* Misc methods and error handling */
981 void SPI_freeString (char *s);
982
983 char* SPI_dupString (char *s);
984
985 SPIBoolean SPI_exceptionHandlerPush (SPIExceptionHandler *handler);
986
987 SPIExceptionHandler* SPI_exceptionHandlerPop (void);
988
989 SPIExceptionType SPIException_getSourceType (SPIException *err);
990
991 SPIExceptionCode SPIException_getExceptionCode (SPIException *err);
992
993 Accessible* SPIAccessibleException_getSource (SPIException *err);
994
995 char* SPIException_getDescription (SPIException *err);
996
997 #ifdef  __cplusplus
998 }
999 #endif
1000
1001 #endif