create toolbar from ui_manager
[geeqie.git] / src / pixbuf_util.h
1 /*
2  * Geeqie
3  * (C) 2004 John Ellis
4  * Copyright (C) 2008 - 2009 The Geeqie Team
5  *
6  * Author: John Ellis
7  *
8  * This software is released under the GNU General Public License (GNU GPL).
9  * Please read the included file COPYING for more information.
10  * This software comes with no warranty of any kind, use at your own risk!
11  */
12
13
14 #ifndef PIXBUF_UTIL_H
15 #define PIXBUF_UTIL_H
16
17
18 gboolean pixbuf_to_file_as_png (GdkPixbuf *pixbuf, const gchar *filename);
19 gboolean pixbuf_to_file_as_jpg(GdkPixbuf *pixbuf, const gchar *filename, gint quality);
20
21 void pixbuf_inline_register_stock_icons(void);
22
23 GdkPixbuf *pixbuf_inline(const gchar *key);
24 GdkPixbuf *pixbuf_fallback(FileData *fd, gint requested_width, gint requested_height);
25
26 gint pixbuf_scale_aspect(gint req_w, gint req_h, gint old_w, gint old_h, gint *new_w, gint *new_h);
27
28 #define PIXBUF_INLINE_FOLDER_CLOSED     "folder_closed"
29 #define PIXBUF_INLINE_FOLDER_LOCKED     "folder_locked"
30 #define PIXBUF_INLINE_FOLDER_OPEN       "folder_open"
31 #define PIXBUF_INLINE_FOLDER_UP         "folder_up"
32 #define PIXBUF_INLINE_SCROLLER          "scroller"
33 #define PIXBUF_INLINE_BROKEN            "broken"
34 #define PIXBUF_INLINE_ICON              "icon"
35 #define PIXBUF_INLINE_LOGO              "logo"
36
37 #define PIXBUF_INLINE_ICON_FLOAT        "icon_float"
38 #define PIXBUF_INLINE_ICON_THUMB        "icon_thumb"
39
40 #define PIXBUF_INLINE_ICON_BOOK         "icon_book"
41 #define PIXBUF_INLINE_ICON_CONFIG       "icon_config"
42 #define PIXBUF_INLINE_ICON_TOOLS        "icon_tools"
43 #define PIXBUF_INLINE_ICON_VIEW         "icon_view"
44
45
46 GdkPixbuf *pixbuf_copy_rotate_90(GdkPixbuf *src, gint counter_clockwise);
47 GdkPixbuf *pixbuf_copy_mirror(GdkPixbuf *src, gint mirror, gint flip);
48 GdkPixbuf* pixbuf_apply_orientation(GdkPixbuf *pixbuf, gint orientation);
49
50 void pixbuf_draw_rect_fill(GdkPixbuf *pb,
51                            gint x, gint y, gint w, gint h,
52                            gint r, gint g, gint b, gint a);
53
54 void pixbuf_draw_rect(GdkPixbuf *pb,
55                       gint x, gint y, gint w, gint h,
56                       gint r, gint g, gint b, gint a,
57                       gint left, gint right, gint top, gint bottom);
58
59 void pixbuf_set_rect_fill(GdkPixbuf *pb,
60                           gint x, gint y, gint w, gint h,
61                           gint r, gint g, gint b, gint a);
62
63 void pixbuf_set_rect(GdkPixbuf *pb,
64                      gint x, gint y, gint w, gint h,
65                      gint r, gint g, gint b, gint a,
66                      gint left, gint right, gint top, gint bottom);
67
68 void pixbuf_pixel_set(GdkPixbuf *pb, gint x, gint y, gint r, gint g, gint b, gint a);
69
70
71 void pixbuf_draw_layout(GdkPixbuf *pixbuf, PangoLayout *layout, GtkWidget *widget,
72                         gint x, gint y,
73                         guint8 r, guint8 g, guint8 b, guint8 a);
74
75
76 void pixbuf_draw_triangle(GdkPixbuf *pb,
77                           gint clip_x, gint clip_y, gint clip_w, gint clip_h,
78                           gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
79                           guint8 r, guint8 g, guint8 b, guint8 a);
80
81 void pixbuf_draw_line(GdkPixbuf *pb,
82                       gint clip_x, gint clip_y, gint clip_w, gint clip_h,
83                       gint x1, gint y1, gint x2, gint y2,
84                       guint8 r, guint8 g, guint8 b, guint8 a);
85
86 void pixbuf_draw_shadow(GdkPixbuf *pb,
87                         gint clip_x, gint clip_y, gint clip_w, gint clip_h,
88                         gint x, gint y, gint w, gint h, gint border,
89                         guint8 r, guint8 g, guint8 b, guint8 a);
90
91 void pixbuf_desaturate_rect(GdkPixbuf *pb,
92                             gint x, gint y, gint w, gint h);
93
94
95 /* clipping utils */
96
97 gint util_clip_region(gint x, gint y, gint w, gint h,
98                       gint clip_x, gint clip_y, gint clip_w, gint clip_h,
99                       gint *rx, gint *ry, gint *rw, gint *rh);
100 void util_clip_triangle(gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
101                         gint *rx, gint *ry, gint *rw, gint *rh);
102
103
104 #endif
105 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */