## AccessibleComponent Interface

AccessibleComponent Interface — An interface implemented by objects which occupy area on screen.

## Synopsis

    enum                AccessibleCoordType;
    enum                AccessibleComponentLayer;
    void                AccessibleComponent_ref             (AccessibleComponent *obj);
    void                AccessibleComponent_unref           (AccessibleComponent *obj);
    SPIBoolean          AccessibleComponent_contains        (AccessibleComponent *obj,
                                                             long int x,
                                                             long int y,
                                                             AccessibleCoordType ctype);
    Accessible *        AccessibleComponent_getAccessibleAtPoint
                                                            (AccessibleComponent *obj,
                                                             long int x,
                                                             long int y,
                                                             AccessibleCoordType ctype);
    void                AccessibleComponent_getExtents      (AccessibleComponent *obj,
                                                             long int *x,
                                                             long int *y,
                                                             long int *width,
                                                             long int *height,
                                                             AccessibleCoordType ctype);
    void                AccessibleComponent_getPosition     (AccessibleComponent *obj,
                                                             long int *x,
                                                             long int *y,
                                                             AccessibleCoordType ctype);
    void                AccessibleComponent_getSize         (AccessibleComponent *obj,
                                                             long int *width,
                                                             long int *height);
    AccessibleComponentLayer  AccessibleComponent_getLayer  (AccessibleComponent *obj);
    short               AccessibleComponent_getMDIZOrder    (AccessibleComponent *obj);
    SPIBoolean          AccessibleComponent_grabFocus       (AccessibleComponent *obj);
    double              AccessibleComponent_getAlpha        (AccessibleComponent *obj);

## Description

The Component interface is implemented by objects which are visible, or are potentially visible, onscreen. The interface exposes onscreen bounds, the approximate "layer" in which the object resides, sometimes including z-order information, and allows objects to explicitly be told to request focus.

## Details

### enum AccessibleCoordType

    typedef enum {
      SPI_COORD_TYPE_SCREEN,
      SPI_COORD_TYPE_WINDOW
    } AccessibleCoordType;

Specifies how xy coordinates are to be interpreted. Used by functions such as `AccessibleComponent_getPosition()` and `AccessibleText_getCharacterExtents()`

`SPI_COORD_TYPE_SCREEN` | specifies xy coordinates relative to the screen
`SPI_COORD_TYPE_WINDOW` | specifies xy coordinates relative to an object's top-level window

### enum AccessibleComponentLayer

    typedef enum {
        SPI_LAYER_INVALID,
        SPI_LAYER_BACKGROUND,
        SPI_LAYER_CANVAS,
        SPI_LAYER_WIDGET,
        SPI_LAYER_MDI,
        SPI_LAYER_POPUP,
        SPI_LAYER_OVERLAY,
        SPI_LAYER_WINDOW,
        SPI_LAYER_LAST_DEFINED
    } AccessibleComponentLayer;

Describes the layer of a component.

These enumerated "layer values" are used when determining which UI rendering layer a component is drawn into, which can help in making determinations of when components occlude one another.

`SPI_LAYER_INVALID` | The layer cannot be determined or is somehow undefined.
`SPI_LAYER_BACKGROUND` | Component belongs to the destop background.
`SPI_LAYER_CANVAS` | Component is a canvas backdrop or drawing area.
`SPI_LAYER_WIDGET` | Component is a 'normal' widget.
`SPI_LAYER_MDI` | Component is drawn in the MDI layer and may have valid Z-information relative to other MDI-layer components.
`SPI_LAYER_POPUP` | Component is in the popup layer, above other widgets and MDI components.
`SPI_LAYER_OVERLAY` | Component is in the overlay plane - this value is reserved for future use.
`SPI_LAYER_WINDOW` | Component is in the window layer and have valid Z-information relative to other window-layer components.
`SPI_LAYER_LAST_DEFINED` | Used to determine the last valid value in the enum, should not be encountered.

### AccessibleComponent_ref ()

    void                AccessibleComponent_ref             (AccessibleComponent *obj);

Increment the reference count for an AccessibleComponent.

`obj` : | a pointer to an object implementing AccessibleComponent on which to operate.

### AccessibleComponent_unref ()

    void                AccessibleComponent_unref           (AccessibleComponent *obj);

Decrement the reference count for an AccessibleComponent.

`obj` : | a pointer to the object implementing AccessibleComponent on which to operate.

### AccessibleComponent_contains ()

    SPIBoolean          AccessibleComponent_contains        (AccessibleComponent *obj,
                                                             long int x,
                                                             long int y,
                                                             AccessibleCoordType ctype);

Query whether a given AccessibleComponent contains a particular point.

`obj` : | a pointer to the AccessibleComponent to query.
`x` : | a long specifying the x coordinate in question.
`y` : | a long specifying the y coordinate in question.
`ctype` : | the desired coordinate system of the point (`x`, `y`) (e.g. SPI_COORD_TYPE_WINDOW, SPI_COORD_TYPE_SCREEN).
Returns : | a TRUE if the specified component contains the point (`x`, `y`), otherwise FALSE.

### AccessibleComponent_getAccessibleAtPoint ()

    Accessible *        AccessibleComponent_getAccessibleAtPoint
                                                            (AccessibleComponent *obj,
                                                             long int x,
                                                             long int y,
                                                             AccessibleCoordType ctype);

Get the accessible child at a given coordinate within an AccessibleComponent.

`obj` : | a pointer to the AccessibleComponent to query.
`x` : | a long specifying the x coordinate of the point in question.
`y` : | a long specifying the y coordinate of the point in question.
`ctype` : | the coordinate system of the point (`x`, `y`) (e.g. SPI_COORD_TYPE_WINDOW, SPI_COORD_TYPE_SCREEN).
Returns : | a pointer to an Accessible child of the specified component which contains the point (`x`, `y`), or NULL of no child contains the point.

### AccessibleComponent_getExtents ()

    void                AccessibleComponent_getExtents      (AccessibleComponent *obj,
                                                             long int *x,
                                                             long int *y,
                                                             long int *width,
                                                             long int *height,
                                                             AccessibleCoordType ctype);

Get the bounding box of the specified AccessibleComponent.

`obj` : | a pointer to the AccessibleComponent to query.
`x` : | a pointer to a long into which the minimum x coordinate will be returned.
`y` : | a pointer to a long into which the minimum y coordinate will be returned.
`width` : | a pointer to a long into which the x extents (width) will be returned.
`height` : | a pointer to a long into which the y extents (height) will be returned.
`ctype` : | the desired coordinate system into which to return the results, (e.g. SPI_COORD_TYPE_WINDOW, SPI_COORD_TYPE_SCREEN).

### AccessibleComponent_getPosition ()

    void                AccessibleComponent_getPosition     (AccessibleComponent *obj,
                                                             long int *x,
                                                             long int *y,
                                                             AccessibleCoordType ctype);

Get the minimum x and y coordinates of the specified AccessibleComponent.

`obj` : | a pointer to the AccessibleComponent to query.
`x` : | a pointer to a long into which the minimum x coordinate will be returned.
`y` : | a pointer to a long into which the minimum y coordinate will be returned.
`ctype` : | the desired coordinate system into which to return the results, (e.g. SPI_COORD_TYPE_WINDOW, SPI_COORD_TYPE_SCREEN).

### AccessibleComponent_getSize ()

    void                AccessibleComponent_getSize         (AccessibleComponent *obj,
                                                             long int *width,
                                                             long int *height);

Get the size of the specified AccessibleComponent.

`obj` : | a pointer to the AccessibleComponent to query.
`width` : | a pointer to a long into which the x extents (width) will be returned.
`height` : | a pointer to a long into which the y extents (height) will be returned.

### AccessibleComponent_getLayer ()

    AccessibleComponentLayer  AccessibleComponent_getLayer  (AccessibleComponent *obj);

Query which layer the component is painted into, to help determine its visibility in terms of stacking order.

`obj` : | a pointer to the AccessibleComponent to query.
Returns : | the AccessibleComponentLayer into which this component is painted.

### AccessibleComponent_getMDIZOrder ()

    short               AccessibleComponent_getMDIZOrder    (AccessibleComponent *obj);

Query the z stacking order of a component which is in the MDI or window layer. (Bigger z-order numbers mean nearer the top)

`obj` : | a pointer to the AccessibleComponent to query.
Returns : | a short integer indicating the stacking order of the component in the MDI layer, or -1 if the component is not in the MDI layer.

### AccessibleComponent_grabFocus ()

    SPIBoolean          AccessibleComponent_grabFocus       (AccessibleComponent *obj);

Attempt to set the keyboard input focus to the specified AccessibleComponent.

`obj` : | a pointer to the AccessibleComponent on which to operate.
Returns : | TRUE if successful, FALSE otherwise.

### AccessibleComponent_getAlpha ()

    double              AccessibleComponent_getAlpha        (AccessibleComponent *obj);

Get the opacity/alpha value of a component, if alpha blending is in use.

`obj` : | The AccessibleComponent to be queried.
Returns : | the opacity value of a component, as a double between 0.0 and 1.0.