## GogStyle

GogStyle — Style of graph objects

## Synopsis

                        GogStyle;
    enum                GogStyleFlag;
    enum                GogFillStyle;
    enum                GogImageType;
                        GogStyleLine;
                        GogStyleMark;
    GogStyle*           gog_style_new                       (void);
    GogStyle*           gog_style_dup                       (GogStyle const *style);
    void                gog_style_assign                    (GogStyle *dst,
                                                             GogStyle const *src);
    void                gog_style_apply_theme               (GogStyle *dst,
                                                             GogStyle const *src);
    void                gog_style_set_marker                (GogStyle *style,
                                                             GOMarker *marker);
    void                gog_style_set_font_desc             (GogStyle *style,
                                                             PangoFontDescription *desc);
    void                gog_style_set_font                  (GogStyle *style,
                                                             GOFont const *font);
    void                gog_style_set_fill_brightness       (GogStyle *style,
                                                             float brightness);
    void                gog_style_set_fill_image_filename   (GogStyle *style,
                                                             char *filename);
    void                gog_style_set_text_angle            (GogStyle *style,
                                                             double angle);
    gboolean            gog_style_is_different_size         (GogStyle const *a,
                                                             GogStyle const *b);
    gboolean            gog_style_is_marker_visible         (GogStyle const *style);
    gboolean            gog_style_is_line_visible           (GogStyle const *style);
    gboolean            gog_style_is_outline_visible        (GogStyle const *style);
    gboolean            gog_style_is_fill_visible           (GogStyle const *style);
    void                gog_style_force_auto                (GogStyle *style);
    gpointer            gog_style_get_editor                (GogStyle *style,
                                                             GogStyle *default_style,
                                                             GOCmdContext *cc,
                                                             GObject *object_with_style);
    void                gog_style_populate_editor           (GogStyle *style,
                                                             GogEditor *editor,
                                                             GogStyle *default_style,
                                                             GOCmdContext *cc,
                                                             GObject *object_with_style,
                                                             gboolean watch_for_external_change);
    cairo_pattern_t*    gog_style_create_cairo_pattern      (GogStyle const *style,
                                                             cairo_t *cr);
    GOMarkerconst *     gog_style_get_marker                (GogStyle *style);

## Object Hierarchy

      GObject
       +----GogStyle

## Implemented Interfaces

GogStyle implements GogPersist.

## Description

## Details

### GogStyle

    typedef struct _GogStyle GogStyle;

### enum GogStyleFlag

    typedef enum {
    	GOG_STYLE_OUTLINE	= 1 << 0,
    	GOG_STYLE_FILL		= 1 << 1,
    	GOG_STYLE_LINE		= 1 << 2,
    	GOG_STYLE_MARKER	= 1 << 3,
    	GOG_STYLE_FONT		= 1 << 4,
    	GOG_STYLE_TEXT_LAYOUT	= 1 << 5,
    	GOG_STYLE_INTERPOLATION	= 1 << 6,
    	GOG_STYLE_MARKER_NO_COLOR	= 1 << 7,
    	GOG_STYLE_ALL		= 0x1F
    } GogStyleFlag;

### enum GogFillStyle

    typedef enum {
    	GOG_FILL_STYLE_NONE	= 0,
    	GOG_FILL_STYLE_PATTERN	= 1,
    	GOG_FILL_STYLE_GRADIENT	= 2,
    	GOG_FILL_STYLE_IMAGE	= 3
    } GogFillStyle;

### enum GogImageType

    typedef enum {
    	GOG_IMAGE_STRETCHED,
    	GOG_IMAGE_WALLPAPER,
    	GOG_IMAGE_CENTERED
    } GogImageType;

### GogStyleLine

    typedef struct {
    	/* <0 == no outline,
    	 * =0 == hairline : unscaled, minimum useful (can be bigger than visible) size.
    	 * >0 in pts */
    	float	 	 width;
    	GOLineDashType 	 dash_type;
    	gboolean	 auto_dash;
    	GOColor	 	 color;
    	gboolean 	 auto_color;
    	unsigned	 pattern_unimplemented_yet; /* TODO: implement. Not used
    				and must not be used before implementation */
    } GogStyleLine;

### GogStyleMark

    typedef struct {
    	GOMarker *mark;
    	gboolean auto_shape;
    	gboolean auto_outline_color;
    	gboolean auto_fill_color;
    } GogStyleMark;

### gog_style_new ()

    GogStyle*           gog_style_new                       (void);

Returns : |

### gog_style_dup ()

    GogStyle*           gog_style_dup                       (GogStyle const *style);

Duplicates `style`.

`style` : | a source GogStyle
Returns : | a new GogStyle

### gog_style_assign ()

    void                gog_style_assign                    (GogStyle *dst,
                                                             GogStyle const *src);

`dst` : |
`src` : |

### gog_style_apply_theme ()

    void                gog_style_apply_theme               (GogStyle *dst,
                                                             GogStyle const *src);

Merge the attributes from `src` onto the elements of `dst` that were not user assigned (is_auto)

`dst` : | GogStyle
`src` : | GogStyle

### gog_style_set_marker ()

    void                gog_style_set_marker                (GogStyle *style,
                                                             GOMarker *marker);

Absorb a reference to `marker` and assign it to `style`.

`style` : | GogStyle
`marker` : | GOMarker

### gog_style_set_font_desc ()

    void                gog_style_set_font_desc             (GogStyle *style,
                                                             PangoFontDescription *desc);

`style` : |
`desc` : |

### gog_style_set_font ()

    void                gog_style_set_font                  (GogStyle *style,
                                                             GOFont const *font);

`style` : |
`font` : |

### gog_style_set_fill_brightness ()

    void                gog_style_set_fill_brightness       (GogStyle *style,
                                                             float brightness);

`style` : |
`brightness` : |

### gog_style_set_fill_image_filename ()

    void                gog_style_set_fill_image_filename   (GogStyle *style,
                                                             char *filename);

absorb the string and eventually free it.

`style` : | GogStyle
`filename` : |

### gog_style_set_text_angle ()

    void                gog_style_set_text_angle            (GogStyle *style,
                                                             double angle);

Set text rotation angle in degrees. Valid values are in the range [-180.0° , 180.0°].

`style` : | GogStyle
`angle` : | text rotation in degrees

### gog_style_is_different_size ()

    gboolean            gog_style_is_different_size         (GogStyle const *a,
                                                             GogStyle const *b);

`a` : |
`b` : |
Returns : |

### gog_style_is_marker_visible ()

    gboolean            gog_style_is_marker_visible         (GogStyle const *style);

`style` : |
Returns : |

### gog_style_is_line_visible ()

    gboolean            gog_style_is_line_visible           (GogStyle const *style);

`style` : |
Returns : |

### gog_style_is_outline_visible ()

    gboolean            gog_style_is_outline_visible        (GogStyle const *style);

`style` : |
Returns : |

### gog_style_is_fill_visible ()

    gboolean            gog_style_is_fill_visible           (GogStyle const *style);

`style` : |
Returns : |

### gog_style_force_auto ()

    void                gog_style_force_auto                (GogStyle *style);

`style` : |

### gog_style_get_editor ()

    gpointer            gog_style_get_editor                (GogStyle *style,
                                                             GogStyle *default_style,
                                                             GOCmdContext *cc,
                                                             GObject *object_with_style);

`style` : |
`default_style` : |
`cc` : |
`object_with_style` : |
Returns : |

### gog_style_populate_editor ()

    void                gog_style_populate_editor           (GogStyle *style,
                                                             GogEditor *editor,
                                                             GogStyle *default_style,
                                                             GOCmdContext *cc,
                                                             GObject *object_with_style,
                                                             gboolean watch_for_external_change);

`style` : |
`editor` : |
`default_style` : |
`cc` : |
`object_with_style` : |
`watch_for_external_change` : |

### gog_style_create_cairo_pattern ()

    cairo_pattern_t*    gog_style_create_cairo_pattern      (GogStyle const *style,
                                                             cairo_t *cr);

Create a cairo_patern_t using the current style settings for filling. A pattern will be created only if the style has the corresponding field and if it is not set to a none constant.

`style` : | GogStyle
`cr` : | a cairo context
Returns : | the pattern or NULL if it could not be created.

### gog_style_get_marker ()

    GOMarkerconst *     gog_style_get_marker                (GogStyle *style);

Accessor for `style`::marker, without referencing it.

`style` : | GogStyle
Returns : | the style GOMarker.