<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GIcon</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="index.html" title="GIO Reference Manual">
<link rel="up" href="icons.html" title="Icons">
<link rel="prev" href="icons.html" title="Icons">
<link rel="next" href="GFileIcon.html" title="GFileIcon">
<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="icons.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="icons.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GIO Reference Manual</th>
<td><a accesskey="n" href="GFileIcon.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#GIcon.synopsis" class="shortcut">Top</a>
                   | 
                  <a href="#GIcon.description" class="shortcut">Description</a>
                   | 
                  <a href="#GIcon.object-hierarchy" class="shortcut">Object Hierarchy</a>
                   | 
                  <a href="#GIcon.prerequisites" class="shortcut">Prerequisites</a>
                   | 
                  <a href="#GIcon.derived-interfaces" class="shortcut">Known Derived Interfaces</a>
                   | 
                  <a href="#GIcon.implementations" class="shortcut">Known Implementations</a>
</td></tr>
</table>
<div class="refentry" title="GIcon">
<a name="GIcon"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GIcon.top_of_page"></a>GIcon</span></h2>
<p>GIcon — Interface for icons</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv" title="Synopsis">
<a name="GIcon.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">
#include &lt;gio/gio.h&gt;

                    <a class="link" href="GIcon.html#GIcon-struct" title="GIcon">GIcon</a>;
                    <a class="link" href="GIcon.html#GIconIface" title="GIconIface">GIconIface</a>;
<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               <a class="link" href="GIcon.html#g-icon-hash" title="g_icon_hash ()">g_icon_hash</a>                         (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gconstpointer"><span class="type">gconstpointer</span></a> icon</code></em>);
<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="GIcon.html#g-icon-equal" title="g_icon_equal ()">g_icon_equal</a>                        (<em class="parameter"><code><a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> *icon1</code></em>,
                                                         <em class="parameter"><code><a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> *icon2</code></em>);
<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *             <a class="link" href="GIcon.html#g-icon-to-string" title="g_icon_to_string ()">g_icon_to_string</a>                    (<em class="parameter"><code><a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> *icon</code></em>);
<a class="link" href="GIcon.html" title="GIcon"><span class="returnvalue">GIcon</span></a> *             <a class="link" href="GIcon.html#g-icon-new-for-string" title="g_icon_new_for_string ()">g_icon_new_for_string</a>               (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *str</code></em>,
                                                         <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
</pre>
</div>
<div class="refsect1" title="Object Hierarchy">
<a name="GIcon.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
  GInterface
   +----GIcon
</pre>
</div>
<div class="refsect1" title="Prerequisites">
<a name="GIcon.prerequisites"></a><h2>Prerequisites</h2>
<p>
GIcon requires
 <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject">GObject</a>.</p>
</div>
<div class="refsect1" title="Known Derived Interfaces">
<a name="GIcon.derived-interfaces"></a><h2>Known Derived Interfaces</h2>
<p>
GIcon is required by
 <a class="link" href="GLoadableIcon.html" title="GLoadableIcon">GLoadableIcon</a>.</p>
</div>
<div class="refsect1" title="Known Implementations">
<a name="GIcon.implementations"></a><h2>Known Implementations</h2>
<p>
GIcon is implemented by
 <a class="link" href="GEmblem.html" title="GEmblem">GEmblem</a>,  <a class="link" href="GEmblemedIcon.html" title="GEmblemedIcon">GEmblemedIcon</a>,  <a class="link" href="GFileIcon.html" title="GFileIcon">GFileIcon</a> and  <a class="link" href="GThemedIcon.html" title="GThemedIcon">GThemedIcon</a>.</p>
</div>
<div class="refsect1" title="Description">
<a name="GIcon.description"></a><h2>Description</h2>
<p>
<a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> is a very minimal interface for icons. It provides functions
for checking the equality of two icons, hashing of icons and
serializing an icon to and from strings.
</p>
<p>
<a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> does not provide the actual pixmap for the icon as this is out 
of GIO's scope, however implementations of <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> may contain the name 
of an icon (see <a class="link" href="GThemedIcon.html" title="GThemedIcon"><span class="type">GThemedIcon</span></a>), or the path to an icon (see <a class="link" href="GLoadableIcon.html" title="GLoadableIcon"><span class="type">GLoadableIcon</span></a>). 
</p>
<p>
To obtain a hash of a <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>, see <a class="link" href="GIcon.html#g-icon-hash" title="g_icon_hash ()"><code class="function">g_icon_hash()</code></a>.
</p>
<p>
To check if two <a href="GIcon.html"><span class="type">GIcons</span></a> are equal, see <a class="link" href="GIcon.html#g-icon-equal" title="g_icon_equal ()"><code class="function">g_icon_equal()</code></a>.
</p>
<p>
For serializing a <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>, use <a class="link" href="GIcon.html#g-icon-to-string" title="g_icon_to_string ()"><code class="function">g_icon_to_string()</code></a> and
<a class="link" href="GIcon.html#g-icon-new-for-string" title="g_icon_new_for_string ()"><code class="function">g_icon_new_for_string()</code></a>.
</p>
<p>
If your application or library provides one or more <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>
implementations you need to ensure that each <a href="/usr/share/gtk-doc/html/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> is registered
with the type system prior to calling <a class="link" href="GIcon.html#g-icon-new-for-string" title="g_icon_new_for_string ()"><code class="function">g_icon_new_for_string()</code></a>.
</p>
</div>
<div class="refsect1" title="Details">
<a name="GIcon.details"></a><h2>Details</h2>
<div class="refsect2" title="GIcon">
<a name="GIcon-struct"></a><h3>GIcon</h3>
<pre class="programlisting">typedef struct _GIcon GIcon;</pre>
<p>
An abstract type that specifies an icon.
</p>
</div>
<hr>
<div class="refsect2" title="GIconIface">
<a name="GIconIface"></a><h3>GIconIface</h3>
<pre class="programlisting">typedef struct {
  GTypeInterface g_iface;

  /* Virtual Table */

  guint       (* hash)        (GIcon   *icon);
  gboolean    (* equal)       (GIcon   *icon1,
                               GIcon   *icon2);
  gboolean    (* to_tokens)   (GIcon   *icon,
			       GPtrArray *tokens,
                               gint    *out_version);
  GIcon *     (* from_tokens) (gchar  **tokens,
                               gint     num_tokens,
                               gint     version,
                               GError **error);
} GIconIface;
</pre>
<p>
GIconIface is used to implement GIcon types for various
different systems. See <a class="link" href="GThemedIcon.html" title="GThemedIcon"><span class="type">GThemedIcon</span></a> and <a class="link" href="GLoadableIcon.html" title="GLoadableIcon"><span class="type">GLoadableIcon</span></a> for
examples of how to implement this interface.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><a href="/usr/share/gtk-doc/html/gobject/gobject-Type-Information.html#GTypeInterface"><span class="type">GTypeInterface</span></a> <em class="structfield"><code><a name="GIconIface.g-iface"></a>g_iface</code></em>;</span></p></td>
<td>The parent interface.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIconIface.hash"></a>hash</code></em> ()</span></p></td>
<td>A hash for a given <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIconIface.equal"></a>equal</code></em> ()</span></p></td>
<td>Checks if two <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>s are equal.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIconIface.to-tokens"></a>to_tokens</code></em> ()</span></p></td>
<td>Serializes a <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> into tokens. The tokens must not
contain any whitespace. Don't implement if the <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> can't be
serialized (Since 2.20).
</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GIconIface.from-tokens"></a>from_tokens</code></em> ()</span></p></td>
<td>Constructs a <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> from tokens. Set the <a href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> if
the tokens are malformed. Don't implement if the <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> can't be
serialized (Since 2.20).
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_icon_hash ()">
<a name="g-icon-hash"></a><h3>g_icon_hash ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               g_icon_hash                         (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gconstpointer"><span class="type">gconstpointer</span></a> icon</code></em>);</pre>
<p>
Gets a hash for an icon.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>icon</code></em> :</span></p></td>
<td>
<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gconstpointer"><span class="type">gconstpointer</span></a> to an icon object.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> a <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> containing a hash for the <em class="parameter"><code>icon</code></em>, suitable for 
use in a <a href="/usr/share/gtk-doc/html/glib/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> or similar data structure.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_icon_equal ()">
<a name="g-icon-equal"></a><h3>g_icon_equal ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            g_icon_equal                        (<em class="parameter"><code><a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> *icon1</code></em>,
                                                         <em class="parameter"><code><a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> *icon2</code></em>);</pre>
<p>
Checks if two icons are equal.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>icon1</code></em> :</span></p></td>
<td>pointer to the first <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>icon2</code></em> :</span></p></td>
<td>pointer to the second <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>icon1</code></em> is equal to <em class="parameter"><code>icon2</code></em>. <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" title="g_icon_to_string ()">
<a name="g-icon-to-string"></a><h3>g_icon_to_string ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *             g_icon_to_string                    (<em class="parameter"><code><a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> *icon</code></em>);</pre>
<p>
Generates a textual representation of <em class="parameter"><code>icon</code></em> that can be used for
serialization such as when passing <em class="parameter"><code>icon</code></em> to a different process or
saving it to persistent storage. Use <a class="link" href="GIcon.html#g-icon-new-for-string" title="g_icon_new_for_string ()"><code class="function">g_icon_new_for_string()</code></a> to
get <em class="parameter"><code>icon</code></em> back from the returned string.
</p>
<p>
The encoding of the returned string is proprietary to <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> except
in the following two cases
</p>
<p>
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>
    If <em class="parameter"><code>icon</code></em> is a <a class="link" href="GFileIcon.html" title="GFileIcon"><span class="type">GFileIcon</span></a>, the returned string is a native path
    (such as <code class="literal">/path/to/my icon.png</code>) without escaping
    if the <a class="link" href="GFile.html" title="GFile"><span class="type">GFile</span></a> for <em class="parameter"><code>icon</code></em> is a native file.  If the file is not
    native, the returned string is the result of <a class="link" href="GFile.html#g-file-get-uri" title="g_file_get_uri ()"><code class="function">g_file_get_uri()</code></a>
    (such as <code class="literal">sftp://path/to/my%<code class="literal">20icon</code>.png</code>).
</p></li>
<li class="listitem"><p>
   If <em class="parameter"><code>icon</code></em> is a <a class="link" href="GThemedIcon.html" title="GThemedIcon"><span class="type">GThemedIcon</span></a> with exactly one name, the encoding is
   simply the name (such as <code class="literal">network-server</code>).
</p></li>
</ul></div>
<p>
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>icon</code></em> :</span></p></td>
<td>a <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> An allocated NUL-terminated UTF8 string or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>icon</code></em> can't
be serialized. Use <a href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> to free.

</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.20</p>
</div>
<hr>
<div class="refsect2" title="g_icon_new_for_string ()">
<a name="g-icon-new-for-string"></a><h3>g_icon_new_for_string ()</h3>
<pre class="programlisting"><a class="link" href="GIcon.html" title="GIcon"><span class="returnvalue">GIcon</span></a> *             g_icon_new_for_string               (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *str</code></em>,
                                                         <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>
Generate a <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> instance from <em class="parameter"><code>str</code></em>. This function can fail if
<em class="parameter"><code>str</code></em> is not valid - see <a class="link" href="GIcon.html#g-icon-to-string" title="g_icon_to_string ()"><code class="function">g_icon_to_string()</code></a> for discussion.
</p>
<p>
If your application or library provides one or more <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a>
implementations you need to ensure that each <a href="/usr/share/gtk-doc/html/gobject/gobject-Type-Information.html#GType"><span class="type">GType</span></a> is registered
with the type system prior to calling <a class="link" href="GIcon.html#g-icon-new-for-string" title="g_icon_new_for_string ()"><code class="function">g_icon_new_for_string()</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
<td>A string obtained via <a class="link" href="GIcon.html#g-icon-to-string" title="g_icon_to_string ()"><code class="function">g_icon_to_string()</code></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
<td>Return location for error.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td> An object implementing the <a class="link" href="GIcon.html" title="GIcon"><span class="type">GIcon</span></a> interface or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if
<em class="parameter"><code>error</code></em> is set.

</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.20</p>
</div>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.14</div>
</body>
</html>