## GocStyledItem

GocStyledItem — Styled items

## Synopsis

                        GocStyledItem;
    struct              GocStyledItemClass;
    gboolean            goc_styled_item_set_cairo_line      (GocStyledItem const *gsi,
                                                             cairo_t *cr);
    gboolean            goc_styled_item_get_scale_line_width
                                                            (GocStyledItem const *gsi);
    void                goc_styled_item_set_scale_line_width
                                                            (GocStyledItem *gsi,
                                                             gboolean scale_line_width);

## Object Hierarchy

      GObject
       +----GocItem
             +----GocStyledItem
                   +----GocArc
                   +----GocCircle
                   +----GocEllipse
                   +----GocLine
                   +----GocPath
                   +----GocPolygon
                   +----GocPolyline
                   +----GocRectangle
                   +----GocText

## Implemented Interfaces

GocStyledItem implements GOStyledObject.

## Properties

      "scale-line-width"         gboolean              : Read / Write
      "style"                    GOStyle*              : Read / Write

## Signals

      "style-changed"                                  : Run Last

## Description

The virtual base object for canvas items with style.

## Details

### GocStyledItem

    typedef struct _GocStyledItem GocStyledItem;

### struct GocStyledItemClass

    struct GocStyledItemClass {
    	/* virtual */
    	void	  (*init_style)     	(GocStyledItem *item, GOStyle *style);
    	void (*reserved1) (void);
    	void (*reserved2) (void);
    };

`init_style` () | style initialization handler.
`reserved1` () |
`reserved2` () |

### goc_styled_item_set_cairo_line ()

    gboolean            goc_styled_item_set_cairo_line      (GocStyledItem const *gsi,
                                                             cairo_t *cr);

Prepares the cairo context `cr` to draw a line according to the item style and canvas scale. The line width is scaled only if the scale-line-width property is set to `TRUE`. This function calls `go_styled_object_set_cairo_line()`.

If the item drawing used `goc_group_cairo_transform()`, scale-line-width should be `FALSE` to avoid scaling twice, or `go_styled_object_set_cairo_line()` should be called directly instead.

`gsi` : | GocStyledItem
`cr` : | cairo_t
Returns : | `TRUE` if the line is not invisible

### goc_styled_item_get_scale_line_width ()

    gboolean            goc_styled_item_get_scale_line_width
                                                            (GocStyledItem const *gsi);

This function returns `TRUE` if the line width needs to be scaled. It will always return `FALSE` if the line width is 0.

`gsi` : | GocStyledItem
Returns : | whether the line width needs to be scaled.

### goc_styled_item_set_scale_line_width ()

    void                goc_styled_item_set_scale_line_width
                                                            (GocStyledItem *gsi,
                                                             gboolean scale_line_width);

Sets whether the line width needs to be scaled according to the current canvas resolution and the item transformation. It will be ignored if the line width is 0. Default value is `TRUE`.

`gsi` : | GocStyledItem
`scale_line_width` : | boolean

## Property Details

### The `"scale-line-width"` property

      "scale-line-width"         gboolean              : Read / Write

Whether to scale the line width when zooming.

Default value: TRUE

### The `"style"` property

      "style"                    GOStyle*              : Read / Write

A pointer to the GOStyle object.

## Signal Details

### The `"style-changed"` signal

    void                user_function                      (GocStyledItem *gsi,
                                                            GObject       *style,
                                                            gpointer       user_data)      : Run Last

The ::style-changed signal is emitted when a new style has been set on a styled item.

`gsi` : | the object on which the signal is emitted
`style` : | the new GOStyle.
`user_data` : | user data set when the signal handler was connected.