## GtkSymbolicColor

GtkSymbolicColor — Symbolic colors

## Synopsis

    #include <gtk/gtk.h>

                        GtkSymbolicColor;
    GtkSymbolicColor *  gtk_symbolic_color_new_literal      (const GdkRGBA *color);
    GtkSymbolicColor *  gtk_symbolic_color_new_name         (const gchar *name);
    GtkSymbolicColor *  gtk_symbolic_color_new_shade        (GtkSymbolicColor *color,
                                                             gdouble factor);
    GtkSymbolicColor *  gtk_symbolic_color_new_alpha        (GtkSymbolicColor *color,
                                                             gdouble factor);
    GtkSymbolicColor *  gtk_symbolic_color_new_mix          (GtkSymbolicColor *color1,
                                                             GtkSymbolicColor *color2,
                                                             gdouble factor);
    GtkSymbolicColor *  gtk_symbolic_color_ref              (GtkSymbolicColor *color);
    void                gtk_symbolic_color_unref            (GtkSymbolicColor *color);
    gboolean            gtk_symbolic_color_resolve          (GtkSymbolicColor *color,
                                                             GtkStyleProperties *props,
                                                             GdkRGBA *resolved_color);
    char *              gtk_symbolic_color_to_string        (GtkSymbolicColor *color);

## Description

GtkSymbolicColor is a boxed type that represents a symbolic color. It is the result of parsing a color expression. To obtain the color represented by a GtkSymbolicColor, it has to be resolved with `gtk_symbolic_color_resolve()`, which replaces all symbolic color references by the colors they refer to (in a given context) and evaluates mix, shade and other expressions, resulting in a GdkRGBA value.

It is not normally necessary to deal directly with GtkSymbolicColors, since they are mostly used behind the scenes by GtkStyleContext and GtkCssProvider.

## Details

### GtkSymbolicColor

    typedef struct _GtkSymbolicColor GtkSymbolicColor;

### gtk_symbolic_color_new_literal ()

    GtkSymbolicColor *  gtk_symbolic_color_new_literal      (const GdkRGBA *color);

Creates a symbolic color pointing to a literal color.

`color` : | a GdkRGBA
Returns : | a newly created GtkSymbolicColor

Since 3.0

### gtk_symbolic_color_new_name ()

    GtkSymbolicColor *  gtk_symbolic_color_new_name         (const gchar *name);

Creates a symbolic color pointing to an unresolved named color. See `gtk_style_context_lookup_color()` and `gtk_style_properties_lookup_color()`.

`name` : | color name
Returns : | a newly created GtkSymbolicColor

Since 3.0

### gtk_symbolic_color_new_shade ()

    GtkSymbolicColor *  gtk_symbolic_color_new_shade        (GtkSymbolicColor *color,
                                                             gdouble factor);

Creates a symbolic color defined as a shade of another color. A factor > 1.0 would resolve to a brighter color, while < 1.0 would resolve to a darker color.

`color` : | another GtkSymbolicColor
`factor` : | shading factor to apply to `color`
Returns : | A newly created GtkSymbolicColor

Since 3.0

### gtk_symbolic_color_new_alpha ()

    GtkSymbolicColor *  gtk_symbolic_color_new_alpha        (GtkSymbolicColor *color,
                                                             gdouble factor);

Creates a symbolic color by modifying the relative alpha value of `color`. A factor < 1.0 would resolve to a more transparent color, while > 1.0 would resolve to a more opaque color.

`color` : | another GtkSymbolicColor
`factor` : | factor to apply to `color` alpha
Returns : | A newly created GtkSymbolicColor

Since 3.0

### gtk_symbolic_color_new_mix ()

    GtkSymbolicColor *  gtk_symbolic_color_new_mix          (GtkSymbolicColor *color1,
                                                             GtkSymbolicColor *color2,
                                                             gdouble factor);

Creates a symbolic color defined as a mix of another two colors. a mix factor of 0 would resolve to `color1`, while a factor of 1 would resolve to `color2`.

`color1` : | color to mix
`color2` : | another color to mix
`factor` : | mix factor
Returns : | A newly created GtkSymbolicColor

Since 3.0

### gtk_symbolic_color_ref ()

    GtkSymbolicColor *  gtk_symbolic_color_ref              (GtkSymbolicColor *color);

Increases the reference count of `color`

`color` : | a GtkSymbolicColor
Returns : | the same `color`

Since 3.0

### gtk_symbolic_color_unref ()

    void                gtk_symbolic_color_unref            (GtkSymbolicColor *color);

Decreases the reference count of `color`, freeing its memory if the reference count reaches 0.

`color` : | a GtkSymbolicColor

Since 3.0

### gtk_symbolic_color_resolve ()

    gboolean            gtk_symbolic_color_resolve          (GtkSymbolicColor *color,
                                                             GtkStyleProperties *props,
                                                             GdkRGBA *resolved_color);

If `color` is resolvable, `resolved_color` will be filled in with the resolved color, and `TRUE` will be returned. Generally, if `color` can't be resolved, it is due to it being defined on top of a named color that doesn't exist in `props`.

When `props` is `NULL`, resolving of named colors will fail, so if your `color` is or references such a color, this function will return `FALSE`.

`color` : | a GtkSymbolicColor
`props` : | GtkStyleProperties to use when resolving named colors, or `NULL`. [allow-none]
`resolved_color` : | return location for the resolved color. [out]
Returns : | `TRUE` if the color has been resolved

Since 3.0

### gtk_symbolic_color_to_string ()

    char *              gtk_symbolic_color_to_string        (GtkSymbolicColor *color);

Converts the given `color` to a string representation. This is useful both for debugging and for serialization of strings. The format of the string may change between different versions of GTK, but it is guaranteed that the GTK css parser is able to read the string and create the same symbolic color from it.

`color` : | color to convert to a string
Returns : | a new string representing `color`