## Themeable Stock Images

Themeable Stock Images

## Functions

GtkIconSource * | gtk_icon_source_copy ()
void | gtk_icon_source_free ()
void | gtk_icon_factory_add ()
void | gtk_icon_factory_add_default ()
GtkIconSet * | gtk_icon_factory_lookup ()
GtkIconSet * | gtk_icon_factory_lookup_default ()
GtkIconFactory * | gtk_icon_factory_new ()
void | gtk_icon_factory_remove_default ()
void | gtk_icon_set_add_source ()
GtkIconSet * | gtk_icon_set_copy ()
GtkIconSet * | gtk_icon_set_new ()
GtkIconSet * | gtk_icon_set_new_from_pixbuf ()
GtkIconSet * | gtk_icon_set_ref ()
GdkPixbuf * | gtk_icon_set_render_icon ()
void | gtk_icon_set_unref ()
gboolean | gtk_icon_size_lookup ()
gboolean | gtk_icon_size_lookup_for_settings ()
GtkIconSize | gtk_icon_size_register ()
void | gtk_icon_size_register_alias ()
GtkIconSize | gtk_icon_size_from_name ()
const gchar * | gtk_icon_size_get_name ()
void | gtk_icon_set_get_sizes ()
GtkTextDirection | gtk_icon_source_get_direction ()
gboolean | gtk_icon_source_get_direction_wildcarded ()
GdkPixbuf * | gtk_icon_source_get_pixbuf ()
const gchar * | gtk_icon_source_get_icon_name ()
GtkIconSize | gtk_icon_source_get_size ()
gboolean | gtk_icon_source_get_size_wildcarded ()
GtkStateType | gtk_icon_source_get_state ()
gboolean | gtk_icon_source_get_state_wildcarded ()
GtkIconSource * | gtk_icon_source_new ()
void | gtk_icon_source_set_direction ()
void | gtk_icon_source_set_direction_wildcarded ()
void | gtk_icon_source_set_pixbuf ()
void | gtk_icon_source_set_icon_name ()
void | gtk_icon_source_set_size ()
void | gtk_icon_source_set_size_wildcarded ()
void | gtk_icon_source_set_state ()
void | gtk_icon_source_set_state_wildcarded ()

## Types and Values

| GtkIconSource
| GtkIconFactory
| GtkIconSet
enum | GtkIconSize
#define | gtk_icon_source_get_filename
#define | gtk_icon_source_set_filename

## Object Hierarchy

        GBoxed
        ╰── GtkIconSet
        GObject
        ╰── GtkIconFactory

## Implemented Interfaces

GtkIconFactory implements GtkBuildable.

## Includes

    #include <gtk/gtk.h>

## Description

## Functions

### gtk_icon_source_copy ()

    GtkIconSource *
    gtk_icon_source_copy (const GtkIconSource *source);

Creates a copy of `source` ; mostly useful for language bindings.

#### Parameters

source | a GtkIconSource |

#### Returns

a new GtkIconSource

### gtk_icon_source_free ()

    void
    gtk_icon_source_free (GtkIconSource *source);

Frees a dynamically-allocated icon source, along with its filename, size, and pixbuf fields if those are not `NULL`.

#### Parameters

source | a GtkIconSource |

### gtk_icon_factory_add ()

    void
    gtk_icon_factory_add (GtkIconFactory *factory,
                          const gchar *stock_id,
                          GtkIconSet *icon_set);

Adds the given `icon_set` to the icon factory, under the name `stock_id` . `stock_id` should be namespaced for your application, e.g. "myapp-whatever-icon". Normally applications create a GtkIconFactory, then add it to the list of default factories with `gtk_icon_factory_add_default()`. Then they pass the `stock_id` to widgets such as GtkImage to display the icon. Themes can provide an icon with the same name (such as "myapp-whatever-icon") to override your application's default icons. If an icon already existed in `factory` for `stock_id` , it is unreferenced and replaced with the new `icon_set` .

#### Parameters

factory | a GtkIconFactory |
stock_id | icon name |
icon_set | icon set |

### gtk_icon_factory_add_default ()

    void
    gtk_icon_factory_add_default (GtkIconFactory *factory);

Adds an icon factory to the list of icon factories searched by `gtk_style_lookup_icon_set()`. This means that, for example, `gtk_image_new_from_stock()` will be able to find icons in `factory` . There will normally be an icon factory added for each library or application that comes with icons. The default icon factories can be overridden by themes.

#### Parameters

factory | a GtkIconFactory |

### gtk_icon_factory_lookup ()

    GtkIconSet *
    gtk_icon_factory_lookup (GtkIconFactory *factory,
                             const gchar *stock_id);

Looks up `stock_id` in the icon factory, returning an icon set if found, otherwise `NULL`. For display to the user, you should use `gtk_style_lookup_icon_set()` on the GtkStyle for the widget that will display the icon, instead of using this function directly, so that themes are taken into account.

#### Parameters

factory | a GtkIconFactory |
stock_id | an icon name |

#### Returns

icon set of `stock_id` .

[transfer none]

### gtk_icon_factory_lookup_default ()

    GtkIconSet *
    gtk_icon_factory_lookup_default (const gchar *stock_id);

Looks for an icon in the list of default icon factories. For display to the user, you should use `gtk_style_lookup_icon_set()` on the GtkStyle for the widget that will display the icon, instead of using this function directly, so that themes are taken into account.

#### Parameters

stock_id | an icon name |

#### Returns

a GtkIconSet, or `NULL`.

[transfer none]

### gtk_icon_factory_new ()

    GtkIconFactory *
    gtk_icon_factory_new (void);

Creates a new GtkIconFactory. An icon factory manages a collection of GtkIconSets; a GtkIconSet manages a set of variants of a particular icon (i.e. a GtkIconSet contains variants for different sizes and widget states). Icons in an icon factory are named by a stock ID, which is a simple string identifying the icon. Each GtkStyle has a list of GtkIconFactorys derived from the current theme; those icon factories are consulted first when searching for an icon. If the theme doesn't set a particular icon, GTK+ looks for the icon in a list of default icon factories, maintained by `gtk_icon_factory_add_default()` and `gtk_icon_factory_remove_default()`. Applications with icons should add a default icon factory with their icons, which will allow themes to override the icons for the application.

#### Returns

a new GtkIconFactory

### gtk_icon_factory_remove_default ()

    void
    gtk_icon_factory_remove_default (GtkIconFactory *factory);

Removes an icon factory from the list of default icon factories. Not normally used; you might use it for a library that can be unloaded or shut down.

#### Parameters

factory | a GtkIconFactory previously added with `gtk_icon_factory_add_default()` |

### gtk_icon_set_add_source ()

    void
    gtk_icon_set_add_source (GtkIconSet *icon_set,
                             const GtkIconSource *source);

Icon sets have a list of GtkIconSource, which they use as base icons for rendering icons in different states and sizes. Icons are scaled, made to look insensitive, etc. in `gtk_icon_set_render_icon()`, but GtkIconSet needs base images to work with. The base images and when to use them are described by a GtkIconSource.

This function copies `source` , so you can reuse the same source immediately without affecting the icon set.

An example of when you'd use this function: a web browser's "Back to Previous Page" icon might point in a different direction in Hebrew and in English; it might look different when insensitive; and it might change size depending on toolbar mode (small/large icons). So a single icon set would contain all those variants of the icon, and you might add a separate source for each one.

You should nearly always add a "default" icon source with all fields wildcarded, which will be used as a fallback if no more specific source matches. GtkIconSet always prefers more specific icon sources to more generic icon sources. The order in which you add the sources to the icon set does not matter.

gtk_icon_set_new_from_pixbuf() creates a new icon set with a default icon source based on the given pixbuf.

#### Parameters

icon_set | a GtkIconSet |
source | a GtkIconSource |

### gtk_icon_set_copy ()

    GtkIconSet *
    gtk_icon_set_copy (GtkIconSet *icon_set);

Copies `icon_set` by value.

#### Parameters

icon_set | a GtkIconSet |

#### Returns

a new GtkIconSet identical to the first.

### gtk_icon_set_new ()

    GtkIconSet *
    gtk_icon_set_new (void);

Creates a new GtkIconSet. A GtkIconSet represents a single icon in various sizes and widget states. It can provide a GdkPixbuf for a given size and state on request, and automatically caches some of the rendered GdkPixbuf objects.

Normally you would use `gtk_widget_render_icon()` instead of using GtkIconSet directly. The one case where you'd use GtkIconSet is to create application-specific icon sets to place in a GtkIconFactory.

#### Returns

a new GtkIconSet

### gtk_icon_set_new_from_pixbuf ()

    GtkIconSet *
    gtk_icon_set_new_from_pixbuf (GdkPixbuf *pixbuf);

Creates a new GtkIconSet with `pixbuf` as the default/fallback source image. If you don't add any additional GtkIconSource to the icon set, all variants of the icon will be created from `pixbuf` , using scaling, pixelation, etc. as required to adjust the icon size or make the icon look insensitive/prelighted.

#### Parameters

pixbuf | a GdkPixbuf |

#### Returns

a new GtkIconSet

### gtk_icon_set_ref ()

    GtkIconSet *
    gtk_icon_set_ref (GtkIconSet *icon_set);

Increments the reference count on `icon_set` .

#### Parameters

icon_set | a GtkIconSet. |

#### Returns

`icon_set` .

### gtk_icon_set_render_icon ()

    GdkPixbuf *
    gtk_icon_set_render_icon (GtkIconSet *icon_set,
                              GtkStyle *style,
                              GtkTextDirection direction,
                              GtkStateType state,
                              GtkIconSize size,
                              GtkWidget *widget,
                              const char *detail);

Renders an icon using `gtk_style_render_icon()`. In most cases, `gtk_widget_render_icon()` is better, since it automatically provides most of the arguments from the current widget settings. This function never returns `NULL`; if the icon can't be rendered (perhaps because an image file fails to load), a default "missing image" icon will be returned instead.

#### Parameters

icon_set | a GtkIconSet |
style | a GtkStyle associated with `widget` , or `NULL`. | [allow-none]
direction | text direction |
state | widget state |
size | icon size. A size of (GtkIconSize)-1 means render at the size of the source and don't scale. | [type int]
widget | widget that will display the icon, or `NULL`. The only use that is typically made of this is to determine the appropriate GdkScreen. | [allow-none]
detail | detail to pass to the theme engine, or `NULL`. Note that passing a detail of anything but `NULL` will disable caching. | [allow-none]

#### Returns

a GdkPixbuf to be displayed.

[transfer full]

### gtk_icon_set_unref ()

    void
    gtk_icon_set_unref (GtkIconSet *icon_set);

Decrements the reference count on `icon_set` , and frees memory if the reference count reaches 0.

#### Parameters

icon_set | a GtkIconSet |

### gtk_icon_size_lookup ()

    gboolean
    gtk_icon_size_lookup (GtkIconSize size,
                          gint *width,
                          gint *height);

Obtains the pixel size of a semantic icon size, possibly modified by user preferences for the default GtkSettings. (See `gtk_icon_size_lookup_for_settings()`.) Normally `size` would be GTK_ICON_SIZE_MENU, GTK_ICON_SIZE_BUTTON, etc. This function isn't normally needed, `gtk_widget_render_icon()` is the usual way to get an icon for rendering, then just look at the size of the rendered pixbuf. The rendered pixbuf may not even correspond to the width/height returned by `gtk_icon_size_lookup()`, because themes are free to render the pixbuf however they like, including changing the usual size.

#### Parameters

size | an icon size. | [type int]
width | location to store icon width. | [out]
height | location to store icon height. | [out]

#### Returns

`TRUE` if `size` was a valid size

### gtk_icon_size_lookup_for_settings ()

    gboolean
    gtk_icon_size_lookup_for_settings (GtkSettings *settings,
                                       GtkIconSize size,
                                       gint *width,
                                       gint *height);

Obtains the pixel size of a semantic icon size, possibly modified by user preferences for a particular GtkSettings. Normally `size` would be GTK_ICON_SIZE_MENU, GTK_ICON_SIZE_BUTTON, etc. This function isn't normally needed, `gtk_widget_render_icon()` is the usual way to get an icon for rendering, then just look at the size of the rendered pixbuf. The rendered pixbuf may not even correspond to the width/height returned by `gtk_icon_size_lookup()`, because themes are free to render the pixbuf however they like, including changing the usual size.

#### Parameters

settings | a GtkSettings object, used to determine which set of user preferences to used. |
size | an icon size. | [type int]
width | location to store icon width. | [out]
height | location to store icon height. | [out]

#### Returns

`TRUE` if `size` was a valid size

Since: 2.2

### gtk_icon_size_register ()

    GtkIconSize
    gtk_icon_size_register (const gchar *name,
                            gint width,
                            gint height);

Registers a new icon size, along the same lines as GTK_ICON_SIZE_MENU, etc. Returns the integer value for the size.

#### Parameters

name | name of the icon size |
width | the icon width |
height | the icon height |

#### Returns

integer value representing the size.

[type int]

### gtk_icon_size_register_alias ()

    void
    gtk_icon_size_register_alias (const gchar *alias,
                                  GtkIconSize target);

Registers `alias` as another name for `target` . So calling `gtk_icon_size_from_name()` with `alias` as argument will return `target` .

#### Parameters

alias | an alias for `target` |
target | an existing icon size. | [type int]

### gtk_icon_size_from_name ()

    GtkIconSize
    gtk_icon_size_from_name (const gchar *name);

Looks up the icon size associated with `name` .

#### Parameters

name | the name to look up. |
returns | the icon size with the given name. |

#### Returns

the icon size.

[type int]

### gtk_icon_size_get_name ()

    const gchar *
    gtk_icon_size_get_name (GtkIconSize size);

Gets the canonical name of the given icon size. The returned string is statically allocated and should not be freed.

#### Parameters

size | a GtkIconSize. | [type int]
returns | the name of the given icon size. |

### gtk_icon_set_get_sizes ()

    void
    gtk_icon_set_get_sizes (GtkIconSet *icon_set,
                            GtkIconSize **sizes,
                            gint *n_sizes);

Obtains a list of icon sizes this icon set can render. The returned array must be freed with `g_free()`.

#### Parameters

icon_set | a GtkIconSet |
sizes | return location for array of sizes. | [array length=n_sizes][out][type int]
n_sizes | location to store number of elements in returned array |

### gtk_icon_source_get_direction ()

    GtkTextDirection
    gtk_icon_source_get_direction (const GtkIconSource *source);

Obtains the text direction this icon source applies to. The return value is only useful/meaningful if the text direction is not wildcarded.

#### Parameters

source | a GtkIconSource |

#### Returns

text direction this source matches

### gtk_icon_source_get_direction_wildcarded ()

    gboolean
    gtk_icon_source_get_direction_wildcarded
                                   (const GtkIconSource *source);

Gets the value set by `gtk_icon_source_set_direction_wildcarded()`.

#### Parameters

source | a GtkIconSource |

#### Returns

`TRUE` if this icon source is a base for any text direction variant

### gtk_icon_source_get_pixbuf ()

    GdkPixbuf *
    gtk_icon_source_get_pixbuf (const GtkIconSource *source);

Retrieves the source pixbuf, or `NULL` if none is set. In addition, if a filename source is in use, this function in some cases will return the pixbuf from loaded from the filename. This is, for example, true for the GtkIconSource passed to the GtkStyle::`render_icon()` virtual function. The reference count on the pixbuf is not incremented.

#### Parameters

source | a GtkIconSource |

#### Returns

source pixbuf.

[transfer none]

### gtk_icon_source_get_icon_name ()

    const gchar *
    gtk_icon_source_get_icon_name (const GtkIconSource *source);

Retrieves the source icon name, or `NULL` if none is set. The icon_name is not a copy, and should not be modified or expected to persist beyond the lifetime of the icon source.

#### Parameters

source | a GtkIconSource |

#### Returns

icon name. This string must not be modified or freed.

### gtk_icon_source_get_size ()

    GtkIconSize
    gtk_icon_source_get_size (const GtkIconSource *source);

Obtains the icon size this source applies to. The return value is only useful/meaningful if the icon size is not wildcarded.

#### Parameters

source | a GtkIconSource |

#### Returns

icon size this source matches.

[type int]

### gtk_icon_source_get_size_wildcarded ()

    gboolean
    gtk_icon_source_get_size_wildcarded (const GtkIconSource *source);

Gets the value set by `gtk_icon_source_set_size_wildcarded()`.

#### Parameters

source | a GtkIconSource |

#### Returns

`TRUE` if this icon source is a base for any icon size variant

### gtk_icon_source_get_state ()

    GtkStateType
    gtk_icon_source_get_state (const GtkIconSource *source);

Obtains the widget state this icon source applies to. The return value is only useful/meaningful if the widget state is not wildcarded.

#### Parameters

source | a GtkIconSource |

#### Returns

widget state this source matches

### gtk_icon_source_get_state_wildcarded ()

    gboolean
    gtk_icon_source_get_state_wildcarded (const GtkIconSource *source);

Gets the value set by `gtk_icon_source_set_state_wildcarded()`.

#### Parameters

source | a GtkIconSource |

#### Returns

`TRUE` if this icon source is a base for any widget state variant

### gtk_icon_source_new ()

    GtkIconSource *
    gtk_icon_source_new (void);

Creates a new GtkIconSource. A GtkIconSource contains a GdkPixbuf (or image filename) that serves as the base image for one or more of the icons in a GtkIconSet, along with a specification for which icons in the icon set will be based on that pixbuf or image file. An icon set contains a set of icons that represent "the same" logical concept in different states, different global text directions, and different sizes.

So for example a web browser's "Back to Previous Page" icon might point in a different direction in Hebrew and in English; it might look different when insensitive; and it might change size depending on toolbar mode (small/large icons). So a single icon set would contain all those variants of the icon. GtkIconSet contains a list of GtkIconSource from which it can derive specific icon variants in the set.

In the simplest case, GtkIconSet contains one source pixbuf from which it derives all variants. The convenience function `gtk_icon_set_new_from_pixbuf()` handles this case; if you only have one source pixbuf, just use that function.

If you want to use a different base pixbuf for different icon variants, you create multiple icon sources, mark which variants they'll be used to create, and add them to the icon set with `gtk_icon_set_add_source()`.

By default, the icon source has all parameters wildcarded. That is, the icon source will be used as the base icon for any desired text direction, widget state, or icon size.

#### Returns

a new GtkIconSource

### gtk_icon_source_set_direction ()

    void
    gtk_icon_source_set_direction (GtkIconSource *source,
                                   GtkTextDirection direction);

Sets the text direction this icon source is intended to be used with.

Setting the text direction on an icon source makes no difference if the text direction is wildcarded. Therefore, you should usually call `gtk_icon_source_set_direction_wildcarded()` to un-wildcard it in addition to calling this function.

#### Parameters

source | a GtkIconSource |
direction | text direction this source applies to |

### gtk_icon_source_set_direction_wildcarded ()

    void
    gtk_icon_source_set_direction_wildcarded
                                   (GtkIconSource *source,
                                    gboolean setting);

If the text direction is wildcarded, this source can be used as the base image for an icon in any GtkTextDirection. If the text direction is not wildcarded, then the text direction the icon source applies to should be set with `gtk_icon_source_set_direction()`, and the icon source will only be used with that text direction.

GtkIconSet prefers non-wildcarded sources (exact matches) over wildcarded sources, and will use an exact match when possible.

#### Parameters

source | a GtkIconSource |
setting | `TRUE` to wildcard the text direction |

### gtk_icon_source_set_pixbuf ()

    void
    gtk_icon_source_set_pixbuf (GtkIconSource *source,
                                GdkPixbuf *pixbuf);

Sets a pixbuf to use as a base image when creating icon variants for GtkIconSet.

#### Parameters

source | a GtkIconSource |
pixbuf | pixbuf to use as a source |

### gtk_icon_source_set_icon_name ()

    void
    gtk_icon_source_set_icon_name (GtkIconSource *source,
                                   const gchar *icon_name);

Sets the name of an icon to look up in the current icon theme to use as a base image when creating icon variants for GtkIconSet.

#### Parameters

source | a GtkIconSource |
icon_name | name of icon to use. | [allow-none]

### gtk_icon_source_set_size ()

    void
    gtk_icon_source_set_size (GtkIconSource *source,
                              GtkIconSize size);

Sets the icon size this icon source is intended to be used with.

Setting the icon size on an icon source makes no difference if the size is wildcarded. Therefore, you should usually call `gtk_icon_source_set_size_wildcarded()` to un-wildcard it in addition to calling this function.

#### Parameters

source | a GtkIconSource |
size | icon size this source applies to. | [type int]

### gtk_icon_source_set_size_wildcarded ()

    void
    gtk_icon_source_set_size_wildcarded (GtkIconSource *source,
                                         gboolean setting);

If the icon size is wildcarded, this source can be used as the base image for an icon of any size. If the size is not wildcarded, then the size the source applies to should be set with `gtk_icon_source_set_size()` and the icon source will only be used with that specific size.

GtkIconSet prefers non-wildcarded sources (exact matches) over wildcarded sources, and will use an exact match when possible.

GtkIconSet will normally scale wildcarded source images to produce an appropriate icon at a given size, but will not change the size of source images that match exactly.

#### Parameters

source | a GtkIconSource |
setting | `TRUE` to wildcard the widget state |

### gtk_icon_source_set_state ()

    void
    gtk_icon_source_set_state (GtkIconSource *source,
                               GtkStateType state);

Sets the widget state this icon source is intended to be used with.

Setting the widget state on an icon source makes no difference if the state is wildcarded. Therefore, you should usually call `gtk_icon_source_set_state_wildcarded()` to un-wildcard it in addition to calling this function.

#### Parameters

source | a GtkIconSource |
state | widget state this source applies to |

### gtk_icon_source_set_state_wildcarded ()

    void
    gtk_icon_source_set_state_wildcarded (GtkIconSource *source,
                                          gboolean setting);

If the widget state is wildcarded, this source can be used as the base image for an icon in any GtkStateType. If the widget state is not wildcarded, then the state the source applies to should be set with `gtk_icon_source_set_state()` and the icon source will only be used with that specific state.

GtkIconSet prefers non-wildcarded sources (exact matches) over wildcarded sources, and will use an exact match when possible.

GtkIconSet will normally transform wildcarded source images to produce an appropriate icon for a given state, for example lightening an image on prelight, but will not modify source images that match exactly.

#### Parameters

source | a GtkIconSource |
setting | `TRUE` to wildcard the widget state |

## Types and Values

### GtkIconSource

    typedef struct _GtkIconSource GtkIconSource;

### GtkIconFactory

    typedef struct _GtkIconFactory GtkIconFactory;

### GtkIconSet

    typedef struct _GtkIconSet GtkIconSet;

### enum GtkIconSize

#### Members

GTK_ICON_SIZE_INVALID |  |
GTK_ICON_SIZE_MENU |  |
GTK_ICON_SIZE_SMALL_TOOLBAR |  |
GTK_ICON_SIZE_LARGE_TOOLBAR |  |
GTK_ICON_SIZE_BUTTON |  |
GTK_ICON_SIZE_DND |  |
GTK_ICON_SIZE_DIALOG |  |

### gtk_icon_source_get_filename

    #define gtk_icon_source_get_filename gtk_icon_source_get_filename_utf8

Retrieves the source filename, or `NULL` if none is set. The filename is not a copy, and should not be modified or expected to persist beyond the lifetime of the icon source.

#### Parameters

source | a GtkIconSource |

#### Returns

image filename. This string must not be modified or freed.

### gtk_icon_source_set_filename

    #define gtk_icon_source_set_filename gtk_icon_source_set_filename_utf8

Sets the name of an image file to use as a base image when creating icon variants for GtkIconSet. The filename must be absolute.

#### Parameters

source | a GtkIconSource |
filename | image file to use |