## StDrawingArea StDrawingArea — A dynamically-sized Cairo drawing area |

## Synopsis

    struct              StDrawingArea;
    struct              StDrawingAreaClass;
    void                st_drawing_area_queue_repaint       (StDrawingArea *area);
    cairo_t *           st_drawing_area_get_context         (StDrawingArea *area);
    void                st_drawing_area_get_surface_size    (StDrawingArea *area,
                                                             guint *width,
                                                             guint *height);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----ClutterActor
                   +----StWidget
                         +----StDrawingArea

## Implemented Interfaces

StDrawingArea implements ClutterContainer, ClutterScriptable, ClutterAnimatable and AtkImplementorIface.

## Signals

      "repaint"                                        : Run Last

## Description

StDrawingArea is similar to ClutterCairoTexture in that it allows drawing via Cairo; the primary difference is that it is dynamically sized. To use, connect to the "repaint" signal, and inside the signal handler, call `st_drawing_area_get_context()` to get the Cairo context to draw to. The "repaint" signal will be emitted by default when the area is resized or the CSS style changes; you can use the `st_drawing_area_queue_repaint()` as well.

## Details

### struct StDrawingArea

    struct StDrawingArea;

### struct StDrawingAreaClass

    struct StDrawingAreaClass {
        StWidgetClass parent_class;

        void (*repaint) (StDrawingArea *area);
    };

### st_drawing_area_queue_repaint ()

    void                st_drawing_area_queue_repaint       (StDrawingArea *area);

Will cause the actor to emit a ::repaint signal before it is next drawn to the scene. Useful if some parameters for the area being drawn other than the size or style have changed. Note that `clutter_actor_queue_redraw()` will simply result in the same contents being drawn to the scene again.

`area` : | the StDrawingArea

### st_drawing_area_get_context ()

    cairo_t *           st_drawing_area_get_context         (StDrawingArea *area);

Gets the Cairo context to paint to. This function must only be called from a signal hander for the ::repaint signal.

`area` : | the StDrawingArea
Returns : | the Cairo context for the paint operation. [transfer none]

### st_drawing_area_get_surface_size ()

    void                st_drawing_area_get_surface_size    (StDrawingArea *area,
                                                             guint *width,
                                                             guint *height);

Gets the size of the cairo surface being painted to, which is equal to the size of the content area of the widget. This function must only be called from a signal hander for the ::repaint signal.

`area` : | the StDrawingArea
`width` : | location to store the width of the painted area. [out]
`height` : | location to store the height of the painted area. [out]

## Signal Details

### The `"repaint"` signal

    void                user_function                      (StDrawingArea *stdrawingarea,
                                                            gpointer       user_data)          : Run Last