## AtkComponent AtkComponent — The ATK interface provided by UI components which occupy a physical area on the screen. which the user can activate/interact with. |

## Synopsis

                        AtkComponent;
    struct              AtkComponentIface;
    void                (*AtkFocusHandler)                  (AtkObject *object,
                                                             gboolean focus_in);
    struct              AtkRectangle;
    guint               atk_component_add_focus_handler     (AtkComponent *component,
                                                             AtkFocusHandler handler);
    gboolean            atk_component_contains              (AtkComponent *component,
                                                             gint x,
                                                             gint y,
                                                             AtkCoordType coord_type);
    void                atk_component_get_extents           (AtkComponent *component,
                                                             gint *x,
                                                             gint *y,
                                                             gint *width,
                                                             gint *height,
                                                             AtkCoordType coord_type);
    AtkLayer            atk_component_get_layer             (AtkComponent *component);
    gint                atk_component_get_mdi_zorder        (AtkComponent *component);
    void                atk_component_get_position          (AtkComponent *component,
                                                             gint *x,
                                                             gint *y,
                                                             AtkCoordType coord_type);
    void                atk_component_get_size              (AtkComponent *component,
                                                             gint *width,
                                                             gint *height);
    gboolean            atk_component_grab_focus            (AtkComponent *component);
    AtkObject *         atk_component_ref_accessible_at_point
                                                            (AtkComponent *component,
                                                             gint x,
                                                             gint y,
                                                             AtkCoordType coord_type);
    void                atk_component_remove_focus_handler  (AtkComponent *component,
                                                             guint handler_id);
    gboolean            atk_component_set_extents           (AtkComponent *component,
                                                             gint x,
                                                             gint y,
                                                             gint width,
                                                             gint height,
                                                             AtkCoordType coord_type);
    gboolean            atk_component_set_position          (AtkComponent *component,
                                                             gint x,
                                                             gint y,
                                                             AtkCoordType coord_type);
    gboolean            atk_component_set_size              (AtkComponent *component,
                                                             gint width,
                                                             gint height);
    gdouble             atk_component_get_alpha             (AtkComponent *component);

## Object Hierarchy

      GInterface
       +----AtkComponent

## Known Implementations

AtkComponent is implemented by AtkNoOpObject.

## Signals

      "bounds-changed"                                 : Run Last

## Description

AtkComponent should be implemented by most if not all UI elements with an actual on-screen presence, i.e. components which can be said to have a screen-coordinate bounding box. Virtually all widgets will need to have AtkComponent implementations provided for their corresponding AtkObject class. In short, only UI elements which are *not* GUI elements will omit this ATK interface.

A possible exception might be textual information with a transparent background, in which case text glyph bounding box information is provided by AtkText.

## Details

### AtkComponent

    typedef struct _AtkComponent AtkComponent;

### struct AtkComponentIface

    struct AtkComponentIface {
      GTypeInterface parent;

      guint          (* add_focus_handler)  (AtkComponent          *component,
                                             AtkFocusHandler        handler);

      gboolean       (* contains)           (AtkComponent          *component,
                                             gint                   x,
                                             gint                   y,
                                             AtkCoordType           coord_type);

      AtkObject*    (* ref_accessible_at_point)  (AtkComponent     *component,
                                             gint                   x,
                                             gint                   y,
                                             AtkCoordType           coord_type);
      void          (* get_extents)         (AtkComponent          *component,
                                             gint                  *x,
                                             gint                  *y,
                                             gint                  *width,
                                             gint                  *height,
                                             AtkCoordType          coord_type);
      void                     (* get_position)     (AtkComponent   *component,
                                                     gint           *x,
                                                     gint           *y,
                                                     AtkCoordType   coord_type);
      void                     (* get_size)                 (AtkComponent   *component,
                                                             gint           *width,
                                                             gint           *height);
      gboolean                 (* grab_focus)               (AtkComponent   *component);
      void                     (* remove_focus_handler)      (AtkComponent  *component,
                                                              guint         handler_id);
      gboolean                 (* set_extents)      (AtkComponent   *component,
                                                     gint           x,
                                                     gint           y,
                                                     gint           width,
                                                     gint           height,
                                                     AtkCoordType   coord_type);
      gboolean                 (* set_position)     (AtkComponent   *component,
                                                     gint           x,
                                                     gint           y,
                                                     AtkCoordType   coord_type);
      gboolean                 (* set_size)         (AtkComponent   *component,
                                                     gint           width,
                                                     gint           height);

      AtkLayer                 (* get_layer)        (AtkComponent   *component);
      gint                     (* get_mdi_zorder)   (AtkComponent   *component);

      /*
       * signal handlers
       */
      void                     (* bounds_changed)   (AtkComponent   *component,
                                                     AtkRectangle   *bounds);
      gdouble                  (* get_alpha)        (AtkComponent   *component);
    };

GTypeInterface `parent`; |
`add_focus_handler` () | This virtual function is deprecated since 2.9.4 and it should not be overriden. See `atk_component_add_focus_handler()` for more information.
`contains` () |
`ref_accessible_at_point` () |
`get_extents` () |
`get_position` () |
`get_size` () |
`grab_focus` () |
`remove_focus_handler` () | This virtual function is deprecated since 2.9.4 and it should not be overriden. See `atk_component_remove_focus_handler()` for more information.
`set_extents` () |
`set_position` () |
`set_size` () |
`get_layer` () |
`get_mdi_zorder` () |
`bounds_changed` () |
`get_alpha` () |

### AtkFocusHandler ()

    void                (*AtkFocusHandler)                  (AtkObject *object,
                                                             gboolean focus_in);

### Warning

`AtkFocusHandler` is deprecated and should not be used in newly-written code. This type is deprecated since ATK version 2.9.4. as `atk_component_add_focus_handler()` and `atk_component_remove_focus_handler()` are deprecated. See those methods for more information.

The type of callback function used for `atk_component_add_focus_handler()` and `atk_component_remove_focus_handler()`

`object` : | the AtkObject that receives/lose the focus
`focus_in` : | TRUE if the object receives the focus

### struct AtkRectangle

    struct AtkRectangle {
      gint x;
      gint y;
      gint width;
      gint height;
    };

A data structure for holding a rectangle. Those coordinates are relative to the component top-level parent.

gint `x`; | X coordinate of the left side of the rectangle.
gint `y`; | Y coordinate of the top side of the rectangle.
gint `width`; | width of the rectangle.
gint `height`; | height of the rectangle.

### atk_component_add_focus_handler ()

    guint               atk_component_add_focus_handler     (AtkComponent *component,
                                                             AtkFocusHandler handler);

### Warning

`atk_component_add_focus_handler` is deprecated and should not be used in newly-written code. This method is deprecated since ATK version 2.9.4. If you need to track when an object gains or lose the focus, use state-changed:focused notification instead.

Add the specified handler to the set of functions to be called when this object receives focus events (in or out). If the handler is already added it is not added again

`component` : | The AtkComponent to attach the `handler` to
`handler` : | The AtkFocusHandler to be attached to `component`
Returns : | a handler id which can be used in `atk_component_remove_focus_handler()` or zero if the handler was already added.

### atk_component_contains ()

    gboolean            atk_component_contains              (AtkComponent *component,
                                                             gint x,
                                                             gint y,
                                                             AtkCoordType coord_type);

Checks whether the specified point is within the extent of the `component`.

`component` : | the AtkComponent
`x` : | x coordinate
`y` : | y coordinate
`coord_type` : | specifies whether the coordinates are relative to the screen or to the components top level window
Returns : | `TRUE` or `FALSE` indicating whether the specified point is within the extent of the `component` or not

### atk_component_get_extents ()

    void                atk_component_get_extents           (AtkComponent *component,
                                                             gint *x,
                                                             gint *y,
                                                             gint *width,
                                                             gint *height,
                                                             AtkCoordType coord_type);

Gets the rectangle which gives the extent of the `component`.

`component` : | an AtkComponent
`x` : | address of gint to put x coordinate
`y` : | address of gint to put y coordinate
`width` : | address of gint to put width
`height` : | address of gint to put height
`coord_type` : | specifies whether the coordinates are relative to the screen or to the components top level window

### atk_component_get_layer ()

    AtkLayer            atk_component_get_layer             (AtkComponent *component);

Gets the layer of the component.

`component` : | an AtkComponent
Returns : | an AtkLayer which is the layer of the component

### atk_component_get_mdi_zorder ()

    gint                atk_component_get_mdi_zorder        (AtkComponent *component);

Gets the zorder of the component. The value G_MININT will be returned if the layer of the component is not ATK_LAYER_MDI or ATK_LAYER_WINDOW.

`component` : | an AtkComponent
Returns : | a gint which is the zorder of the component, i.e. the depth at which the component is shown in relation to other components in the same container.

### atk_component_get_position ()

    void                atk_component_get_position          (AtkComponent *component,
                                                             gint *x,
                                                             gint *y,
                                                             AtkCoordType coord_type);

Gets the position of `component` in the form of a point specifying `component`'s top-left corner.

`component` : | an AtkComponent
`x` : | address of gint to put x coordinate position
`y` : | address of gint to put y coordinate position
`coord_type` : | specifies whether the coordinates are relative to the screen or to the components top level window

### atk_component_get_size ()

    void                atk_component_get_size              (AtkComponent *component,
                                                             gint *width,
                                                             gint *height);

Gets the size of the `component` in terms of width and height.

`component` : | an AtkComponent
`width` : | address of gint to put width of `component`
`height` : | address of gint to put height of `component`

### atk_component_grab_focus ()

    gboolean            atk_component_grab_focus            (AtkComponent *component);

Grabs focus for this `component`.

`component` : | an AtkComponent
Returns : | `TRUE` if successful, `FALSE` otherwise.

### atk_component_ref_accessible_at_point ()

    AtkObject *         atk_component_ref_accessible_at_point
                                                            (AtkComponent *component,
                                                             gint x,
                                                             gint y,
                                                             AtkCoordType coord_type);

Gets a reference to the accessible child, if one exists, at the coordinate point specified by `x` and `y`.

`component` : | the AtkComponent
`x` : | x coordinate
`y` : | y coordinate
`coord_type` : | specifies whether the coordinates are relative to the screen or to the components top level window
Returns : | a reference to the accessible child, if one exists. [transfer full]

### atk_component_remove_focus_handler ()

    void                atk_component_remove_focus_handler  (AtkComponent *component,
                                                             guint handler_id);

### Warning

`atk_component_remove_focus_handler` is deprecated and should not be used in newly-written code. This method is deprecated since ATK version 2.9.4. If you need to track when an object gains or lose the focus, use state-changed:focused notification instead.

Remove the handler specified by `handler_id` from the list of functions to be executed when this object receives focus events (in or out).

`component` : | the AtkComponent to remove the focus handler from
`handler_id` : | the handler id of the focus handler to be removed from `component`

### atk_component_set_extents ()

    gboolean            atk_component_set_extents           (AtkComponent *component,
                                                             gint x,
                                                             gint y,
                                                             gint width,
                                                             gint height,
                                                             AtkCoordType coord_type);

Sets the extents of `component`.

`component` : | an AtkComponent
`x` : | x coordinate
`y` : | y coordinate
`width` : | width to set for `component`
`height` : | height to set for `component`
`coord_type` : | specifies whether the coordinates are relative to the screen or to the components top level window
Returns : | `TRUE` or `FALSE` whether the extents were set or not

### atk_component_set_position ()

    gboolean            atk_component_set_position          (AtkComponent *component,
                                                             gint x,
                                                             gint y,
                                                             AtkCoordType coord_type);

Sets the postition of `component`.

`component` : | an AtkComponent
`x` : | x coordinate
`y` : | y coordinate
`coord_type` : | specifies whether the coordinates are relative to the screen or to the components top level window
Returns : | `TRUE` or `FALSE` whether or not the position was set or not

### atk_component_set_size ()

    gboolean            atk_component_set_size              (AtkComponent *component,
                                                             gint width,
                                                             gint height);

Set the size of the `component` in terms of width and height.

`component` : | an AtkComponent
`width` : | width to set for `component`
`height` : | height to set for `component`
Returns : | `TRUE` or `FALSE` whether the size was set or not

### atk_component_get_alpha ()

    gdouble             atk_component_get_alpha             (AtkComponent *component);

Returns the alpha value (i.e. the opacity) for this `component`, on a scale from 0 (fully transparent) to 1.0 (fully opaque).

`component` : | an AtkComponent
Returns : | An alpha value from 0 to 1.0, inclusive.

Since 1.12

## Signal Details

### The `"bounds-changed"` signal

    void                user_function                      (AtkComponent *atkcomponent,
                                                            AtkRectangle *arg1,
                                                            gpointer      user_data)         : Run Last

The 'bounds-changed" signal is emitted when the bposition or size of the component changes.

`atkcomponent` : | the object which received the signal.
`arg1` : | The AtkRectangle giving the new position and size.
`user_data` : | user data set when the signal handler was connected.