## 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);
    void        gog_style_force_auto            (GogStyle *style);
    void        gog_style_populate_editor       (GogStyle *style,
                                                 GogEditor *editor,
                                                 GogStyle *default_style,
                                                 GOCmdContext *cc,
                                                 GObject *object_with_style,
                                                 gboolean watch_for_external_change);
    gpointer    gog_style_get_editor            (GogStyle *style,
                                                 GogStyle *default_style,
                                                 GOCmdContext *cc,
                                                 GObject *object_with_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_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; /* TODO border type from gnumeric */
    } 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_force_auto ()

    void        gog_style_force_auto            (GogStyle *style);

`style` : |

### 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_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 : |