1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module gtk.IconInfo;
26 
27 private import cairo.Surface;
28 private import gdk.RGBA;
29 private import gdk.Window;
30 private import gdkpixbuf.Pixbuf;
31 private import gio.AsyncResultIF;
32 private import gio.Cancellable;
33 private import glib.ConstructionException;
34 private import glib.ErrorG;
35 private import glib.GException;
36 private import glib.Str;
37 private import gobject.ObjectG;
38 private import gtk.IconTheme;
39 private import gtk.Style;
40 private import gtk.StyleContext;
41 private import gtk.c.functions;
42 public  import gtk.c.types;
43 public  import gtkc.gtktypes;
44 
45 
46 /**
47  * Contains information found when looking up an icon in
48  * an icon theme.
49  */
50 public class IconInfo : ObjectG
51 {
52 	/** the main Gtk struct */
53 	protected GtkIconInfo* gtkIconInfo;
54 
55 	/** Get the main Gtk struct */
56 	public GtkIconInfo* getIconInfoStruct(bool transferOwnership = false)
57 	{
58 		if (transferOwnership)
59 			ownedRef = false;
60 		return gtkIconInfo;
61 	}
62 
63 	/** the main Gtk struct as a void* */
64 	protected override void* getStruct()
65 	{
66 		return cast(void*)gtkIconInfo;
67 	}
68 
69 	/**
70 	 * Sets our main struct and passes it to the parent class.
71 	 */
72 	public this (GtkIconInfo* gtkIconInfo, bool ownedRef = false)
73 	{
74 		this.gtkIconInfo = gtkIconInfo;
75 		super(cast(GObject*)gtkIconInfo, ownedRef);
76 	}
77 
78 
79 	/** */
80 	public static GType getType()
81 	{
82 		return gtk_icon_info_get_type();
83 	}
84 
85 	/**
86 	 * Creates a #GtkIconInfo for a #GdkPixbuf.
87 	 *
88 	 * Params:
89 	 *     iconTheme = a #GtkIconTheme
90 	 *     pixbuf = the pixbuf to wrap in a #GtkIconInfo
91 	 *
92 	 * Returns: a #GtkIconInfo
93 	 *
94 	 * Since: 2.14
95 	 *
96 	 * Throws: ConstructionException GTK+ fails to create the object.
97 	 */
98 	public this(IconTheme iconTheme, Pixbuf pixbuf)
99 	{
100 		auto p = gtk_icon_info_new_for_pixbuf((iconTheme is null) ? null : iconTheme.getIconThemeStruct(), (pixbuf is null) ? null : pixbuf.getPixbufStruct());
101 
102 		if(p is null)
103 		{
104 			throw new ConstructionException("null returned by new_for_pixbuf");
105 		}
106 
107 		this(cast(GtkIconInfo*) p, true);
108 	}
109 
110 	/**
111 	 * Make a copy of a #GtkIconInfo.
112 	 *
113 	 * Deprecated: Use g_object_ref()
114 	 *
115 	 * Returns: the new GtkIconInfo
116 	 *
117 	 * Since: 2.4
118 	 */
119 	public IconInfo copy()
120 	{
121 		auto p = gtk_icon_info_copy(gtkIconInfo);
122 
123 		if(p is null)
124 		{
125 			return null;
126 		}
127 
128 		return ObjectG.getDObject!(IconInfo)(cast(GtkIconInfo*) p, true);
129 	}
130 
131 	/**
132 	 * Free a #GtkIconInfo and associated information
133 	 *
134 	 * Deprecated: Use g_object_unref()
135 	 *
136 	 * Since: 2.4
137 	 */
138 	public void free()
139 	{
140 		gtk_icon_info_free(gtkIconInfo);
141 	}
142 
143 	/**
144 	 * This function is deprecated and always returns %FALSE.
145 	 *
146 	 * Deprecated: Attachment points are deprecated
147 	 *
148 	 * Params:
149 	 *     points = location to store pointer
150 	 *         to an array of points, or %NULL free the array of points with g_free().
151 	 *
152 	 * Returns: %FALSE
153 	 *
154 	 * Since: 2.4
155 	 */
156 	public bool getAttachPoints(out GdkPoint[] points)
157 	{
158 		GdkPoint* outpoints = null;
159 		int nPoints;
160 
161 		auto p = gtk_icon_info_get_attach_points(gtkIconInfo, &outpoints, &nPoints) != 0;
162 
163 		points = outpoints[0 .. nPoints];
164 
165 		return p;
166 	}
167 
168 	/**
169 	 * Gets the base scale for the icon. The base scale is a scale
170 	 * for the icon that was specified by the icon theme creator.
171 	 * For instance an icon drawn for a high-dpi screen with window
172 	 * scale 2 for a base size of 32 will be 64 pixels tall and have
173 	 * a base scale of 2.
174 	 *
175 	 * Returns: the base scale
176 	 *
177 	 * Since: 3.10
178 	 */
179 	public int getBaseScale()
180 	{
181 		return gtk_icon_info_get_base_scale(gtkIconInfo);
182 	}
183 
184 	/**
185 	 * Gets the base size for the icon. The base size
186 	 * is a size for the icon that was specified by
187 	 * the icon theme creator. This may be different
188 	 * than the actual size of image; an example of
189 	 * this is small emblem icons that can be attached
190 	 * to a larger icon. These icons will be given
191 	 * the same base size as the larger icons to which
192 	 * they are attached.
193 	 *
194 	 * Note that for scaled icons the base size does
195 	 * not include the base scale.
196 	 *
197 	 * Returns: the base size, or 0, if no base
198 	 *     size is known for the icon.
199 	 *
200 	 * Since: 2.4
201 	 */
202 	public int getBaseSize()
203 	{
204 		return gtk_icon_info_get_base_size(gtkIconInfo);
205 	}
206 
207 	/**
208 	 * Gets the built-in image for this icon, if any. To allow GTK+ to use
209 	 * built in icon images, you must pass the %GTK_ICON_LOOKUP_USE_BUILTIN
210 	 * to gtk_icon_theme_lookup_icon().
211 	 *
212 	 * Deprecated: This function is deprecated, use
213 	 * gtk_icon_theme_add_resource_path() instead of builtin icons.
214 	 *
215 	 * Returns: the built-in image pixbuf, or %NULL.
216 	 *     No extra reference is added to the returned pixbuf, so if
217 	 *     you want to keep it around, you must use g_object_ref().
218 	 *     The returned image must not be modified.
219 	 *
220 	 * Since: 2.4
221 	 */
222 	public Pixbuf getBuiltinPixbuf()
223 	{
224 		auto p = gtk_icon_info_get_builtin_pixbuf(gtkIconInfo);
225 
226 		if(p is null)
227 		{
228 			return null;
229 		}
230 
231 		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p);
232 	}
233 
234 	/**
235 	 * This function is deprecated and always returns %NULL.
236 	 *
237 	 * Deprecated: Display names are deprecated
238 	 *
239 	 * Returns: %NULL
240 	 *
241 	 * Since: 2.4
242 	 */
243 	public string getDisplayName()
244 	{
245 		return Str.toString(gtk_icon_info_get_display_name(gtkIconInfo));
246 	}
247 
248 	/**
249 	 * This function is deprecated and always returns %FALSE.
250 	 *
251 	 * Deprecated: Embedded rectangles are deprecated
252 	 *
253 	 * Params:
254 	 *     rectangle = #GdkRectangle in which to store embedded
255 	 *         rectangle coordinates; coordinates are only stored
256 	 *         when this function returns %TRUE.
257 	 *
258 	 * Returns: %FALSE
259 	 *
260 	 * Since: 2.4
261 	 */
262 	public bool getEmbeddedRect(out GdkRectangle rectangle)
263 	{
264 		return gtk_icon_info_get_embedded_rect(gtkIconInfo, &rectangle) != 0;
265 	}
266 
267 	/**
268 	 * Gets the filename for the icon. If the %GTK_ICON_LOOKUP_USE_BUILTIN
269 	 * flag was passed to gtk_icon_theme_lookup_icon(), there may be no
270 	 * filename if a builtin icon is returned; in this case, you should
271 	 * use gtk_icon_info_get_builtin_pixbuf().
272 	 *
273 	 * Returns: the filename for the icon, or %NULL
274 	 *     if gtk_icon_info_get_builtin_pixbuf() should be used instead.
275 	 *     The return value is owned by GTK+ and should not be modified
276 	 *     or freed.
277 	 *
278 	 * Since: 2.4
279 	 */
280 	public string getFilename()
281 	{
282 		return Str.toString(gtk_icon_info_get_filename(gtkIconInfo));
283 	}
284 
285 	/**
286 	 * Checks if the icon is symbolic or not. This currently uses only
287 	 * the file name and not the file contents for determining this.
288 	 * This behaviour may change in the future.
289 	 *
290 	 * Returns: %TRUE if the icon is symbolic, %FALSE otherwise
291 	 *
292 	 * Since: 3.12
293 	 */
294 	public bool isSymbolic()
295 	{
296 		return gtk_icon_info_is_symbolic(gtkIconInfo) != 0;
297 	}
298 
299 	/**
300 	 * Renders an icon previously looked up in an icon theme using
301 	 * gtk_icon_theme_lookup_icon(); the size will be based on the size
302 	 * passed to gtk_icon_theme_lookup_icon(). Note that the resulting
303 	 * pixbuf may not be exactly this size; an icon theme may have icons
304 	 * that differ slightly from their nominal sizes, and in addition GTK+
305 	 * will avoid scaling icons that it considers sufficiently close to the
306 	 * requested size or for which the source image would have to be scaled
307 	 * up too far. (This maintains sharpness.). This behaviour can be changed
308 	 * by passing the %GTK_ICON_LOOKUP_FORCE_SIZE flag when obtaining
309 	 * the #GtkIconInfo. If this flag has been specified, the pixbuf
310 	 * returned by this function will be scaled to the exact size.
311 	 *
312 	 * Returns: the rendered icon; this may be a newly
313 	 *     created icon or a new reference to an internal icon, so you must
314 	 *     not modify the icon. Use g_object_unref() to release your reference
315 	 *     to the icon.
316 	 *
317 	 * Since: 2.4
318 	 *
319 	 * Throws: GException on failure.
320 	 */
321 	public Pixbuf loadIcon()
322 	{
323 		GError* err = null;
324 
325 		auto p = gtk_icon_info_load_icon(gtkIconInfo, &err);
326 
327 		if (err !is null)
328 		{
329 			throw new GException( new ErrorG(err) );
330 		}
331 
332 		if(p is null)
333 		{
334 			return null;
335 		}
336 
337 		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p, true);
338 	}
339 
340 	/**
341 	 * Asynchronously load, render and scale an icon previously looked up
342 	 * from the icon theme using gtk_icon_theme_lookup_icon().
343 	 *
344 	 * For more details, see gtk_icon_info_load_icon() which is the synchronous
345 	 * version of this call.
346 	 *
347 	 * Params:
348 	 *     cancellable = optional #GCancellable object, %NULL to ignore
349 	 *     callback = a #GAsyncReadyCallback to call when the
350 	 *         request is satisfied
351 	 *     userData = the data to pass to callback function
352 	 *
353 	 * Since: 3.8
354 	 */
355 	public void loadIconAsync(Cancellable cancellable, GAsyncReadyCallback callback, void* userData)
356 	{
357 		gtk_icon_info_load_icon_async(gtkIconInfo, (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData);
358 	}
359 
360 	/**
361 	 * Finishes an async icon load, see gtk_icon_info_load_icon_async().
362 	 *
363 	 * Params:
364 	 *     res = a #GAsyncResult
365 	 *
366 	 * Returns: the rendered icon; this may be a newly
367 	 *     created icon or a new reference to an internal icon, so you must
368 	 *     not modify the icon. Use g_object_unref() to release your reference
369 	 *     to the icon.
370 	 *
371 	 * Since: 3.8
372 	 *
373 	 * Throws: GException on failure.
374 	 */
375 	public Pixbuf loadIconFinish(AsyncResultIF res)
376 	{
377 		GError* err = null;
378 
379 		auto p = gtk_icon_info_load_icon_finish(gtkIconInfo, (res is null) ? null : res.getAsyncResultStruct(), &err);
380 
381 		if (err !is null)
382 		{
383 			throw new GException( new ErrorG(err) );
384 		}
385 
386 		if(p is null)
387 		{
388 			return null;
389 		}
390 
391 		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p, true);
392 	}
393 
394 	/**
395 	 * Renders an icon previously looked up in an icon theme using
396 	 * gtk_icon_theme_lookup_icon(); the size will be based on the size
397 	 * passed to gtk_icon_theme_lookup_icon(). Note that the resulting
398 	 * surface may not be exactly this size; an icon theme may have icons
399 	 * that differ slightly from their nominal sizes, and in addition GTK+
400 	 * will avoid scaling icons that it considers sufficiently close to the
401 	 * requested size or for which the source image would have to be scaled
402 	 * up too far. (This maintains sharpness.). This behaviour can be changed
403 	 * by passing the %GTK_ICON_LOOKUP_FORCE_SIZE flag when obtaining
404 	 * the #GtkIconInfo. If this flag has been specified, the pixbuf
405 	 * returned by this function will be scaled to the exact size.
406 	 *
407 	 * Params:
408 	 *     forWindow = #GdkWindow to optimize drawing for, or %NULL
409 	 *
410 	 * Returns: the rendered icon; this may be a newly
411 	 *     created icon or a new reference to an internal icon, so you must
412 	 *     not modify the icon. Use cairo_surface_destroy() to release your
413 	 *     reference to the icon.
414 	 *
415 	 * Since: 3.10
416 	 *
417 	 * Throws: GException on failure.
418 	 */
419 	public Surface loadSurface(Window forWindow)
420 	{
421 		GError* err = null;
422 
423 		auto p = gtk_icon_info_load_surface(gtkIconInfo, (forWindow is null) ? null : forWindow.getWindowStruct(), &err);
424 
425 		if (err !is null)
426 		{
427 			throw new GException( new ErrorG(err) );
428 		}
429 
430 		if(p is null)
431 		{
432 			return null;
433 		}
434 
435 		return new Surface(cast(cairo_surface_t*) p);
436 	}
437 
438 	/**
439 	 * Loads an icon, modifying it to match the system colours for the foreground,
440 	 * success, warning and error colors provided. If the icon is not a symbolic
441 	 * one, the function will return the result from gtk_icon_info_load_icon().
442 	 *
443 	 * This allows loading symbolic icons that will match the system theme.
444 	 *
445 	 * Unless you are implementing a widget, you will want to use
446 	 * g_themed_icon_new_with_default_fallbacks() to load the icon.
447 	 *
448 	 * As implementation details, the icon loaded needs to be of SVG type,
449 	 * contain the “symbolic” term as the last component of the icon name,
450 	 * and use the “fg”, “success”, “warning” and “error” CSS styles in the
451 	 * SVG file itself.
452 	 *
453 	 * See the [Symbolic Icons Specification](http://www.freedesktop.org/wiki/SymbolicIcons)
454 	 * for more information about symbolic icons.
455 	 *
456 	 * Params:
457 	 *     fg = a #GdkRGBA representing the foreground color of the icon
458 	 *     successColor = a #GdkRGBA representing the warning color
459 	 *         of the icon or %NULL to use the default color
460 	 *     warningColor = a #GdkRGBA representing the warning color
461 	 *         of the icon or %NULL to use the default color
462 	 *     errorColor = a #GdkRGBA representing the error color
463 	 *         of the icon or %NULL to use the default color (allow-none)
464 	 *     wasSymbolic = a #gboolean, returns whether the
465 	 *         loaded icon was a symbolic one and whether the @fg color was
466 	 *         applied to it.
467 	 *
468 	 * Returns: a #GdkPixbuf representing the loaded icon
469 	 *
470 	 * Since: 3.0
471 	 *
472 	 * Throws: GException on failure.
473 	 */
474 	public Pixbuf loadSymbolic(RGBA fg, RGBA successColor, RGBA warningColor, RGBA errorColor, out bool wasSymbolic)
475 	{
476 		int outwasSymbolic;
477 		GError* err = null;
478 
479 		auto p = gtk_icon_info_load_symbolic(gtkIconInfo, (fg is null) ? null : fg.getRGBAStruct(), (successColor is null) ? null : successColor.getRGBAStruct(), (warningColor is null) ? null : warningColor.getRGBAStruct(), (errorColor is null) ? null : errorColor.getRGBAStruct(), &outwasSymbolic, &err);
480 
481 		if (err !is null)
482 		{
483 			throw new GException( new ErrorG(err) );
484 		}
485 
486 		wasSymbolic = (outwasSymbolic == 1);
487 
488 		if(p is null)
489 		{
490 			return null;
491 		}
492 
493 		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p, true);
494 	}
495 
496 	/**
497 	 * Asynchronously load, render and scale a symbolic icon previously looked up
498 	 * from the icon theme using gtk_icon_theme_lookup_icon().
499 	 *
500 	 * For more details, see gtk_icon_info_load_symbolic() which is the synchronous
501 	 * version of this call.
502 	 *
503 	 * Params:
504 	 *     fg = a #GdkRGBA representing the foreground color of the icon
505 	 *     successColor = a #GdkRGBA representing the warning color
506 	 *         of the icon or %NULL to use the default color
507 	 *     warningColor = a #GdkRGBA representing the warning color
508 	 *         of the icon or %NULL to use the default color
509 	 *     errorColor = a #GdkRGBA representing the error color
510 	 *         of the icon or %NULL to use the default color (allow-none)
511 	 *     cancellable = optional #GCancellable object,
512 	 *         %NULL to ignore
513 	 *     callback = a #GAsyncReadyCallback to call when the
514 	 *         request is satisfied
515 	 *     userData = the data to pass to callback function
516 	 *
517 	 * Since: 3.8
518 	 */
519 	public void loadSymbolicAsync(RGBA fg, RGBA successColor, RGBA warningColor, RGBA errorColor, Cancellable cancellable, GAsyncReadyCallback callback, void* userData)
520 	{
521 		gtk_icon_info_load_symbolic_async(gtkIconInfo, (fg is null) ? null : fg.getRGBAStruct(), (successColor is null) ? null : successColor.getRGBAStruct(), (warningColor is null) ? null : warningColor.getRGBAStruct(), (errorColor is null) ? null : errorColor.getRGBAStruct(), (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData);
522 	}
523 
524 	/**
525 	 * Finishes an async icon load, see gtk_icon_info_load_symbolic_async().
526 	 *
527 	 * Params:
528 	 *     res = a #GAsyncResult
529 	 *     wasSymbolic = a #gboolean, returns whether the
530 	 *         loaded icon was a symbolic one and whether the @fg color was
531 	 *         applied to it.
532 	 *
533 	 * Returns: the rendered icon; this may be a newly
534 	 *     created icon or a new reference to an internal icon, so you must
535 	 *     not modify the icon. Use g_object_unref() to release your reference
536 	 *     to the icon.
537 	 *
538 	 * Since: 3.8
539 	 *
540 	 * Throws: GException on failure.
541 	 */
542 	public Pixbuf loadSymbolicFinish(AsyncResultIF res, out bool wasSymbolic)
543 	{
544 		int outwasSymbolic;
545 		GError* err = null;
546 
547 		auto p = gtk_icon_info_load_symbolic_finish(gtkIconInfo, (res is null) ? null : res.getAsyncResultStruct(), &outwasSymbolic, &err);
548 
549 		if (err !is null)
550 		{
551 			throw new GException( new ErrorG(err) );
552 		}
553 
554 		wasSymbolic = (outwasSymbolic == 1);
555 
556 		if(p is null)
557 		{
558 			return null;
559 		}
560 
561 		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p, true);
562 	}
563 
564 	/**
565 	 * Loads an icon, modifying it to match the system colors for the foreground,
566 	 * success, warning and error colors provided. If the icon is not a symbolic
567 	 * one, the function will return the result from gtk_icon_info_load_icon().
568 	 * This function uses the regular foreground color and the symbolic colors
569 	 * with the names “success_color”, “warning_color” and “error_color” from
570 	 * the context.
571 	 *
572 	 * This allows loading symbolic icons that will match the system theme.
573 	 *
574 	 * See gtk_icon_info_load_symbolic() for more details.
575 	 *
576 	 * Params:
577 	 *     context = a #GtkStyleContext
578 	 *     wasSymbolic = a #gboolean, returns whether the
579 	 *         loaded icon was a symbolic one and whether the @fg color was
580 	 *         applied to it.
581 	 *
582 	 * Returns: a #GdkPixbuf representing the loaded icon
583 	 *
584 	 * Since: 3.0
585 	 *
586 	 * Throws: GException on failure.
587 	 */
588 	public Pixbuf loadSymbolicForContext(StyleContext context, out bool wasSymbolic)
589 	{
590 		int outwasSymbolic;
591 		GError* err = null;
592 
593 		auto p = gtk_icon_info_load_symbolic_for_context(gtkIconInfo, (context is null) ? null : context.getStyleContextStruct(), &outwasSymbolic, &err);
594 
595 		if (err !is null)
596 		{
597 			throw new GException( new ErrorG(err) );
598 		}
599 
600 		wasSymbolic = (outwasSymbolic == 1);
601 
602 		if(p is null)
603 		{
604 			return null;
605 		}
606 
607 		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p, true);
608 	}
609 
610 	/**
611 	 * Asynchronously load, render and scale a symbolic icon previously
612 	 * looked up from the icon theme using gtk_icon_theme_lookup_icon().
613 	 *
614 	 * For more details, see gtk_icon_info_load_symbolic_for_context()
615 	 * which is the synchronous version of this call.
616 	 *
617 	 * Params:
618 	 *     context = a #GtkStyleContext
619 	 *     cancellable = optional #GCancellable object,
620 	 *         %NULL to ignore
621 	 *     callback = a #GAsyncReadyCallback to call when the
622 	 *         request is satisfied
623 	 *     userData = the data to pass to callback function
624 	 *
625 	 * Since: 3.8
626 	 */
627 	public void loadSymbolicForContextAsync(StyleContext context, Cancellable cancellable, GAsyncReadyCallback callback, void* userData)
628 	{
629 		gtk_icon_info_load_symbolic_for_context_async(gtkIconInfo, (context is null) ? null : context.getStyleContextStruct(), (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData);
630 	}
631 
632 	/**
633 	 * Finishes an async icon load, see gtk_icon_info_load_symbolic_for_context_async().
634 	 *
635 	 * Params:
636 	 *     res = a #GAsyncResult
637 	 *     wasSymbolic = a #gboolean, returns whether the
638 	 *         loaded icon was a symbolic one and whether the @fg color was
639 	 *         applied to it.
640 	 *
641 	 * Returns: the rendered icon; this may be a newly
642 	 *     created icon or a new reference to an internal icon, so you must
643 	 *     not modify the icon. Use g_object_unref() to release your reference
644 	 *     to the icon.
645 	 *
646 	 * Since: 3.8
647 	 *
648 	 * Throws: GException on failure.
649 	 */
650 	public Pixbuf loadSymbolicForContextFinish(AsyncResultIF res, out bool wasSymbolic)
651 	{
652 		int outwasSymbolic;
653 		GError* err = null;
654 
655 		auto p = gtk_icon_info_load_symbolic_for_context_finish(gtkIconInfo, (res is null) ? null : res.getAsyncResultStruct(), &outwasSymbolic, &err);
656 
657 		if (err !is null)
658 		{
659 			throw new GException( new ErrorG(err) );
660 		}
661 
662 		wasSymbolic = (outwasSymbolic == 1);
663 
664 		if(p is null)
665 		{
666 			return null;
667 		}
668 
669 		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p, true);
670 	}
671 
672 	/**
673 	 * Loads an icon, modifying it to match the system colours for the foreground,
674 	 * success, warning and error colors provided. If the icon is not a symbolic
675 	 * one, the function will return the result from gtk_icon_info_load_icon().
676 	 *
677 	 * This allows loading symbolic icons that will match the system theme.
678 	 *
679 	 * See gtk_icon_info_load_symbolic() for more details.
680 	 *
681 	 * Deprecated: Use gtk_icon_info_load_symbolic_for_context() instead
682 	 *
683 	 * Params:
684 	 *     style = a #GtkStyle to take the colors from
685 	 *     state = the widget state to use for colors
686 	 *     wasSymbolic = a #gboolean, returns whether the
687 	 *         loaded icon was a symbolic one and whether the @fg color was
688 	 *         applied to it.
689 	 *
690 	 * Returns: a #GdkPixbuf representing the loaded icon
691 	 *
692 	 * Since: 3.0
693 	 *
694 	 * Throws: GException on failure.
695 	 */
696 	public Pixbuf loadSymbolicForStyle(Style style, GtkStateType state, out bool wasSymbolic)
697 	{
698 		int outwasSymbolic;
699 		GError* err = null;
700 
701 		auto p = gtk_icon_info_load_symbolic_for_style(gtkIconInfo, (style is null) ? null : style.getStyleStruct(), state, &outwasSymbolic, &err);
702 
703 		if (err !is null)
704 		{
705 			throw new GException( new ErrorG(err) );
706 		}
707 
708 		wasSymbolic = (outwasSymbolic == 1);
709 
710 		if(p is null)
711 		{
712 			return null;
713 		}
714 
715 		return ObjectG.getDObject!(Pixbuf)(cast(GdkPixbuf*) p, true);
716 	}
717 
718 	/**
719 	 * Sets whether the coordinates returned by gtk_icon_info_get_embedded_rect()
720 	 * and gtk_icon_info_get_attach_points() should be returned in their
721 	 * original form as specified in the icon theme, instead of scaled
722 	 * appropriately for the pixbuf returned by gtk_icon_info_load_icon().
723 	 *
724 	 * Raw coordinates are somewhat strange; they are specified to be with
725 	 * respect to the unscaled pixmap for PNG and XPM icons, but for SVG
726 	 * icons, they are in a 1000x1000 coordinate space that is scaled
727 	 * to the final size of the icon.  You can determine if the icon is an SVG
728 	 * icon by using gtk_icon_info_get_filename(), and seeing if it is non-%NULL
729 	 * and ends in “.svg”.
730 	 *
731 	 * This function is provided primarily to allow compatibility wrappers
732 	 * for older API's, and is not expected to be useful for applications.
733 	 *
734 	 * Deprecated: Embedded rectangles and attachment points are deprecated
735 	 *
736 	 * Params:
737 	 *     rawCoordinates = whether the coordinates of embedded rectangles
738 	 *         and attached points should be returned in their original
739 	 *         (unscaled) form.
740 	 *
741 	 * Since: 2.4
742 	 */
743 	public void setRawCoordinates(bool rawCoordinates)
744 	{
745 		gtk_icon_info_set_raw_coordinates(gtkIconInfo, rawCoordinates);
746 	}
747 }