9b341d6a503457a58346151f25edbab036ce3108
[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 /**
187  *AccessibleStreamableContentSeekType
188  *@SPI_STREAM_SEEK_SET: seek from the 'top' of the streamable
189  *@SPI_STREAM_SEEK_CUR: seek from the current position in the stream
190  *@SPI_STREAM_SEEK_END: seek from the end of the stream (if known)
191  *
192  *The seek type for a specified offset in AccessibleStreamableContent_seek.
193  **/
194 typedef enum
195 {
196   SPI_STREAM_SEEK_SET,
197   SPI_STREAM_SEEK_CUR,
198   SPI_STREAM_SEEK_END
199 } AccessibleStreamableContentSeekType;
200
201 typedef struct _SPIException SPIException;
202
203 typedef SPIBoolean 
204 (* SPIExceptionHandler) (SPIException *err, SPIBoolean is_fatal);
205
206 typedef enum {
207         SPI_EXCEPTION_UNSPECIFIED,
208         SPI_EXCEPTION_DISCONNECT,
209         SPI_EXCEPTION_NO_IMPL,
210         SPI_EXCEPTION_IO,
211         SPI_EXCEPTION_BAD_DATA
212 } SPIExceptionCode;
213
214 typedef enum {
215         SPI_EXCEPTION_SOURCE_UNSPECIFIED,
216         SPI_EXCEPTION_SOURCE_ACCESSIBLE,
217         SPI_EXCEPTION_SOURCE_REGISTRY,
218         SPI_EXCEPTION_SOURCE_DEVICE
219 } SPIExceptionType;
220
221 typedef unsigned long AccessibleKeyEventMask;
222 typedef unsigned long AccessibleDeviceEventMask;
223
224 typedef struct {
225         long x;
226         long y;
227         long width;
228         long height;
229 } SPIRect;
230
231 /**
232  *AccessibleComponentLayer:
233  *@SPI_LAYER_INVALID: The layer cannot be determined or is somehow undefined.
234  *@SPI_LAYER_BACKGROUND: Component belongs to the destop background.
235  *@SPI_LAYER_CANVAS: Component is a canvas backdrop or drawing area.
236  *@SPI_LAYER_WIDGET: Component is a 'normal' widget.
237  *@SPI_LAYER_MDI: Component is drawn in the MDI layer and may have valid
238  *                         Z-information relative to other MDI-layer components.
239  *@SPI_LAYER_POPUP: Component is in the popup layer, above other widgets and
240  *                         MDI components.
241  *@SPI_LAYER_OVERLAY: Component is in the overlay plane - this value is reserved
242  *                         for future use.
243  *@SPI_LAYER_WINDOW: Component is in the window layer and have valid Z-information
244  *                   relative to other window-layer components.
245  *@SPI_LAYER_LAST_DEFINED: Used to determine the last valid value in the enum,
246  *                         should not be encountered.   
247  *
248  * Describes the layer of a component.
249  *
250  * These enumerated "layer values" are used when determining which UI
251  * rendering layer a component is drawn into, which can help in making
252  * determinations of when components occlude one another.
253  **/
254 typedef enum {
255     SPI_LAYER_INVALID,
256     SPI_LAYER_BACKGROUND,
257     SPI_LAYER_CANVAS,
258     SPI_LAYER_WIDGET,
259     SPI_LAYER_MDI,
260     SPI_LAYER_POPUP,
261     SPI_LAYER_OVERLAY,
262     SPI_LAYER_WINDOW,
263     SPI_LAYER_LAST_DEFINED      
264 } AccessibleComponentLayer;
265
266
267 /**
268  * AccessibleTextRange:
269  * @start: the first nominal character position within the range.
270  * @end: the first nominal character position following the range.
271  * @content: The actual text content between @start and @end, as a UTF-8 string.
272  *
273  * Structure which encapsulates a text range - must be associated with an
274  *          AccessibleText-implementing object.
275  **/
276 typedef struct _AccessibleTextRange
277 {
278   long int        start;
279   long int        end;
280   char           *contents;
281 } AccessibleTextRange;
282
283 /**
284  * AccessibleKeySet:
285  * @keysyms:
286  * @keycodes:
287  * @len:
288  *
289  * Structure containing identifying information about a set of keycode or
290  *        keysyms.
291  **/
292 typedef struct _AccessibleKeySet
293 {
294   unsigned long  *keysyms;
295   unsigned short *keycodes;
296   char          **keystrings;
297   short           len;
298 } AccessibleKeySet;
299
300 /*
301  * A special value for an AccessibleKeySet type, which tacitly
302  * includes all keycodes and keyvals for the specified modifier set.
303  */
304 #define SPI_KEYSET_ALL_KEYS NULL
305
306 typedef unsigned long AccessibleModifierMaskType;
307 /**
308  *AccessibleKeyMaskType:
309  *
310  *AccessibleKeyMaskType is a mask which is a set of key event modifiers
311  *which is specified in SPI_registerAccessibleKeystrokeListener.
312  **/
313
314 typedef AccessibleModifierMaskType AccessibleKeyMaskType;
315
316 /* Basic SPI initialization and event loop function prototypes */
317
318 int              SPI_init         (void);
319 void             SPI_event_main   (void);
320 void             SPI_event_quit   (void);
321 SPIBoolean       SPI_eventIsReady (void);
322 AccessibleEvent *SPI_nextEvent    (SPIBoolean waitForEvent);
323 int              SPI_exit         (void);
324
325 /* Event Listener creation and support.  */
326
327 void                      SPI_freeAccessibleKeySet (
328                                                    AccessibleKeySet         *keyset);
329 AccessibleKeySet        * SPI_createAccessibleKeySet (
330                                                    int                       len,
331                                                    const char               *keysyms,
332                                                    short                    *keycodes,
333                                                    const char              **keystrings);
334 AccessibleEventListener * SPI_createAccessibleEventListener (
335                                                    AccessibleEventListenerCB callback,
336                                                    void                     *user_data);
337 SPIBoolean                AccessibleEventListener_addCallback (
338                                                    AccessibleEventListener  *listener,
339                                                    AccessibleEventListenerCB callback,
340                                                    void                     *user_data);
341 SPIBoolean                AccessibleEventListener_removeCallback (
342                                                    AccessibleEventListener  *listener,
343                                                    AccessibleEventListenerCB callback);
344 void                      AccessibleEventListener_unref (
345                                                    AccessibleEventListener  *listener);
346
347 /* Device Event Listener creation and support.  */
348
349 /* First four are deprecated in favor of the last four; really just a re-name */
350
351 AccessibleKeystrokeListener * SPI_createAccessibleKeystrokeListener (
352                                         AccessibleKeystrokeListenerCB callback,
353                                         void                         *user_data);
354 SPIBoolean                    AccessibleKeystrokeListener_addCallback (
355                                         AccessibleKeystrokeListener  *listener,
356                                         AccessibleKeystrokeListenerCB callback,
357                                         void                         *user_data);
358 SPIBoolean                    AccessibleKeystrokeListener_removeCallback (
359                                         AccessibleKeystrokeListener *listener,
360                                         AccessibleKeystrokeListenerCB callback);
361 void                          AccessibleKeystrokeListener_unref (
362                                         AccessibleKeystrokeListener *listener);
363
364 AccessibleDeviceListener   * SPI_createAccessibleDeviceListener (
365                                         AccessibleDeviceListenerCB callback,
366                                         void                      *user_data);
367 SPIBoolean                    AccessibleDeviceListener_addCallback (
368                                         AccessibleDeviceListener  *listener,
369                                         AccessibleDeviceListenerCB callback,
370                                         void                      *user_data);
371 SPIBoolean                    AccessibleDeviceListener_removeCallback (
372                                         AccessibleDeviceListener  *listener,
373                                         AccessibleDeviceListenerCB callback);
374 void                          AccessibleDeviceListener_unref (
375                                         AccessibleDeviceListener *listener);
376
377 /* Global functions serviced by the registry */
378
379 SPIBoolean SPI_registerGlobalEventListener           (
380                                        AccessibleEventListener *listener,
381                                        const char              *eventType);
382 SPIBoolean SPI_deregisterGlobalEventListener         (
383                                        AccessibleEventListener *listener,
384                                        const char              *eventType);
385 SPIBoolean SPI_deregisterGlobalEventListenerAll      (
386                                        AccessibleEventListener *listener);
387 SPIBoolean SPI_registerAccessibleKeystrokeListener   (
388                                        AccessibleKeystrokeListener *listener,
389                                        AccessibleKeySet             *keys,
390                                        AccessibleKeyMaskType         modmask,
391                                        AccessibleKeyEventMask        eventmask,
392                                        AccessibleKeyListenerSyncType sync_type);
393 SPIBoolean SPI_deregisterAccessibleKeystrokeListener (
394                                        AccessibleKeystrokeListener *listener,
395                                        AccessibleKeyMaskType        modmask);
396
397 SPIBoolean SPI_registerDeviceEventListener   (
398                                        AccessibleDeviceListener   *listener,
399                                        AccessibleDeviceEventMask   eventmask,
400                                        void                       *filter);
401 SPIBoolean SPI_deregisterDeviceEventListener (
402                                        AccessibleDeviceListener   *listener,
403                                        void                       *filter);
404
405 int         SPI_getDesktopCount                  (void);
406 Accessible *SPI_getDesktop                       (int i);
407 int         SPI_getDesktopList                   (Accessible ***desktop_list);
408 void        SPI_freeDesktopList                  (Accessible  **desktop_list);
409
410 SPIBoolean  SPI_generateKeyboardEvent            (long int                    keyval,
411                                                   char                       *keystring,
412                                                   AccessibleKeySynthType      synth_type);
413
414 SPIBoolean  SPI_generateMouseEvent               (long int x, long int y, char *name);
415
416 /* Accessible function prototypes  */
417
418 void                 Accessible_ref              (Accessible *obj);
419 void                 Accessible_unref            (Accessible *obj);
420 char *               Accessible_getName          (Accessible *obj);
421 char *               Accessible_getDescription   (Accessible *obj);
422 Accessible *         Accessible_getParent        (Accessible *obj);
423 long                 Accessible_getChildCount    (Accessible *obj);
424 Accessible *         Accessible_getChildAtIndex  (Accessible *obj,
425                                                   long int    childIndex);
426 long                 Accessible_getIndexInParent (Accessible *obj);
427 AccessibleRelation **Accessible_getRelationSet   (Accessible *obj);
428 AccessibleRole       Accessible_getRole          (Accessible *obj);
429 char *               Accessible_getRoleName      (Accessible *obj);
430 char *               Accessible_getLocalizedRoleName (Accessible *obj);
431 AccessibleStateSet * Accessible_getStateSet      (Accessible *obj);
432
433 /* Interface query methods */
434
435 SPIBoolean Accessible_isAction            (Accessible *obj);
436 SPIBoolean Accessible_isApplication       (Accessible *obj);
437 SPIBoolean Accessible_isComponent         (Accessible *obj);
438 SPIBoolean Accessible_isEditableText      (Accessible *obj);
439 SPIBoolean Accessible_isHypertext         (Accessible *obj);
440 SPIBoolean Accessible_isImage             (Accessible *obj);
441 SPIBoolean Accessible_isSelection         (Accessible *obj);
442 SPIBoolean Accessible_isStreamableContent (Accessible *obj);
443 SPIBoolean Accessible_isTable             (Accessible *obj);
444 SPIBoolean Accessible_isText              (Accessible *obj);
445 SPIBoolean Accessible_isValue             (Accessible *obj);
446
447 AccessibleAction *            Accessible_getAction            (Accessible *obj);
448 AccessibleApplication *       Accessible_getApplication       (Accessible *obj);
449 AccessibleComponent *         Accessible_getComponent         (Accessible *obj);
450 AccessibleEditableText *      Accessible_getEditableText      (Accessible *obj);
451 AccessibleHypertext *         Accessible_getHypertext         (Accessible *obj);
452 AccessibleImage *             Accessible_getImage             (Accessible *obj);
453 AccessibleSelection *         Accessible_getSelection         (Accessible *obj);
454 AccessibleStreamableContent * Accessible_getStreamableContent (Accessible *obj);
455 AccessibleTable *             Accessible_getTable             (Accessible *obj);
456 AccessibleText *              Accessible_getText              (Accessible *obj);
457 AccessibleValue *             Accessible_getValue             (Accessible *obj);
458 AccessibleUnknown *           Accessible_queryInterface       (Accessible *obj,
459                                                    const char *interface_name);
460
461 /* AccessibleAction function prototypes  */
462
463 void       AccessibleAction_ref            (AccessibleAction *obj);
464 void       AccessibleAction_unref          (AccessibleAction *obj);
465 long       AccessibleAction_getNActions    (AccessibleAction *obj);
466 char      *AccessibleAction_getName        (AccessibleAction *obj,
467                                             long int          i);
468 char      *AccessibleAction_getDescription (AccessibleAction *obj,
469                                             long int          i);
470 SPIBoolean AccessibleAction_doAction       (AccessibleAction *obj,
471                                             long int          i);
472 char      *AccessibleAction_getKeyBinding  (AccessibleAction *obj,
473                                             long int          i);
474
475 /* AccessibleApplication function prototypes  */
476
477 void       AccessibleApplication_ref            (AccessibleApplication *obj);
478 void       AccessibleApplication_unref          (AccessibleApplication *obj);
479 char      *AccessibleApplication_getToolkitName (AccessibleApplication *obj);
480 char      *AccessibleApplication_getVersion     (AccessibleApplication *obj);
481 long       AccessibleApplication_getID          (AccessibleApplication *obj);
482 char      *AccessibleApplication_getLocale      (AccessibleApplication *obj, int lc_category);
483 SPIBoolean AccessibleApplication_pause          (AccessibleApplication *obj);
484 SPIBoolean AccessibleApplication_resume         (AccessibleApplication *obj);
485
486 /* AccessibleComponent function prototypes */
487
488 void        AccessibleComponent_ref         (AccessibleComponent *obj);
489 void        AccessibleComponent_unref       (AccessibleComponent *obj);
490 SPIBoolean  AccessibleComponent_contains    (AccessibleComponent *obj,
491                                              long int             x,
492                                              long int             y,
493                                              AccessibleCoordType  ctype);
494 Accessible *AccessibleComponent_getAccessibleAtPoint (
495                                              AccessibleComponent *obj,
496                                              long int             x,
497                                              long int             y,
498                                              AccessibleCoordType  ctype);
499 void        AccessibleComponent_getExtents  (AccessibleComponent *obj,
500                                              long int            *x,
501                                              long int            *y,
502                                              long int            *width,
503                                              long int            *height,
504                                              AccessibleCoordType  ctype);
505 void        AccessibleComponent_getPosition (AccessibleComponent *obj,
506                                              long int            *x,
507                                              long int            *y,
508                                              AccessibleCoordType  ctype);
509 void        AccessibleComponent_getSize     (AccessibleComponent *obj,
510                                              long int            *width,
511                                              long int            *height);
512 AccessibleComponentLayer
513             AccessibleComponent_getLayer    (AccessibleComponent *obj);
514 SPIBoolean  AccessibleComponent_grabFocus   (AccessibleComponent *obj);
515 short       AccessibleComponent_getMDIZOrder(AccessibleComponent *obj);
516
517 /* AccessibleEditableText function prototypes  */
518
519 void
520 AccessibleEditableText_ref (AccessibleEditableText *obj);
521
522 void
523 AccessibleEditableText_unref (AccessibleEditableText *obj);
524
525 SPIBoolean
526 AccessibleEditableText_setAttributes (AccessibleEditableText *obj,
527                                       const char *attributes,
528                                       long int startOffset,
529                                       long int endOffset);
530
531 SPIBoolean
532 AccessibleEditableText_setTextContents (AccessibleEditableText *obj,
533                                         const char *newContents);
534
535 SPIBoolean
536 AccessibleEditableText_insertText (AccessibleEditableText *obj,
537                                    long int position,
538                                    const char *text,
539                                    long int length);
540
541 SPIBoolean
542 AccessibleEditableText_copyText (AccessibleText *obj,
543                                  long int startPos,
544                                  long int endPos);
545
546 SPIBoolean
547 AccessibleEditableText_cutText (AccessibleEditableText *obj,
548                                 long int startPos,
549                                 long int endPos);
550
551 SPIBoolean
552 AccessibleEditableText_deleteText (AccessibleEditableText *obj,
553                                    long int startPos,
554                                    long int endPos);
555
556 SPIBoolean
557 AccessibleEditableText_pasteText (AccessibleEditableText *obj,
558                                   long int position);
559
560 /*
561  *
562  * AccessibleHyperlink function prototypes
563  *
564  */
565 void
566 AccessibleHyperlink_ref (AccessibleHyperlink *obj);
567 void
568 AccessibleHyperlink_unref (AccessibleHyperlink *obj);
569
570 long
571 AccessibleHyperlink_getNAnchors (AccessibleHyperlink *obj);
572
573 char *
574 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
575                             long int i);
576
577 Accessible *
578 AccessibleHyperlink_getObject (AccessibleHyperlink *obj,
579                                long int i);
580
581 void
582 AccessibleHyperlink_getIndexRange (AccessibleHyperlink *obj,
583                                    long int *startIndex,
584                                    long int *endIndex);
585
586 SPIBoolean
587 AccessibleHyperlink_isValid (AccessibleHyperlink *obj);
588
589 /*
590  *
591  * AccessibleHypertext function prototypes
592  *
593  */
594
595 void
596 AccessibleHypertext_ref (AccessibleHypertext *obj);
597
598 void
599 AccessibleHypertext_unref (AccessibleHypertext *obj);
600
601 long
602 AccessibleHypertext_getNLinks (AccessibleHypertext *obj);
603
604 AccessibleHyperlink *
605 AccessibleHypertext_getLink (AccessibleHypertext *obj,
606                              long int linkIndex);
607
608 long
609 AccessibleHypertext_getLinkIndex (AccessibleHypertext *obj,
610                                   long int characterOffset);
611
612 /*
613  *
614  * AccessibleImage function prototypes
615  *
616  */
617
618 void
619 AccessibleImage_ref (AccessibleImage *obj);
620
621 void
622 AccessibleImage_unref (AccessibleImage *obj);
623
624 char *
625 AccessibleImage_getImageDescription (AccessibleImage *obj);
626
627 void
628 AccessibleImage_getImageSize (AccessibleImage *obj,
629                               long int *width,
630                               long int *height);
631
632 void
633 AccessibleImage_getImagePosition (AccessibleImage *obj,
634                                   long int *x,
635                                   long int *y,
636                                   AccessibleCoordType ctype);
637
638 void
639 AccessibleImage_getImageExtents (AccessibleImage *obj,
640                                  long int *x,
641                                  long int *y,
642                                  long int *width,
643                                  long int *height,
644                                  AccessibleCoordType ctype);
645 /*
646  *
647  * AccessibleRelation function prototypes
648  *
649  */
650
651 void AccessibleRelation_ref   (AccessibleRelation *obj);
652 void AccessibleRelation_unref (AccessibleRelation *obj);
653
654 AccessibleRelationType
655 AccessibleRelation_getRelationType (AccessibleRelation *obj);
656
657 int
658 AccessibleRelation_getNTargets (AccessibleRelation *obj);
659
660 Accessible *
661 AccessibleRelation_getTarget (AccessibleRelation *obj, int i);
662
663
664 /*
665  *
666  * AccessibleSelection function prototypes
667  *
668  */
669
670 void AccessibleSelection_ref   (AccessibleSelection *obj);
671 void AccessibleSelection_unref (AccessibleSelection *obj);
672
673 long
674 AccessibleSelection_getNSelectedChildren (AccessibleSelection *obj);
675
676 Accessible *
677 AccessibleSelection_getSelectedChild (AccessibleSelection *obj,
678                                       long int selectedChildIndex);
679
680 SPIBoolean
681 AccessibleSelection_selectChild (AccessibleSelection *obj,
682                                  long int childIndex);
683
684 SPIBoolean
685 AccessibleSelection_deselectSelectedChild (AccessibleSelection *obj,
686                                            long int selectedChildIndex);
687
688 SPIBoolean
689 AccessibleSelection_isChildSelected (AccessibleSelection *obj,
690                                      long int childIndex);
691
692 SPIBoolean
693 AccessibleSelection_selectAll (AccessibleSelection *obj);
694
695 SPIBoolean
696 AccessibleSelection_clearSelection (AccessibleSelection *obj);
697
698
699 /*
700  *
701  * AccessibleStateSet function prototypes
702  *
703  */
704
705 void AccessibleStateSet_ref   (AccessibleStateSet *obj);
706 void AccessibleStateSet_unref (AccessibleStateSet *obj);
707
708 SPIBoolean
709 AccessibleStateSet_contains (AccessibleStateSet *obj,
710                              AccessibleState state);
711
712 void
713 AccessibleStateSet_add (AccessibleStateSet *obj,
714                         AccessibleState state);
715
716 void
717 AccessibleStateSet_remove (AccessibleStateSet *obj,
718                            AccessibleState state);
719
720 SPIBoolean
721 AccessibleStateSet_equals (AccessibleStateSet *obj,
722                            AccessibleStateSet *obj2);
723
724 AccessibleStateSet *
725 AccessibleStateSet_compare (AccessibleStateSet *obj,
726                             AccessibleStateSet *obj2);
727
728 SPIBoolean
729 AccessibleStateSet_isEmpty (AccessibleStateSet *obj);
730
731 void
732 AccessibleStreamableContent_ref (AccessibleStreamableContent *obj);
733 void
734 AccessibleStreamableContent_unref (AccessibleStreamableContent *obj);
735 char **
736 AccessibleStreamableContent_getContentTypes (AccessibleStreamableContent *obj);
737 void
738 AccessibleStreamableContent_freeContentTypeList (AccessibleStreamableContent *obj,
739                                                  char **list);
740 SPIBoolean
741 AccessibleStreamableContent_open (AccessibleStreamableContent *obj,
742                                   const char *content_type);
743 SPIBoolean
744 AccessibleStreamableContent_close (AccessibleStreamableContent *obj);
745
746 long int
747 AccessibleStreamableContent_seek (AccessibleStreamableContent *obj,
748                                   long int offset,
749                                   AccessibleStreamableContentSeekType seek_type);
750 SPIBoolean
751 AccessibleStreamableContent_read (AccessibleStreamableContent *obj,
752                                   void *buff,
753                                   long int nbytes,
754                                   unsigned int read_type);
755 /*
756  *
757  * AccessibleTable function prototypes
758  *
759  */
760
761 void AccessibleTable_ref   (AccessibleTable *obj);
762 void AccessibleTable_unref (AccessibleTable *obj);
763
764 Accessible *
765 AccessibleTable_getCaption (AccessibleTable *obj);
766
767 Accessible *
768 AccessibleTable_getSummary (AccessibleTable *obj);
769
770 long
771 AccessibleTable_getNRows (AccessibleTable *obj);
772
773 long
774 AccessibleTable_getNColumns (AccessibleTable *obj);
775
776 Accessible *
777 AccessibleTable_getAccessibleAt (AccessibleTable *obj,
778                                  long int row,
779                                  long int column);
780
781 long
782 AccessibleTable_getIndexAt (AccessibleTable *obj,
783                             long int row,
784                             long int column);
785
786 long
787 AccessibleTable_getRowAtIndex (AccessibleTable *obj,
788                                long int index);
789
790 long
791 AccessibleTable_getColumnAtIndex (AccessibleTable *obj,
792                                   long int index);
793
794 char *
795 AccessibleTable_getRowDescription (AccessibleTable *obj,
796                                    long int row);
797
798 char *
799 AccessibleTable_getColumnDescription (AccessibleTable *obj,
800                                       long int column);
801
802 long
803 AccessibleTable_getRowExtentAt (AccessibleTable *obj,
804                                 long int row,
805                                 long int column);
806
807 long
808 AccessibleTable_getColumnExtentAt (AccessibleTable *obj,
809                                    long int row,
810                                    long int column);
811
812 Accessible *
813 AccessibleTable_getRowHeader (AccessibleTable *obj,
814                               long int row);
815
816 Accessible *
817 AccessibleTable_getColumnHeader (AccessibleTable *obj,
818                                  long int column);
819
820 long
821 AccessibleTable_getNSelectedRows (AccessibleTable *obj);
822
823 long
824 AccessibleTable_getSelectedRows (AccessibleTable *obj,
825                                  long int **selectedRows);
826
827 long
828 AccessibleTable_getNSelectedColumns (AccessibleTable *obj);
829
830 long
831 AccessibleTable_getSelectedColumns (AccessibleTable *obj,
832                                     long int **selectedColumns);
833
834 SPIBoolean
835 AccessibleTable_isRowSelected (AccessibleTable *obj,
836                                long int row);
837
838 SPIBoolean
839 AccessibleTable_isColumnSelected (AccessibleTable *obj,
840                                   long int column);
841
842 SPIBoolean
843 AccessibleTable_isSelected (AccessibleTable *obj,
844                             long int row,
845                             long int column);
846
847 SPIBoolean
848 AccessibleTable_addRowSelection (AccessibleTable *obj,
849                                  long int row);
850 SPIBoolean
851 AccessibleTable_addColumnSelection (AccessibleTable *obj,
852                                     long int column);
853
854 SPIBoolean
855 AccessibleTable_removeRowSelection (AccessibleTable *obj,
856                                     long int row);
857 SPIBoolean
858 AccessibleTable_removeColumnSelection (AccessibleTable *obj,
859                                        long int column);
860
861 /*
862  *
863  * AccessibleText function prototypes
864  *
865  */
866
867 void AccessibleText_ref   (AccessibleText *obj);
868 void AccessibleText_unref (AccessibleText *obj);
869
870 long
871 AccessibleText_getCharacterCount (AccessibleText *obj);
872
873 char *
874 AccessibleText_getText (AccessibleText *obj,
875                         long int startOffset,
876                         long int endOffset);
877
878 long
879 AccessibleText_getCaretOffset (AccessibleText *obj);
880
881 char *
882 AccessibleText_getAttributes (AccessibleText *obj,
883                                  long int offset,
884                                  long int *startOffset,
885                                  long int *endOffset);
886
887 char *
888 AccessibleText_getDefaultAttributes (AccessibleText *obj);
889
890 SPIBoolean
891 AccessibleText_setCaretOffset (AccessibleText *obj,
892                                long int newOffset);
893
894 char *
895 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
896                                     long int offset,
897                                     AccessibleTextBoundaryType type,
898                                     long int *startOffset,
899                                     long int *endOffset);
900
901 char *
902 AccessibleText_getTextAtOffset (AccessibleText *obj,
903                                 long int offset,
904                                 AccessibleTextBoundaryType type,
905                                 long int *startOffset,
906                                 long int *endOffset);
907
908 char *
909 AccessibleText_getTextAfterOffset (AccessibleText *obj,
910                                    long int offset,
911                                    AccessibleTextBoundaryType type,
912                                    long int *startOffset,
913                                    long int *endOffset);
914
915 unsigned long
916 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
917                                      long int offset);
918
919 void
920 AccessibleText_getCharacterExtents (AccessibleText *obj,
921                                     long int offset,
922                                     long int *x,
923                                     long int *y,
924                                     long int *width,
925                                     long int *height,
926                                     AccessibleCoordType type);
927
928 void
929 AccessibleText_getRangeExtents (AccessibleText *obj,
930                                 long int startOffset,
931                                 long int endOffset,
932                                 long int *x,
933                                 long int *y,
934                                 long int *width,
935                                 long int *height,
936                                 AccessibleCoordType type);
937
938 AccessibleTextRange **
939 AccessibleText_getBoundedRanges (AccessibleText *obj,
940                                  long int x,
941                                  long int y,
942                                  long int width,
943                                  long int height,
944                                  AccessibleCoordType type,
945                                  AccessibleTextClipType clipTypeX,
946                                  AccessibleTextClipType clipTypeY);
947
948 void
949 AccessibleTextRange_freeRanges (AccessibleTextRange **ranges);
950
951 long
952 AccessibleText_getOffsetAtPoint (AccessibleText *obj,
953                                  long int x,
954                                  long int y,
955                                  AccessibleCoordType type);
956
957 long
958 AccessibleText_getNSelections (AccessibleText *obj);
959
960 void
961 AccessibleText_getSelection (AccessibleText *obj,
962                              long int selectionNum,
963                              long int *startOffset,
964                              long int *endOffset);
965
966
967 SPIBoolean
968 AccessibleText_addSelection (AccessibleText *obj,
969                              long int startOffset,
970                              long int endOffset);
971
972 SPIBoolean
973 AccessibleText_removeSelection (AccessibleText *obj,
974                                 long int selectionNum);
975
976 SPIBoolean
977 AccessibleText_setSelection (AccessibleText *obj,
978                              long int selectionNum,
979                              long int startOffset,
980                              long int endOffset);
981
982 /* AccessibleValue Function Prototypes:  */
983
984 void       AccessibleValue_ref             (AccessibleValue *obj);
985 void       AccessibleValue_unref           (AccessibleValue *obj);
986 double     AccessibleValue_getMinimumValue (AccessibleValue *obj);
987 double     AccessibleValue_getCurrentValue (AccessibleValue *obj);
988 double     AccessibleValue_getMaximumValue (AccessibleValue *obj);
989 SPIBoolean AccessibleValue_setCurrentValue (AccessibleValue *obj,
990                                             double           newValue);
991
992 /* Persistance and lifecycle control for AccessibleEvents. */
993 SPIBoolean AccessibleEvent_ref (const AccessibleEvent *e);
994 void AccessibleEvent_unref (const AccessibleEvent *e);
995
996 /*
997  * Prototypes for accessor functions, to obtain context
998  * information for accessible events.
999  */
1000
1001 char*        AccessibleTextChangedEvent_getChangeString (const AccessibleEvent *e);
1002 Accessible * AccessibleChildChangedEvent_getChildAccessible (const AccessibleEvent *e);
1003
1004 Accessible * AccessibleParentChangedEvent_getParentAccessible (const AccessibleEvent *e);
1005
1006 char*        AccessibleTextSelectionChangedEvent_getSelectionString (const AccessibleEvent *e);
1007
1008 char*        AccessibleWindowEvent_getTitleString (const AccessibleEvent *e);
1009
1010 Accessible * AccessibleActiveDescendantChangedEvent_getActiveDescendant (const AccessibleEvent *e);
1011
1012 Accessible * AccessibleTableSummaryChangedEvent_getSummaryAccessible (const AccessibleEvent *e); 
1013
1014 Accessible * AccessibleTableHeaderChangedEvent_getHeaderAccessible (const AccessibleEvent *e);
1015
1016 char *       AccessibleTableCaptionChangedEvent_getCaptionString (const AccessibleEvent *e);
1017
1018 char *       AccessibleTableRowDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
1019
1020 char *       AccessibleTableColumnDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
1021
1022 char *       AccessibleDescriptionChangedEvent_getDescriptionString (const AccessibleEvent *e);
1023
1024 char *       AccessibleNameChangedEvent_getNameString (const AccessibleEvent *e);
1025 SPIRect *    AccessibleBoundsChangedEvent_getNewBounds (const AccessibleEvent *e);
1026
1027 /* Misc methods and error handling */
1028 void SPI_freeString (char *s);
1029
1030 char* SPI_dupString (char *s);
1031
1032 void SPI_freeRect (SPIRect *rect);
1033
1034 SPIBoolean SPI_exceptionHandlerPush (SPIExceptionHandler *handler);
1035
1036 SPIExceptionHandler* SPI_exceptionHandlerPop (void);
1037
1038 SPIExceptionType SPIException_getSourceType (SPIException *err);
1039
1040 SPIExceptionCode SPIException_getExceptionCode (SPIException *err);
1041
1042 Accessible* SPIAccessibleException_getSource (SPIException *err);
1043
1044 char* SPIException_getDescription (SPIException *err);
1045
1046 #ifdef  __cplusplus
1047 }
1048 #endif
1049
1050 #endif