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