Cleanup main.h header
[geeqie.git] / src / pixbuf-util.h
1 /*
2  * Copyright (C) 2004 John Ellis
3  * Copyright (C) 2008 - 2016 The Geeqie Team
4  *
5  * Author: John Ellis
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21
22 #ifndef PIXBUF_UTIL_H
23 #define PIXBUF_UTIL_H
24
25 #include <gtk/gtk.h>
26
27 struct FileData;
28
29 gboolean pixbuf_to_file_as_png (GdkPixbuf *pixbuf, const gchar *filename);
30
31 void pixbuf_inline_register_stock_icons();
32 gboolean register_theme_icon_as_stock(const gchar *key, const gchar *icon);
33
34 GdkPixbuf *pixbuf_inline(const gchar *key);
35 GdkPixbuf *pixbuf_fallback(FileData *fd, gint requested_width, gint requested_height);
36
37 gboolean pixbuf_scale_aspect(gint req_w, gint req_h, gint old_w, gint old_h, gint *new_w, gint *new_h);
38
39 #define PIXBUF_INLINE_ARCHIVE               "gq-icon-archive-file"
40 #define PIXBUF_INLINE_BROKEN                "gq-icon-broken"
41 #define PIXBUF_INLINE_COLLECTION            "gq-icon-collection"
42 #define PIXBUF_INLINE_ICON_180              "gq-icon-rotate-180"
43 #define PIXBUF_INLINE_ICON_BOOK             "gq-icon-book"
44 #define PIXBUF_INLINE_ICON_CONFIG           "gq-icon-config"
45 #define PIXBUF_INLINE_ICON_DRAW_RECTANGLE   "gq-icon-draw-rectangle"
46 #define PIXBUF_INLINE_ICON_EXIF             "gq-icon-exif"
47 #define PIXBUF_INLINE_ICON_EXPOSURE         "gq-icon-exposure"
48 #define PIXBUF_INLINE_ICON_FLOAT            "gq-icon-float"
49 #define PIXBUF_INLINE_ICON                  "gqview-icon"
50 #define PIXBUF_INLINE_ICON_GRAYSCALE        "gq-icon-grayscale"
51 #define PIXBUF_INLINE_ICON_HEIF             "gq-icon-heic"
52 #define PIXBUF_INLINE_ICON_HIDETOOLS        "gq-icon-hidetools"
53 #define PIXBUF_INLINE_ICON_MAINTENANCE      "gq-icon-maintenance"
54 #define PIXBUF_INLINE_ICON_MARKS            "gq-icon-marks"
55 #define PIXBUF_INLINE_ICON_MOVE             "gq-icon-move"
56 #define PIXBUF_INLINE_ICON_ORIGINAL         "gq-icon-original"
57 #define PIXBUF_INLINE_ICON_PANORAMA         "gq-icon-panorama"
58 #define PIXBUF_INLINE_ICON_PDF              "gq-icon-pdf"
59 #define PIXBUF_INLINE_ICON_PROPERTIES       "gq-icon-properties"
60 #define PIXBUF_INLINE_ICON_RENAME           "gq-icon-rename"
61 #define PIXBUF_INLINE_ICON_SELECT_ALL       "gq-icon-select-all"
62 #define PIXBUF_INLINE_ICON_SELECT_INVERT    "gq-icon-select-invert"
63 #define PIXBUF_INLINE_ICON_SELECT_NONE      "gq-icon-select-none"
64 #define PIXBUF_INLINE_ICON_SELECT_RECTANGLE "gq-icon-select-rectangle"
65 #define PIXBUF_INLINE_ICON_SORT             "gq-icon-sort"
66 #define PIXBUF_INLINE_ICON_THUMB            "gq-icon-thumb"
67 #define PIXBUF_INLINE_ICON_TOOLS            "gq-icon-tools"
68 #define PIXBUF_INLINE_ICON_VIEW             "gq-icon-view"
69 #define PIXBUF_INLINE_ICON_ZOOMFILLHOR      "gq-icon-zoomfillhor"
70 #define PIXBUF_INLINE_ICON_ZOOMFILLVERT     "gq-icon-zoomfillvert"
71 #define PIXBUF_INLINE_LOGO                  "geeqie-logo"
72 #define PIXBUF_INLINE_METADATA              "gq-icon-metadata"
73 #define PIXBUF_INLINE_SCROLLER              "gq-scroller"
74 #define PIXBUF_INLINE_SPLIT_PANE_SYNC       "gq-icon-split-pane-sync"
75 #define PIXBUF_INLINE_UNKNOWN               "gq-icon-unknown"
76 #define PIXBUF_INLINE_VIDEO                 "gq-icon-video"
77
78 GdkPixbuf *pixbuf_copy_rotate_90(GdkPixbuf *src, gboolean counter_clockwise);
79 GdkPixbuf *pixbuf_copy_mirror(GdkPixbuf *src, gboolean mirror, gboolean flip);
80 GdkPixbuf* pixbuf_apply_orientation(GdkPixbuf *pixbuf, gint orientation);
81
82 void pixbuf_draw_rect_fill(GdkPixbuf *pb,
83                            gint x, gint y, gint w, gint h,
84                            gint r, gint g, gint b, gint a);
85
86 void pixbuf_set_rect_fill(GdkPixbuf *pb,
87                           gint x, gint y, gint w, gint h,
88                           gint r, gint g, gint b, gint a);
89
90 void pixbuf_set_rect(GdkPixbuf *pb,
91                      gint x, gint y, gint w, gint h,
92                      gint r, gint g, gint b, gint a,
93                      gint left, gint right, gint top, gint bottom);
94
95 void pixbuf_pixel_set(GdkPixbuf *pb, gint x, gint y, gint r, gint g, gint b, gint a);
96
97
98 void pixbuf_draw_layout(GdkPixbuf *pixbuf, PangoLayout *layout, GtkWidget *widget,
99                         gint x, gint y,
100                         guint8 r, guint8 g, guint8 b, guint8 a);
101
102
103 void pixbuf_draw_triangle(GdkPixbuf *pb,
104                           gint clip_x, gint clip_y, gint clip_w, gint clip_h,
105                           gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
106                           guint8 r, guint8 g, guint8 b, guint8 a);
107
108 void pixbuf_draw_line(GdkPixbuf *pb,
109                       gint clip_x, gint clip_y, gint clip_w, gint clip_h,
110                       gint x1, gint y1, gint x2, gint y2,
111                       guint8 r, guint8 g, guint8 b, guint8 a);
112
113 void pixbuf_draw_shadow(GdkPixbuf *pb,
114                         gint clip_x, gint clip_y, gint clip_w, gint clip_h,
115                         gint x, gint y, gint w, gint h, gint border,
116                         guint8 r, guint8 g, guint8 b, guint8 a);
117
118 void pixbuf_desaturate_rect(GdkPixbuf *pb,
119                             gint x, gint y, gint w, gint h);
120 void pixbuf_highlight_overunderexposed(GdkPixbuf *pb,
121                             gint x, gint y, gint w, gint h);
122 void pixbuf_ignore_alpha_rect(GdkPixbuf *pb,
123                  gint x, gint y, gint w, gint h);
124
125 /* clipping utils */
126
127 gboolean util_clip_region(gint x, gint y, gint w, gint h,
128                           gint clip_x, gint clip_y, gint clip_w, gint clip_h,
129                           gint *rx, gint *ry, gint *rw, gint *rh);
130 void util_clip_triangle(gint x1, gint y1, gint x2, gint y2, gint x3, gint y3,
131                         gint *rx, gint *ry, gint *rw, gint *rh);
132
133
134 #endif
135 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */