## GtkStyleProperties

GtkStyleProperties — Store for style property information

## Synopsis

    #include <gtk/gtk.h>

    struct              GtkStyleProperties;
    void                gtk_style_properties_clear          (GtkStyleProperties *props);
    void                gtk_style_properties_get            (GtkStyleProperties *props,
                                                             GtkStateFlags state,
                                                             ...);
    gboolean            gtk_style_properties_get_property   (GtkStyleProperties *props,
                                                             const gchar *property,
                                                             GtkStateFlags state,
                                                             GValue *value);
    void                gtk_style_properties_get_valist     (GtkStyleProperties *props,
                                                             GtkStateFlags state,
                                                             va_list args);
    GtkSymbolicColor *  gtk_style_properties_lookup_color   (GtkStyleProperties *props,
                                                             const gchar *name);
    gboolean            gtk_style_properties_lookup_property
                                                            (const gchar *property_name,
                                                             GtkStylePropertyParser *parse_func,
                                                             GParamSpec **pspec);
    void                gtk_style_properties_map_color      (GtkStyleProperties *props,
                                                             const gchar *name,
                                                             GtkSymbolicColor *color);
    void                gtk_style_properties_merge          (GtkStyleProperties *props,
                                                             const GtkStyleProperties *props_to_merge,
                                                             gboolean replace);
    GtkStyleProperties * gtk_style_properties_new           (void);
    gboolean            (*GtkStylePropertyParser)           (const gchar *string,
                                                             GValue *value,
                                                             GError **error);
    void                gtk_style_properties_register_property
                                                            (GtkStylePropertyParser parse_func,
                                                             GParamSpec *pspec);
    void                gtk_style_properties_set            (GtkStyleProperties *props,
                                                             GtkStateFlags state,
                                                             ...);
    void                gtk_style_properties_set_property   (GtkStyleProperties *props,
                                                             const gchar *property,
                                                             GtkStateFlags state,
                                                             const GValue *value);
    void                gtk_style_properties_set_valist     (GtkStyleProperties *props,
                                                             GtkStateFlags state,
                                                             va_list args);
    void                gtk_style_properties_unset_property (GtkStyleProperties *props,
                                                             const gchar *property,
                                                             GtkStateFlags state);

## Description

GtkStyleProperties provides the storage for style information that is used by GtkStyleContext and other GtkStyleProvider implementations.

Before style properties can be stored in GtkStyleProperties, they must be registered with `gtk_style_properties_register_property()`.

Unless you are writing a GtkStyleProvider implementation, you are unlikely to use this API directly, as `gtk_style_context_get()` and its variants are the preferred way to access styling information from widget implementations and theming engine implementations should use the APIs provided by GtkThemingEngine instead.

## Details

### struct GtkStyleProperties

    struct GtkStyleProperties {
      GObject parent_object;
      gpointer priv;
    };

### gtk_style_properties_clear ()

    void                gtk_style_properties_clear          (GtkStyleProperties *props);

Clears all style information from `props`.

`props` : | a GtkStyleProperties

### gtk_style_properties_get ()

    void                gtk_style_properties_get            (GtkStyleProperties *props,
                                                             GtkStateFlags state,
                                                             ...);

Retrieves several style property values from `props` for a given state.

`props` : | a GtkStyleProperties
`state` : | state to retrieve the property values for
`...` : | property name /return value pairs, followed by `NULL`

Since 3.0

### gtk_style_properties_get_property ()

    gboolean            gtk_style_properties_get_property   (GtkStyleProperties *props,
                                                             const gchar *property,
                                                             GtkStateFlags state,
                                                             GValue *value);

Gets a style property from `props` for the given state. When done with `value`, `g_value_unset()` needs to be called to free any allocated memory.

`props` : | a GtkStyleProperties
`property` : | style property name
`state` : | state to retrieve the property value for
`value` : | return location for the style property value. [out][transfer full]
Returns : | `TRUE` if the property exists in `props`, `FALSE` otherwise

Since 3.0

### gtk_style_properties_get_valist ()

    void                gtk_style_properties_get_valist     (GtkStyleProperties *props,
                                                             GtkStateFlags state,
                                                             va_list args);

Retrieves several style property values from `props` for a given state.

`props` : | a GtkStyleProperties
`state` : | state to retrieve the property values for
`args` : | va_list of property name/return location pairs, followed by `NULL`

Since 3.0

### gtk_style_properties_lookup_color ()

    GtkSymbolicColor *  gtk_style_properties_lookup_color   (GtkStyleProperties *props,
                                                             const gchar *name);

Returns the symbolic color that is mapped to `name`.

`props` : | a GtkStyleProperties
`name` : | color name to lookup
Returns : | The mapped color. [transfer none]

Since 3.0

### gtk_style_properties_lookup_property ()

    gboolean            gtk_style_properties_lookup_property
                                                            (const gchar *property_name,
                                                             GtkStylePropertyParser *parse_func,
                                                             GParamSpec **pspec);

Returns `TRUE` if a property has been registered, if `pspec` or `parse_func` are not `NULL`, the GParamSpec and parsing function will be respectively returned.

`property_name` : | property name to look up
`parse_func` : | return location for the parse function. [out]
`pspec` : | return location for the GParamSpec. [out][transfer none]
Returns : | `TRUE` if the property is registered, `FALSE` otherwise

Since 3.0

### gtk_style_properties_map_color ()

    void                gtk_style_properties_map_color      (GtkStyleProperties *props,
                                                             const gchar *name,
                                                             GtkSymbolicColor *color);

Maps `color` so it can be referenced by `name`. See `gtk_style_properties_lookup_color()`

`props` : | a GtkStyleProperties
`name` : | color name
`color` : | GtkSymbolicColor to map `name` to

Since 3.0

### gtk_style_properties_merge ()

    void                gtk_style_properties_merge          (GtkStyleProperties *props,
                                                             const GtkStyleProperties *props_to_merge,
                                                             gboolean replace);

Merges into `props` all the style information contained in `props_to_merge`. If `replace` is `TRUE`, the values will be overwritten, if it is `FALSE`, the older values will prevail.

`props` : | a GtkStyleProperties
`props_to_merge` : | a second GtkStyleProperties
`replace` : | whether to replace values or not

Since 3.0

### gtk_style_properties_new ()

    GtkStyleProperties * gtk_style_properties_new           (void);

Returns a newly created GtkStyleProperties

Returns : | a new GtkStyleProperties

### GtkStylePropertyParser ()

    gboolean            (*GtkStylePropertyParser)           (const gchar *string,
                                                             GValue *value,
                                                             GError **error);

### gtk_style_properties_register_property ()

    void                gtk_style_properties_register_property
                                                            (GtkStylePropertyParser parse_func,
                                                             GParamSpec *pspec);

Registers a property so it can be used in the CSS file format. This function is the low-level equivalent of `gtk_theming_engine_register_property()`, if you are implementing a theming engine, you want to use that function instead.

`parse_func` : | parsing function to use, or `NULL`
`pspec` : | the GParamSpec for the new property

Since 3.0

### gtk_style_properties_set ()

    void                gtk_style_properties_set            (GtkStyleProperties *props,
                                                             GtkStateFlags state,
                                                             ...);

Sets several style properties on `props`.

`props` : | a GtkStyleProperties
`state` : | state to set the values for
`...` : | property name/value pairs, followed by `NULL`

Since 3.0

### gtk_style_properties_set_property ()

    void                gtk_style_properties_set_property   (GtkStyleProperties *props,
                                                             const gchar *property,
                                                             GtkStateFlags state,
                                                             const GValue *value);

Sets a styling property in `props`.

`props` : | a GtkStyleProperties
`property` : | styling property to set
`state` : | state to set the value for
`value` : | new value for the property

Since 3.0

### gtk_style_properties_set_valist ()

    void                gtk_style_properties_set_valist     (GtkStyleProperties *props,
                                                             GtkStateFlags state,
                                                             va_list args);

Sets several style properties on `props`.

`props` : | a GtkStyleProperties
`state` : | state to set the values for
`args` : | va_list of property name/value pairs, followed by `NULL`

Since 3.0

### gtk_style_properties_unset_property ()

    void                gtk_style_properties_unset_property (GtkStyleProperties *props,
                                                             const gchar *property,
                                                             GtkStateFlags state);

Unsets a style property in `props`.

`props` : | a GtkStyleProperties
`property` : | property to unset
`state` : | state to unset

Since 3.0