## CCMDrawable CCMDrawable |

## Synopsis

                        CCMDrawable;
    CCMScreen *         ccm_drawable_get_screen             (CCMDrawable *self);
    CCMDisplay *        ccm_drawable_get_display            (CCMDrawable *self);
    XID                 ccm_drawable_get_xid                (CCMDrawable *self);
    Visual *            ccm_drawable_get_visual             (CCMDrawable *self);
    cairo_format_t      ccm_drawable_get_format             (CCMDrawable *self);
    guint               ccm_drawable_get_depth              (CCMDrawable *self);
    void                ccm_drawable_query_geometry         (CCMDrawable *self);
    const CCMRegion *   ccm_drawable_get_geometry           (CCMDrawable *self);
    const CCMRegion *   ccm_drawable_get_device_geometry    (CCMDrawable *self);
    gboolean            ccm_drawable_get_geometry_clipbox   (CCMDrawable *self,
                                                             cairo_rectangle_t *area);
    gboolean            ccm_drawable_get_device_geometry_clipbox
                                                            (CCMDrawable *self,
                                                             cairo_rectangle_t *area);
    gboolean            ccm_drawable_is_damaged             (CCMDrawable *self);
    void                ccm_drawable_damage_region          (CCMDrawable *self,
                                                             const CCMRegion *area);
    void                ccm_drawable_damage_region_silently (CCMDrawable *self,
                                                             const CCMRegion *area);
    void                ccm_drawable_damage                 (CCMDrawable *self);
    void                ccm_drawable_undamage_region        (CCMDrawable *self,
                                                             CCMRegion *region);
    void                ccm_drawable_repair                 (CCMDrawable *self);
    void                ccm_drawable_move                   (CCMDrawable *self,
                                                             int x,
                                                             int y);
    void                ccm_drawable_resize                 (CCMDrawable *self,
                                                             int width,
                                                             int height);
    void                ccm_drawable_flush                  (CCMDrawable *self);
    void                ccm_drawable_flush_region           (CCMDrawable *self,
                                                             CCMRegion *region);
    cairo_surface_t *   ccm_drawable_get_surface            (CCMDrawable *self);
    cairo_t *           ccm_drawable_create_context         (CCMDrawable *self);
    cairo_path_t *      ccm_drawable_get_geometry_path      (CCMDrawable *self,
                                                             cairo_t *context);
    void                ccm_drawable_get_damage_path        (CCMDrawable *self,
                                                             cairo_t *context);
    void                ccm_drawable_push_matrix            (CCMDrawable *self,
                                                             gchar *key,
                                                             cairo_matrix_t *matrix);
    void                ccm_drawable_pop_matrix             (CCMDrawable *self,
                                                             gchar *key);
    cairo_matrix_t      ccm_drawable_get_transform          (CCMDrawable *self);

## Object Hierarchy

      GObject
       +----CCMDrawable
             +----CCMPixmap
             +----CCMWindow

## Properties

      "damaged"                  gpointer              : Read
      "depth"                    guint                 : Read / Write / Construct
      "drawable"                 gulong                : Read / Write / Construct Only
      "geometry"                 gpointer              : Read / Write / Construct
      "screen"                   gpointer              : Read / Write / Construct Only
      "transform"                CCMDrawableMatrix*    : Read
      "visual"                   gpointer              : Read / Write / Construct

## Signals

      "damaged"                                        : Run Last

## Description

## Details

### CCMDrawable

    typedef struct _CCMDrawable CCMDrawable;

### ccm_drawable_get_screen ()

    CCMScreen *         ccm_drawable_get_screen             (CCMDrawable *self);

Returns the CCMScreen associated with drawable.

`self` : | CCMDrawable
Returns : | CCMScreen

### ccm_drawable_get_display ()

    CCMDisplay *        ccm_drawable_get_display            (CCMDrawable *self);

Returns the CCMDisplay associated with drawable.

`self` : | CCMDrawable
Returns : | CCMDisplay

### ccm_drawable_get_xid ()

    XID                 ccm_drawable_get_xid                (CCMDrawable *self);

Returns the X resource (window or pixmap) belonging to a Drawable

`self` : | CCMDrawable
Returns : | XID

### ccm_drawable_get_visual ()

    Visual *            ccm_drawable_get_visual             (CCMDrawable *self);

Return visual of drawable

`self` : | CCMDrawable
Returns : | Visual

### ccm_drawable_get_format ()

    cairo_format_t      ccm_drawable_get_format             (CCMDrawable *self);

Get cairo format of drawable.

`self` : | CCMDrawable
Returns : | cairo_format_t

### ccm_drawable_get_depth ()

    guint               ccm_drawable_get_depth              (CCMDrawable *self);

Get depth of drawable.

`self` : | CCMDrawable
Returns : | drawable depth

### ccm_drawable_query_geometry ()

    void                ccm_drawable_query_geometry         (CCMDrawable *self);

Request the region covered by the Drawable.

`self` : | CCMDrawable

### ccm_drawable_get_geometry ()

    const CCMRegion *   ccm_drawable_get_geometry           (CCMDrawable *self);

Gets the region covered by the Drawable. The coordinates are relative to the parent Drawable. If the drawable have some transformations this function return the transformed region

`self` : | CCMDrawable
Returns : | const CCMRegion

### ccm_drawable_get_device_geometry ()

    const CCMRegion *   ccm_drawable_get_device_geometry    (CCMDrawable *self);

Gets the region covered by the Drawable. The coordinates are relative to the parent Drawable. This function always return the non transformed geometry.

`self` : | CCMDrawable
Returns : | const CCMRegion

### ccm_drawable_get_geometry_clipbox ()

    gboolean            ccm_drawable_get_geometry_clipbox   (CCMDrawable *self,
                                                             cairo_rectangle_t *area);

Gets the rectangle region covered by the Drawable. The coordinates are relative to the parent Drawable. If the drawable have some transformations this function return the transformed clipbox.

`self` : | CCMDrawable
`area` : | cairo_rectangle_t
Returns : | FALSE if fail

### ccm_drawable_get_device_geometry_clipbox ()

    gboolean            ccm_drawable_get_device_geometry_clipbox
                                                            (CCMDrawable *self,
                                                             cairo_rectangle_t *area);

Gets the rectangle region covered by the Drawable. The coordinates are relative to the parent Drawable. This function always return the non transformed clipbox.

`self` : | CCMDrawable
`area` : | cairo_rectangle_t
Returns : | FALSE if fail

### ccm_drawable_is_damaged ()

    gboolean            ccm_drawable_is_damaged             (CCMDrawable *self);

Return if drawable is damaged

`self` : | CCMDrawable
Returns : | gboolean

### ccm_drawable_damage_region ()

    void                ccm_drawable_damage_region          (CCMDrawable *self,
                                                             const CCMRegion *area);

Add a damaged region for a drawable

`self` : | CCMDrawable
`area` : |

### ccm_drawable_damage_region_silently ()

    void                ccm_drawable_damage_region_silently (CCMDrawable *self,
                                                             const CCMRegion *area);

Add a damaged region for a drawable without generate an event

`self` : | CCMDrawable
`area` : |

### ccm_drawable_damage ()

    void                ccm_drawable_damage                 (CCMDrawable *self);

Damage a drawable

`self` : | CCMDrawable

### ccm_drawable_undamage_region ()

    void                ccm_drawable_undamage_region        (CCMDrawable *self,
                                                             CCMRegion *region);

Remove a part of damaged region of a drawable

`self` : | CCMDrawable
`region` : | CCMRegion

### ccm_drawable_repair ()

    void                ccm_drawable_repair                 (CCMDrawable *self);

Repair all damaged regions of a drawable

`self` : | CCMDrawable

### ccm_drawable_move ()

    void                ccm_drawable_move                   (CCMDrawable *self,
                                                             int x,
                                                             int y);

Repositions a drawable relative to its parent drawable.

`self` : | CCMDrawable
`x` : | X coordinate relative to drawable's parent
`y` : | Y coordinate relative to drawable's parent

### ccm_drawable_resize ()

    void                ccm_drawable_resize                 (CCMDrawable *self,
                                                             int width,
                                                             int height);

Resize drawable.

`self` : | CCMDrawable
`width` : | new width of the drawable
`height` : | new height of the drawable

### ccm_drawable_flush ()

    void                ccm_drawable_flush                  (CCMDrawable *self);

Flush all pending draw operation on drawable.

`self` : | CCMDrawable

### ccm_drawable_flush_region ()

    void                ccm_drawable_flush_region           (CCMDrawable *self,
                                                             CCMRegion *region);

Flush all pending draw operation on region of drawable.

`self` : | CCMDrawable
`region` : | CCMRegion

### ccm_drawable_get_surface ()

    cairo_surface_t *   ccm_drawable_get_surface            (CCMDrawable *self);

Gets cairo surface of drawable

`self` : | CCMDrawable
Returns : | cairo_surface_t

### ccm_drawable_create_context ()

    cairo_t *           ccm_drawable_create_context         (CCMDrawable *self);

Create cairo context for a drawable

`self` : | CCMDrawable
Returns : | cairo_t

### ccm_drawable_get_geometry_path ()

    cairo_path_t *      ccm_drawable_get_geometry_path      (CCMDrawable *self,
                                                             cairo_t *context);

Get geometry path.

`self` : | CCMDrawable
`context` : | cairo_t
Returns : | cairo_path_t

### ccm_drawable_get_damage_path ()

    void                ccm_drawable_get_damage_path        (CCMDrawable *self,
                                                             cairo_t *context);

Get damaged path.

`self` : | CCMDrawable
`context` : | cairo_t

### ccm_drawable_push_matrix ()

    void                ccm_drawable_push_matrix            (CCMDrawable *self,
                                                             gchar *key,
                                                             cairo_matrix_t *matrix);

Push a matrix in CCMDrawable transform stack with `key` if a matrix already exist for this key it was replaced.

`self` : | CCMDrawable
`key` : | matrix key
`matrix` : | cairo_matrix_t

### ccm_drawable_pop_matrix ()

    void                ccm_drawable_pop_matrix             (CCMDrawable *self,
                                                             gchar *key);

Pop a matrix associated with `key` from CCMDrawable transform stack.

`self` : | CCMDrawable
`key` : | matrix key

### ccm_drawable_get_transform ()

    cairo_matrix_t      ccm_drawable_get_transform          (CCMDrawable *self);

Get the current cairo_matrix_t transform

return: cairo_matrix_t

`self` : |
Returns : |

## Property Details

### The `"damaged"` property

      "damaged"                  gpointer              : Read

Damaged region of the drawable.

### The `"depth"` property

      "depth"                    guint                 : Read / Write / Construct

Depth of the drawable.

Default value: 0

### The `"drawable"` property

      "drawable"                 gulong                : Read / Write / Construct Only

The X resource (window or pixmap) belonging to a Drawable.

Allowed values: <= G_MAXINT64

### The `"geometry"` property

      "geometry"                 gpointer              : Read / Write / Construct

Damaged region of the drawable

### The `"screen"` property

      "screen"                   gpointer              : Read / Write / Construct Only

Screen of the drawable.

### The `"transform"` property

      "transform"                CCMDrawableMatrix*    : Read

The cumulated cairo_matrix_t transforms of the drawable

### The `"visual"` property

      "visual"                   gpointer              : Read / Write / Construct

Visual of the drawable.

## Signal Details

### The `"damaged"` signal

    void                user_function                      (CCMDrawable *self,
                                                            gpointer     damaged,
                                                            gpointer     user_data)      : Run Last

Emitted when a CCMRegion of the drawable is damaged.

`self` : | CCMDrawable
`damaged` : | damaged CCMRegion
`user_data` : | user data set when the signal handler was connected.