1 /* GTK - The GIMP Toolkit 2 * Copyright (C) 2011 Red Hat, Inc. 3 * 4 * Authors: Cosimo Cecchi <cosimoc@gnome.org> 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef __GTK_ICON_HELPER_H__ 21 #define __GTK_ICON_HELPER_H__ 22 23 #include "gtk/gtkimage.h" 24 #include "gtk/gtktypes.h" 25 26 #include "gtkcssgadgetprivate.h" 27 #include "gtkimagedefinitionprivate.h" 28 29 G_BEGIN_DECLS 30 31 #define GTK_TYPE_ICON_HELPER gtk_icon_helper_get_type() 32 33 #define GTK_ICON_HELPER(obj) \ 34 (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ 35 GTK_TYPE_ICON_HELPER, GtkIconHelper)) 36 37 #define GTK_ICON_HELPER_CLASS(klass) \ 38 (G_TYPE_CHECK_CLASS_CAST ((klass), \ 39 GTK_TYPE_ICON_HELPER, GtkIconHelperClass)) 40 41 #define GTK_IS_ICON_HELPER(obj) \ 42 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ 43 GTK_TYPE_ICON_HELPER)) 44 45 #define GTK_IS_ICON_HELPER_CLASS(klass) \ 46 (G_TYPE_CHECK_CLASS_TYPE ((klass), \ 47 GTK_TYPE_ICON_HELPER)) 48 49 #define GTK_ICON_HELPER_GET_CLASS(obj) \ 50 (G_TYPE_INSTANCE_GET_CLASS ((obj), \ 51 GTK_TYPE_ICON_HELPER, GtkIconHelperClass)) 52 53 typedef struct _GtkIconHelper GtkIconHelper; 54 typedef struct _GtkIconHelperClass GtkIconHelperClass; 55 typedef struct _GtkIconHelperPrivate GtkIconHelperPrivate; 56 57 struct _GtkIconHelper 58 { 59 GtkCssGadget parent; 60 61 GtkIconHelperPrivate *priv; 62 }; 63 64 struct _GtkIconHelperClass 65 { 66 GtkCssGadgetClass parent_class; 67 }; 68 69 GType gtk_icon_helper_get_type (void) G_GNUC_CONST; 70 71 GtkIconHelper *gtk_icon_helper_new (GtkCssNode *node, 72 GtkWidget *owner); 73 GtkCssGadget *gtk_icon_helper_new_named (const char *name, 74 GtkWidget *owner); 75 76 void _gtk_icon_helper_clear (GtkIconHelper *self); 77 78 gboolean _gtk_icon_helper_get_is_empty (GtkIconHelper *self); 79 80 void _gtk_icon_helper_set_definition (GtkIconHelper *self, 81 GtkImageDefinition *def); 82 void _gtk_icon_helper_set_gicon (GtkIconHelper *self, 83 GIcon *gicon, 84 GtkIconSize icon_size); 85 void _gtk_icon_helper_set_pixbuf (GtkIconHelper *self, 86 GdkPixbuf *pixbuf); 87 void _gtk_icon_helper_set_pixbuf_scale (GtkIconHelper *self, 88 int scale); 89 void _gtk_icon_helper_set_animation (GtkIconHelper *self, 90 GdkPixbufAnimation *animation); 91 void _gtk_icon_helper_set_icon_set (GtkIconHelper *self, 92 GtkIconSet *icon_set, 93 GtkIconSize icon_size); 94 95 void _gtk_icon_helper_set_icon_name (GtkIconHelper *self, 96 const gchar *icon_name, 97 GtkIconSize icon_size); 98 void _gtk_icon_helper_set_stock_id (GtkIconHelper *self, 99 const gchar *stock_id, 100 GtkIconSize icon_size); 101 void _gtk_icon_helper_set_surface (GtkIconHelper *self, 102 cairo_surface_t *surface); 103 104 gboolean _gtk_icon_helper_set_icon_size (GtkIconHelper *self, 105 GtkIconSize icon_size); 106 gboolean _gtk_icon_helper_set_pixel_size (GtkIconHelper *self, 107 gint pixel_size); 108 gboolean _gtk_icon_helper_set_use_fallback (GtkIconHelper *self, 109 gboolean use_fallback); 110 111 GtkImageType _gtk_icon_helper_get_storage_type (GtkIconHelper *self); 112 GtkIconSize _gtk_icon_helper_get_icon_size (GtkIconHelper *self); 113 gint _gtk_icon_helper_get_pixel_size (GtkIconHelper *self); 114 gboolean _gtk_icon_helper_get_use_fallback (GtkIconHelper *self); 115 116 GdkPixbuf *_gtk_icon_helper_peek_pixbuf (GtkIconHelper *self); 117 GIcon *_gtk_icon_helper_peek_gicon (GtkIconHelper *self); 118 GtkIconSet *_gtk_icon_helper_peek_icon_set (GtkIconHelper *self); 119 GdkPixbufAnimation *_gtk_icon_helper_peek_animation (GtkIconHelper *self); 120 cairo_surface_t *_gtk_icon_helper_peek_surface (GtkIconHelper *self); 121 122 GtkImageDefinition *gtk_icon_helper_get_definition (GtkIconHelper *self); 123 const gchar *_gtk_icon_helper_get_stock_id (GtkIconHelper *self); 124 const gchar *_gtk_icon_helper_get_icon_name (GtkIconHelper *self); 125 126 cairo_surface_t *gtk_icon_helper_load_surface (GtkIconHelper *self, 127 int scale); 128 void _gtk_icon_helper_get_size (GtkIconHelper *self, 129 gint *width_out, 130 gint *height_out); 131 132 void _gtk_icon_helper_draw (GtkIconHelper *self, 133 cairo_t *cr, 134 gdouble x, 135 gdouble y); 136 137 gboolean _gtk_icon_helper_get_force_scale_pixbuf (GtkIconHelper *self); 138 void _gtk_icon_helper_set_force_scale_pixbuf (GtkIconHelper *self, 139 gboolean force_scale); 140 141 void gtk_icon_helper_invalidate_for_change (GtkIconHelper *self, 142 GtkCssStyleChange *change); 143 144 G_END_DECLS 145 146 #endif /* __GTK_ICON_HELPER_H__ */ 147