2008-04-30 A. Walton <awalton@gnome.org>
[nautilus.git] / libnautilus-private / nautilus-icon-info.h
blobc5dadd3100ff663c5e8413cca3f797f2b8489672
1 #ifndef NAUTILUS_ICON_INFO_H
2 #define NAUTILUS_ICON_INFO_H
4 #include <glib-object.h>
5 #include <gdk-pixbuf/gdk-pixbuf.h>
6 #include <gdk/gdktypes.h>
7 #include <gio/gio.h>
8 #include <gtk/gtk.h>
10 G_BEGIN_DECLS
12 /* Names for Nautilus's different zoom levels, from tiniest items to largest items */
13 typedef enum {
14 NAUTILUS_ZOOM_LEVEL_SMALLEST,
15 NAUTILUS_ZOOM_LEVEL_SMALLER,
16 NAUTILUS_ZOOM_LEVEL_SMALL,
17 NAUTILUS_ZOOM_LEVEL_STANDARD,
18 NAUTILUS_ZOOM_LEVEL_LARGE,
19 NAUTILUS_ZOOM_LEVEL_LARGER,
20 NAUTILUS_ZOOM_LEVEL_LARGEST
21 } NautilusZoomLevel;
23 /* Nominal icon sizes for each Nautilus zoom level.
24 * This scheme assumes that icons are designed to
25 * fit in a square space, though each image needn't
26 * be square. Since individual icons can be stretched,
27 * each icon is not constrained to this nominal size.
29 #define NAUTILUS_ICON_SIZE_SMALLEST 16
30 #define NAUTILUS_ICON_SIZE_SMALLER 24
31 #define NAUTILUS_ICON_SIZE_SMALL 32
32 #define NAUTILUS_ICON_SIZE_STANDARD 48
33 #define NAUTILUS_ICON_SIZE_LARGE 72
34 #define NAUTILUS_ICON_SIZE_LARGER 96
35 #define NAUTILUS_ICON_SIZE_LARGEST 192
37 /* Maximum size of an icon that the icon factory will ever produce */
38 #define NAUTILUS_ICON_MAXIMUM_SIZE 320
40 typedef struct _NautilusIconInfo NautilusIconInfo;
41 typedef struct _NautilusIconInfoClass NautilusIconInfoClass;
44 #define NAUTILUS_TYPE_ICON_INFO (nautilus_icon_info_get_type ())
45 #define NAUTILUS_ICON_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_ICON_INFO, NautilusIconInfo))
46 #define NAUTILUS_ICON_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_ICON_INFO, NautilusIconInfoClass))
47 #define NAUTILUS_IS_ICON_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_ICON_INFO))
48 #define NAUTILUS_IS_ICON_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_ICON_INFO))
49 #define NAUTILUS_ICON_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NAUTILUS_TYPE_ICON_INFO, NautilusIconInfoClass))
52 GType nautilus_icon_info_get_type (void) G_GNUC_CONST;
54 NautilusIconInfo * nautilus_icon_info_new_for_pixbuf (GdkPixbuf *pixbuf);
55 NautilusIconInfo * nautilus_icon_info_lookup (GIcon *icon,
56 int size);
57 NautilusIconInfo * nautilus_icon_info_lookup_from_name (const char *name,
58 int size);
59 GdkPixbuf * nautilus_icon_info_get_pixbuf (NautilusIconInfo *icon);
60 GdkPixbuf * nautilus_icon_info_get_pixbuf_nodefault (NautilusIconInfo *icon);
61 GdkPixbuf * nautilus_icon_info_get_pixbuf_nodefault_at_size (NautilusIconInfo *icon,
62 gsize forced_size);
63 GdkPixbuf * nautilus_icon_info_get_pixbuf_at_size (NautilusIconInfo *icon,
64 gsize forced_size);
65 gboolean nautilus_icon_info_get_embedded_rect (NautilusIconInfo *icon,
66 GdkRectangle *rectangle);
67 gboolean nautilus_icon_info_get_attach_points (NautilusIconInfo *icon,
68 GdkPoint **points,
69 gint *n_points);
70 G_CONST_RETURN char *nautilus_icon_info_get_display_name (NautilusIconInfo *icon);
71 G_CONST_RETURN char *nautilus_icon_info_get_used_name (NautilusIconInfo *icon);
73 void nautilus_icon_info_clear_caches (void);
75 /* Relationship between zoom levels and icons sizes. */
76 guint nautilus_get_icon_size_for_zoom_level (NautilusZoomLevel zoom_level);
77 float nautilus_get_relative_icon_size_for_zoom_level (NautilusZoomLevel zoom_level);
79 guint nautilus_icon_get_larger_icon_size (guint size);
80 guint nautilus_icon_get_smaller_icon_size (guint size);
82 gint nautilus_get_icon_size_for_stock_size (GtkIconSize size);
83 char *nautilus_icon_get_emblem_icon_by_name (const char *emblem_name);
84 guint nautilus_icon_get_emblem_size_for_icon_size (guint size);
87 G_END_DECLS
89 #endif /* NAUTILUS_ICON_INFO_H */