1 #ifndef CAJA_ICON_INFO_H 2 #define CAJA_ICON_INFO_H 3 4 #include <glib-object.h> 5 #include <gdk-pixbuf/gdk-pixbuf.h> 6 #include <gdk/gdk.h> 7 #include <gio/gio.h> 8 #include <gtk/gtk.h> 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 /* Names for Caja's different zoom levels, from tiniest items to largest items */ 15 typedef enum { 16 CAJA_ZOOM_LEVEL_SMALLEST = 0, 17 CAJA_ZOOM_LEVEL_SMALLER, 18 CAJA_ZOOM_LEVEL_SMALL, 19 CAJA_ZOOM_LEVEL_STANDARD, 20 CAJA_ZOOM_LEVEL_LARGE, 21 CAJA_ZOOM_LEVEL_LARGER, 22 CAJA_ZOOM_LEVEL_LARGEST 23 } 24 CajaZoomLevel; 25 26 #define CAJA_ZOOM_LEVEL_N_ENTRIES (CAJA_ZOOM_LEVEL_LARGEST + 1) 27 28 /* Nominal icon sizes for each Caja zoom level. 29 * This scheme assumes that icons are designed to 30 * fit in a square space, though each image needn't 31 * be square. Since individual icons can be stretched, 32 * each icon is not constrained to this nominal size. 33 */ 34 #define CAJA_ICON_SIZE_SMALLEST 16 35 #define CAJA_ICON_SIZE_SMALLER 24 36 #define CAJA_ICON_SIZE_SMALL 32 37 #define CAJA_ICON_SIZE_STANDARD 48 38 #define CAJA_ICON_SIZE_LARGE 72 39 #define CAJA_ICON_SIZE_LARGER 96 40 #define CAJA_ICON_SIZE_LARGEST 192 41 42 /* Maximum size of an icon that the icon factory will ever produce */ 43 #define CAJA_ICON_MAXIMUM_SIZE 320 44 45 typedef struct _CajaIconInfo CajaIconInfo; 46 typedef struct _CajaIconInfoClass CajaIconInfoClass; 47 48 49 #define CAJA_TYPE_ICON_INFO (caja_icon_info_get_type ()) 50 #define CAJA_ICON_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAJA_TYPE_ICON_INFO, CajaIconInfo)) 51 #define CAJA_ICON_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CAJA_TYPE_ICON_INFO, CajaIconInfoClass)) 52 #define CAJA_IS_ICON_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAJA_TYPE_ICON_INFO)) 53 #define CAJA_IS_ICON_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CAJA_TYPE_ICON_INFO)) 54 #define CAJA_ICON_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CAJA_TYPE_ICON_INFO, CajaIconInfoClass)) 55 56 57 GType caja_icon_info_get_type (void) G_GNUC_CONST; 58 59 CajaIconInfo * caja_icon_info_new_for_pixbuf (GdkPixbuf *pixbuf, 60 int scale); 61 CajaIconInfo * caja_icon_info_lookup (GIcon *icon, 62 int size, 63 int scale); 64 CajaIconInfo * caja_icon_info_lookup_from_name (const char *name, 65 int size, 66 int scale); 67 CajaIconInfo * caja_icon_info_lookup_from_path (const char *path, 68 int size, 69 int scale); 70 gboolean caja_icon_info_is_fallback (CajaIconInfo *icon); 71 GdkPixbuf * caja_icon_info_get_pixbuf (CajaIconInfo *icon); 72 cairo_surface_t * caja_icon_info_get_surface (CajaIconInfo *icon); 73 GdkPixbuf * caja_icon_info_get_pixbuf_nodefault (CajaIconInfo *icon); 74 cairo_surface_t * caja_icon_info_get_surface_nodefault (CajaIconInfo *icon); 75 GdkPixbuf * caja_icon_info_get_pixbuf_nodefault_at_size (CajaIconInfo *icon, 76 gsize forced_size); 77 cairo_surface_t * caja_icon_info_get_surface_nodefault_at_size(CajaIconInfo *icon, 78 gsize forced_size); 79 GdkPixbuf * caja_icon_info_get_pixbuf_at_size (CajaIconInfo *icon, 80 gsize forced_size); 81 cairo_surface_t * caja_icon_info_get_surface_at_size(CajaIconInfo *icon, 82 gsize forced_size); 83 gboolean caja_icon_info_get_embedded_rect (CajaIconInfo *icon, 84 GdkRectangle *rectangle); 85 gboolean caja_icon_info_get_attach_points (CajaIconInfo *icon, 86 GdkPoint **points, 87 gint *n_points); 88 const char* caja_icon_info_get_display_name(CajaIconInfo* icon); 89 const char* caja_icon_info_get_used_name(CajaIconInfo* icon); 90 91 void caja_icon_info_clear_caches (void); 92 93 /* Relationship between zoom levels and icons sizes. */ 94 guint caja_get_icon_size_for_zoom_level (CajaZoomLevel zoom_level); 95 float caja_get_relative_icon_size_for_zoom_level (CajaZoomLevel zoom_level); 96 97 guint caja_icon_get_larger_icon_size (guint size); 98 guint caja_icon_get_smaller_icon_size (guint size); 99 100 gint caja_get_icon_size_for_stock_size (GtkIconSize size); 101 guint caja_icon_get_emblem_size_for_icon_size (guint size); 102 103 gboolean caja_icon_theme_can_render (GThemedIcon *icon); 104 GIcon * caja_user_special_directory_get_gicon (GUserDirectory directory); 105 106 107 108 #ifdef __cplusplus 109 } 110 #endif 111 112 #endif /* CAJA_ICON_INFO_H */ 113 114