## GOStyledObject GOStyledObject |

## Synopsis

    #include <goffice/utils/go-styled-object.h>

                        GOStyledObject;
                        GOStyledObjectClass;
    GOStyle *           go_styled_object_get_style          (GOStyledObject *gso);
    GOStyle *           go_styled_object_get_auto_style     (GOStyledObject *gso);
    gboolean            go_styled_object_set_style          (GOStyledObject *gso,
                                                             GOStyle *style);
    void                go_styled_object_apply_theme        (GOStyledObject *gso,
                                                             GOStyle *style);
    void                go_styled_object_style_changed      (GOStyledObject *gso);
    GODoc *             go_styled_object_get_document       (GOStyledObject *gso);
    gboolean            go_styled_object_set_cairo_fill     (GOStyledObject const *so,
                                                             cairo_t *cr);
    gboolean            go_styled_object_set_cairo_line     (GOStyledObject const *so,
                                                             cairo_t *cr);

## Object Hierarchy

      GInterface
       +----GOStyledObject

## Known Implementations

GOStyledObject is implemented by GocPolygon, GogAxisBase, GogOutlinedObject, GogSeriesLines, GogRegEqn, GogRegCurve, GogChart, GogAxis, GogTrendLine, GogLegend, GocPolyline, GocStyledItem, GogStyledObject, GocCircle, GocText, GocLine, GogLabel, GogGraph, GogGridLine, GogSeries, GocEllipse, GocRectangle, GogSmoothedCurve, GogText, GogAxisLine and GogGrid.

## Description

## Details

### GOStyledObject

    typedef struct _GOStyledObject GOStyledObject;

### GOStyledObjectClass

    typedef struct {
    	GTypeInterface		   base;

    	gboolean  (*set_style) 	    (GOStyledObject *gso, GOStyle *style);
    	GOStyle	 *(*get_style)	    (GOStyledObject *gso);
    	GOStyle	 *(*get_auto_style) (GOStyledObject *gso);
    	void	  (*style_changed)  (GOStyledObject *gso);
    	void	  (*apply_theme)	(GOStyledObject *gso, GOStyle *style);
    	GODoc    *(*get_document)   (GOStyledObject *gso);
    } GOStyledObjectClass;

### go_styled_object_get_style ()

    GOStyle *           go_styled_object_get_style          (GOStyledObject *gso);

Simply an accessor function that returns `gso->style`, without referencing it.

`gso` : | a GOStyledObject
Returns : | the styled object's GOStyle

### go_styled_object_get_auto_style ()

    GOStyle *           go_styled_object_get_auto_style     (GOStyledObject *gso);

This function returns a new style that is initialized with the auto values for `gso`. Caller is responsible for the result.

`gso` : | a GOStyledObject
Returns : | a new GOStyle

### go_styled_object_set_style ()

    gboolean            go_styled_object_set_style          (GOStyledObject *gso,
                                                             GOStyle *style);

Sets a new style for `gso`, and emits "style-changed" signal. This function does not take ownership of `style`.

`gso` : | a GOStyledObject
`style` : | a GOStyle
Returns : | `TRUE` if new style may lead to change of object size, which happens when changing font size for example.

### go_styled_object_apply_theme ()

    void                go_styled_object_apply_theme        (GOStyledObject *gso,
                                                             GOStyle *style);

Apply appropriate theme `style` if meaningful, i.e. properties with auto flag set to `TRUE` should be changed to default theme value.

`gso` : | a GOStyledObject
`style` : | a GOStyle that will be themed

### go_styled_object_style_changed ()

    void                go_styled_object_style_changed      (GOStyledObject *gso);

Called when the style changed. Might emit a signal if meaningful.

`gso` : | a GOStyledObject

### go_styled_object_get_document ()

    GODoc *             go_styled_object_get_document       (GOStyledObject *gso);

`gso` : |
Returns : |

### go_styled_object_set_cairo_fill ()

    gboolean            go_styled_object_set_cairo_fill     (GOStyledObject const *so,
                                                             cairo_t *cr);

`so` : |
`cr` : |
Returns : |

### go_styled_object_set_cairo_line ()

    gboolean            go_styled_object_set_cairo_line     (GOStyledObject const *so,
                                                             cairo_t *cr);

`so` : |
`cr` : |
Returns : |