# External programs
gdk_pixbuf_csource = find_program('gdk-pixbuf-csource', required : true)
+glib_compile_resources = find_program('glib-compile-resources', required : true)
glib_genmarshal = find_program('glib-genmarshal', required : true)
option = get_option('git')
#include "uri-utils.h"
#include "view-file.h"
-#include "icons/marker.xpm"
-#define MARKER_WIDTH 26
-#define MARKER_HEIGHT 32
-
/* between these, the icon width is increased by thumb_max_width / 2 */
#define THUMB_MIN_ICON_WIDTH 128
#define THUMB_MAX_ICON_WIDTH 150
GdkRectangle cell;
GdkWindow *parent;
gint x_parent, y_parent;
+ GError *error = NULL;
+ GInputStream *in_stream;
+ GdkPixbuf *pb;
+ gchar *path;
parent = gtk_widget_get_window(gtk_widget_get_toplevel(ct->listview));
gdk_window_get_position(parent, &x_parent, &y_parent);
{
GdkWindowAttr attributes;
gint attributes_mask;
- GdkPixbuf *pb = gdk_pixbuf_new_from_xpm_data((const gchar **)marker_xpm);
+
+ path = g_build_filename(GQ_RESOURCE_PATH_ICONS, "gq-marker.xpm", NULL);
+ in_stream = g_resources_open_stream(path, G_RESOURCE_LOOKUP_FLAGS_NONE, &error);
+ g_free(path);
+
+ pb = gdk_pixbuf_new_from_stream(in_stream, NULL, &error);
+ g_object_unref(in_stream);
+
+ if (error)
+ {
+ log_printf("warning: collection marker error: %s", error->message);
+ g_error_free(error);
+ return;
+ }
+
gint w = gdk_pixbuf_get_width(pb);
gint h = gdk_pixbuf_get_height(pb);
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ /*
+ * Copyright (C) 2008 - 2023 The Geeqie Team
+ *
+ * Author: Colin Clark
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+-->
+
+<gresources>
+ <gresource prefix="/org/geeqie/icons">
+ <file>geeqie-logo.png</file>
+ <file>gq-archive-file.png</file>
+ <file>gq-collection.png</file>
+ <file>gq-folder-closed.png</file>
+ <file>gq-folder-locked.png</file>
+ <file>gq-folder-open.png</file>
+ <file>gq-folder-up.png</file>
+ <file>gq-icon-book.png</file>
+ <file>gq-icon-config.png</file>
+ <file>gq-icon-draw-rectangle.png</file>
+ <file>gq-icon-exif.png</file>
+ <file>gq-icon-exposure.png</file>
+ <file>gq-icon-file-filter.png</file>
+ <file>gq-icon-flip.png</file>
+ <file>gq-icon-float.png</file>
+ <file>gq-icon-grayscale.png</file>
+ <file>gq-icon-heic.png</file>
+ <file>gq-icon-hidetools.png</file>
+ <file>gq-icon-info.png</file>
+ <file>gq-icon-maintenance.png</file>
+ <file>gq-icon-marks.png</file>
+ <file>gq-icon-mirror.png</file>
+ <file>gq-icon-move.png</file>
+ <file>gq-icon-original.png</file>
+ <file>gq-icon-panorama.png</file>
+ <file>gq-icon-pdf.png</file>
+ <file>gq-icon-rename.png</file>
+ <file>gq-icon-rotate-180.png</file>
+ <file>gq-icon-rotate-clockwise.png</file>
+ <file>gq-icon-rotate-counter-clockwise.png</file>
+ <file>gq-icon-select-all.png</file>
+ <file>gq-icon-select-invert.png</file>
+ <file>gq-icon-select-none.png</file>
+ <file>gq-icon-select-rectangle.png</file>
+ <file>gq-icon-sort.png</file>
+ <file>gq-icon-split-pane-sync.png</file>
+ <file>gq-icon-thumb.png</file>
+ <file>gq-icon-tools.png</file>
+ <file>gq-icon-trash.png</file>
+ <file>gq-icon-view.png</file>
+ <file>gq-icon-zoomfillhor.png</file>
+ <file>gq-icon-zoomfillvert.png</file>
+ <file>gq-scroller.png</file>
+ <file>gq-sheet-broken.png</file>
+ <file>gq-sheet-metadata.png</file>
+ <file>gq-sheet-unknown.png</file>
+ <file>gq-sheet-video.png</file>
+ <file>gqview-icon.png</file>
+ <file>gq-marker.xpm</file>
+ </gresource>
+</gresources>
# This file is a part of Geeqie project (https://www.geeqie.org/).
-# Copyright (C) 2008 - 2022 The Geeqie Team
+# Copyright (C) 2008 - 2023 The Geeqie Team
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-icons_inline_pairs = [
-'folder_closed', files('folder_closed.png'),
-'folder_locked', files('folder_locked.png'),
-'folder_open', files('folder_open.png'),
-'folder_up', files('folder_up.png'),
-'gqview_icon', files('gqview_icon.png'),
-'geeqie_logo', files('geeqie_logo.png'),
-'icon_float', files('icon_float.png'),
-'icon_thumb', files('icon_thumb.png'),
-'icon_scroller', files('scroller.png'),
-'icon_broken', files('sheet_broken.png'),
-'icon_archive', files('archive_file.png'),
-'icon_metadata', files('sheet_metadata.png'),
-'icon_unknown', files('sheet_unknown.png'),
-'icon_video', files('sheet_video.png'),
-'icon_collection', files('collection.png'),
-'icon_book', files('icon_book.png'),
-'icon_config', files('icon_config.png'),
-'icon_tools', files('icon_tools.png'),
-'icon_view', files('icon_view.png'),
-'icon_panorama', files('icon_panorama.png'),
-'icon_maintenance', files('icon_maintenance.png'),
-'icon_zoomfillhor', files('icon_zoomfillhor.png'),
-'icon_zoomfillvert', files('icon_zoomfillvert.png'),
-'icon_hidetools', files('icon_hidetools.png'),
-'icon_exif', files('icon_exif.png'),
-'icon_marks', files('icon_marks.png'),
-'icon_info', files('icon_info.png'),
-'icon_sort', files('icon_sort.png'),
-'icon_pdf', files('icon_pdf.png'),
-'icon_draw_rectangle', files('icon_draw_rectangle.png'),
-'icon_move', files('icon_move.png'),
-'icon_rename', files('icon_rename.png'),
-'icon_select_all', files('icon_select_all.png'),
-'icon_select_none', files('icon_select_none.png'),
-'icon_select_invert', files('icon_select_invert.png'),
-'icon_select_rectangle', files('icon_select_rectangle.png'),
-'icon_file_filter', files('icon_file_filter.png'),
-'icon_rotate_clockwise', files('icon_rotate_clockwise.png'),
-'icon_rotate_counter_clockwise', files('icon_rotate_counter_clockwise.png'),
-'icon_rotate_180', files('icon_rotate_180.png'),
-'icon_mirror', files('icon_mirror.png'),
-'icon_flip', files('icon_flip.png'),
-'icon_original', files('icon_original.png'),
-'icon_trash', files('icon_trash.png'),
-'icon_heic', files('icon_heic.png'),
-'icon_grayscale', files('icon_grayscale.png'),
-'icon_exposure', files('icon_exposure.png'),
-'icon_split_pane_sync', files('icon_split_pane_sync.png')
-]
+target_string = '--target=' + meson.current_build_dir() + '/icons.h'
+icons_resources_h = custom_target('icons_resources_h',
+ input : 'icons.gresource.xml',
+ output : 'icons.h',
+ command : [glib_compile_resources, '--generate-header', target_string, '--sourcedir=@CURRENT_SOURCE_DIR@', '@INPUT@'])
-icons_inline_h = custom_target('icons_inline', output : 'icons_inline.h',
- command : [gdk_pixbuf_csource, '--raw', '--extern', '--build-list', icons_inline_pairs],
- capture : true)
+target_string = '--target=' + meson.current_build_dir() + '/icons.c'
+icons_resources_c = custom_target('icons_resources_c',
+ input : 'icons.gresource.xml',
+ output : 'icons.c',
+ command : [glib_compile_resources, '--generate-source', target_string, '--sourcedir=@CURRENT_SOURCE_DIR@', '@INPUT@'])
-project_sources += icons_inline_h
+project_sources += icons_resources_h
+project_sources += icons_resources_c
subdir('svg')
}
DEBUG_1("%s main: pixbuf_inline_register_stock_icons", get_exec_time());
+ gtk_icon_theme_add_resource_path(gtk_icon_theme_get_default(), GQ_RESOURCE_PATH_ICONS);
pixbuf_inline_register_stock_icons();
DEBUG_1("%s main: setting default options before commandline handling", get_exec_time());
#define GQ_TRASH_DIR "trash"
#define GQ_WINDOW_LAYOUTS_DIR "layouts"
#define GQ_ARCHIVE_DIR "geeqie-archive"
+#define GQ_RESOURCE_PATH_ICONS "/org/geeqie/icons"
#define GQ_SYSTEM_WIDE_DIR "/etc/" GQ_APPNAME_LC
gint w, h;
#ifdef GQ_BUILD
- pixbuf = pixbuf_inline(PIXBUF_INLINE_SCROLLER);
+ gchar *resource_path;
+
+ resource_path = g_build_filename(GQ_RESOURCE_PATH_ICONS, PIXBUF_INLINE_SCROLLER, ".png", NULL);
+
+ pixbuf = gdk_pixbuf_new_from_resource(resource_path, NULL);
+ g_free(resource_path);
#else
pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, 32, 32);
gdk_pixbuf_fill(pixbuf, 0x000000ff);
#include "exif.h"
#include "ui-fileops.h"
-#include "icons/icons_inline.h"
-
#include <math.h>
struct _PixbufInline
{
const gchar *key;
- const guint8 *data;
+ const gchar *data;
};
static PixbufInline inline_pixbuf_data[] = {
- { PIXBUF_INLINE_FOLDER_CLOSED, folder_closed },
- { PIXBUF_INLINE_FOLDER_LOCKED, folder_locked },
- { PIXBUF_INLINE_FOLDER_OPEN, folder_open },
- { PIXBUF_INLINE_FOLDER_UP, folder_up },
- { PIXBUF_INLINE_SCROLLER, icon_scroller },
- { PIXBUF_INLINE_BROKEN, icon_broken },
- { PIXBUF_INLINE_METADATA, icon_metadata },
- { PIXBUF_INLINE_UNKNOWN, icon_unknown },
- { PIXBUF_INLINE_VIDEO, icon_video },
- { PIXBUF_INLINE_COLLECTION, icon_collection },
- { PIXBUF_INLINE_ICON, gqview_icon },
- { PIXBUF_INLINE_LOGO, geeqie_logo },
- { PIXBUF_INLINE_ARCHIVE, icon_archive },
- { PIXBUF_INLINE_ICON_FLOAT, icon_float },
- { PIXBUF_INLINE_ICON_THUMB, icon_thumb },
- { PIXBUF_INLINE_ICON_BOOK, icon_book },
- { PIXBUF_INLINE_ICON_CONFIG, icon_config },
- { PIXBUF_INLINE_ICON_TOOLS, icon_tools },
- { PIXBUF_INLINE_ICON_VIEW, icon_view },
- { PIXBUF_INLINE_ICON_PANORAMA, icon_panorama },
- { PIXBUF_INLINE_ICON_MAINTENANCE, icon_maintenance },
- { PIXBUF_INLINE_ICON_ZOOMFILLHOR, icon_zoomfillhor },
- { PIXBUF_INLINE_ICON_ZOOMFILLVERT, icon_zoomfillvert },
- { PIXBUF_INLINE_ICON_HIDETOOLS, icon_hidetools },
- { PIXBUF_INLINE_ICON_EXIF, icon_exif },
- { PIXBUF_INLINE_ICON_MARKS, icon_marks },
- { PIXBUF_INLINE_ICON_INFO, icon_info },
- { PIXBUF_INLINE_ICON_SORT, icon_sort },
- { PIXBUF_INLINE_ICON_PDF, icon_pdf },
- { PIXBUF_INLINE_ICON_DRAW_RECTANGLE, icon_draw_rectangle },
- { PIXBUF_INLINE_ICON_MOVE, icon_move },
- { PIXBUF_INLINE_ICON_RENAME, icon_rename },
- { PIXBUF_INLINE_ICON_SELECT_ALL, icon_select_all },
- { PIXBUF_INLINE_ICON_SELECT_NONE, icon_select_none },
- { PIXBUF_INLINE_ICON_SELECT_INVERT, icon_select_invert },
- { PIXBUF_INLINE_ICON_SELECT_RECTANGLE, icon_select_rectangle },
- { PIXBUF_INLINE_ICON_FILE_FILTER, icon_file_filter },
- { PIXBUF_INLINE_ICON_CW, icon_rotate_clockwise },
- { PIXBUF_INLINE_ICON_CCW, icon_rotate_counter_clockwise },
- { PIXBUF_INLINE_ICON_180, icon_rotate_180 },
- { PIXBUF_INLINE_ICON_MIRROR, icon_mirror },
- { PIXBUF_INLINE_ICON_FLIP, icon_flip },
- { PIXBUF_INLINE_ICON_ORIGINAL, icon_original },
- { PIXBUF_INLINE_ICON_TRASH, icon_trash },
- { PIXBUF_INLINE_ICON_HEIF, icon_heic },
- { PIXBUF_INLINE_ICON_GRAYSCALE, icon_grayscale },
- { PIXBUF_INLINE_ICON_EXPOSURE, icon_exposure },
- { PIXBUF_INLINE_SPLIT_PANE_SYNC, icon_split_pane_sync },
+ { PIXBUF_INLINE_ARCHIVE, "gq-archive-file.png" },
+ { PIXBUF_INLINE_BROKEN, "gq-sheet-broken.png" },
+ { PIXBUF_INLINE_COLLECTION, "gq-collection.png" },
+ { PIXBUF_INLINE_FOLDER_CLOSED, "gq-folder-closed.png" },
+ { PIXBUF_INLINE_FOLDER_LOCKED, "gq-folder-locked.png" },
+ { PIXBUF_INLINE_FOLDER_OPEN, "gq-folder-open.png" },
+ { PIXBUF_INLINE_FOLDER_UP, "gq-folder-up.png" },
+ { PIXBUF_INLINE_ICON, "gqview-icon.png" },
+ { PIXBUF_INLINE_ICON_180, "gq-icon-rotate-180.png" },
+ { PIXBUF_INLINE_ICON_BOOK, "gq-icon-book.png" },
+ { PIXBUF_INLINE_ICON_CCW, "gq-icon-rotate-counter-clockwise.png" },
+ { PIXBUF_INLINE_ICON_CONFIG, "gq-icon-config.png" },
+ { PIXBUF_INLINE_ICON_CW, "gq-icon-rotate-clockwise.png" },
+ { PIXBUF_INLINE_ICON_DRAW_RECTANGLE, "gq-icon-draw-rectangle.png" },
+ { PIXBUF_INLINE_ICON_EXIF, "gq-icon-exif.png" },
+ { PIXBUF_INLINE_ICON_EXPOSURE, "gq-icon-exposure.png" },
+ { PIXBUF_INLINE_ICON_FILE_FILTER, "gq-icon-file-filter.png" },
+ { PIXBUF_INLINE_ICON_FLIP, "gq-icon-flip.png" },
+ { PIXBUF_INLINE_ICON_FLOAT, "gq-icon-float.png" },
+ { PIXBUF_INLINE_ICON_GRAYSCALE, "gq-icon-grayscale.png" },
+ { PIXBUF_INLINE_ICON_HEIF, "gq-icon-heic.png" },
+ { PIXBUF_INLINE_ICON_HIDETOOLS, "gq-icon-hidetools.png" },
+ { PIXBUF_INLINE_ICON_INFO, "gq-icon-info.png" },
+ { PIXBUF_INLINE_ICON_MAINTENANCE, "gq-icon-maintenance.png" },
+ { PIXBUF_INLINE_ICON_MARKS, "gq-icon-marks.png" },
+ { PIXBUF_INLINE_ICON_MIRROR, "gq-icon-mirror.png" },
+ { PIXBUF_INLINE_ICON_MOVE, "gq-icon-move.png" },
+ { PIXBUF_INLINE_ICON_ORIGINAL, "gq-icon-original.png" },
+ { PIXBUF_INLINE_ICON_PANORAMA, "gq-icon-panorama.png" },
+ { PIXBUF_INLINE_ICON_PDF, "gq-icon-pdf.png" },
+ { PIXBUF_INLINE_ICON_RENAME, "gq-icon-rename.png" },
+ { PIXBUF_INLINE_ICON_SELECT_ALL, "gq-icon-select-all.png" },
+ { PIXBUF_INLINE_ICON_SELECT_INVERT, "gq-icon-select-invert.png" },
+ { PIXBUF_INLINE_ICON_SELECT_NONE, "gq-icon-select-none.png" },
+ { PIXBUF_INLINE_ICON_SELECT_RECTANGLE, "gq-icon-select-rectangle.png" },
+ { PIXBUF_INLINE_ICON_SORT, "gq-icon-sort.png" },
+ { PIXBUF_INLINE_ICON_THUMB, "gq-icon-thumb.png" },
+ { PIXBUF_INLINE_ICON_TOOLS, "gq-icon-tools.png" },
+ { PIXBUF_INLINE_ICON_TRASH, "gq-icon-trash.png" },
+ { PIXBUF_INLINE_ICON_VIEW, "gq-icon-view.png" },
+ { PIXBUF_INLINE_ICON_ZOOMFILLHOR, "gq-icon-zoomfillhor.png" },
+ { PIXBUF_INLINE_ICON_ZOOMFILLVERT, "gq-icon-zoomfillvert.png" },
+ { PIXBUF_INLINE_LOGO, "geeqie-logo.png" },
+ { PIXBUF_INLINE_METADATA, "gq-sheet-metadata.png" },
+ { PIXBUF_INLINE_SCROLLER, "gq-scroller.png" },
+ { PIXBUF_INLINE_SPLIT_PANE_SYNC, "gq-icon-split-pane-sync.png" },
+ { PIXBUF_INLINE_UNKNOWN, "gq-sheet-unknown.png" },
+ { PIXBUF_INLINE_VIDEO, "gq-sheet-video.png" },
{ NULL, NULL }
};
GdkPixbuf *pixbuf_inline(const gchar *key)
{
+ GError *error = NULL;
+ GInputStream *in_stream;
+ GdkPixbuf *icon_pixbuf;
+ gchar *path;
gint i;
if (!key) return NULL;
{
if (strcmp(inline_pixbuf_data[i].key, key) == 0)
{
- return gdk_pixbuf_new_from_inline(-1, inline_pixbuf_data[i].data, FALSE, NULL);
+ path = g_build_filename(GQ_RESOURCE_PATH_ICONS, inline_pixbuf_data[i].data, NULL);
+
+ in_stream = g_resources_open_stream(path, G_RESOURCE_LOOKUP_FLAGS_NONE, &error);
+ g_free(path);
+
+ if (error)
+ {
+ log_printf("warning: inline pixbuf error: %s", error->message);
+ g_error_free(error);
+ g_object_unref(in_stream);
+ return NULL;
+ }
+
+ icon_pixbuf = gdk_pixbuf_new_from_stream(in_stream, NULL, &error);
+ g_object_unref(in_stream);
+
+ if (error)
+ {
+ log_printf("warning: inline pixbuf error: %s", error->message);
+ g_error_free(error);
+ return NULL;
+ }
+
+ return icon_pixbuf;
}
i++;
}
gboolean pixbuf_scale_aspect(gint req_w, gint req_h, gint old_w, gint old_h, gint *new_w, gint *new_h);
-#define PIXBUF_INLINE_FOLDER_CLOSED "folder_closed"
-#define PIXBUF_INLINE_FOLDER_LOCKED "folder_locked"
-#define PIXBUF_INLINE_FOLDER_OPEN "folder_open"
-#define PIXBUF_INLINE_FOLDER_UP "folder_up"
-#define PIXBUF_INLINE_SCROLLER "scroller"
-#define PIXBUF_INLINE_BROKEN "broken"
-#define PIXBUF_INLINE_METADATA "metadata"
-#define PIXBUF_INLINE_UNKNOWN "unknown"
-#define PIXBUF_INLINE_VIDEO "video"
-#define PIXBUF_INLINE_COLLECTION "collection"
-#define PIXBUF_INLINE_ICON "icon"
-#define PIXBUF_INLINE_LOGO "logo"
-#define PIXBUF_INLINE_ARCHIVE "archive"
-
-#define PIXBUF_INLINE_ICON_FLOAT "icon_float"
-#define PIXBUF_INLINE_ICON_THUMB "icon_thumb"
-
-#define PIXBUF_INLINE_ICON_BOOK "icon_book"
-#define PIXBUF_INLINE_ICON_CONFIG "icon_config"
-#define PIXBUF_INLINE_ICON_TOOLS "icon_tools"
-#define PIXBUF_INLINE_ICON_VIEW "icon_view"
-#define PIXBUF_INLINE_ICON_PANORAMA "icon_panorama"
-#define PIXBUF_INLINE_ICON_MAINTENANCE "icon_maintenance"
-#define PIXBUF_INLINE_ICON_ZOOMFILLHOR "icon_zoomfillhor"
-#define PIXBUF_INLINE_ICON_ZOOMFILLVERT "icon_zoomfillvert"
-#define PIXBUF_INLINE_ICON_HIDETOOLS "icon_hidetools"
-#define PIXBUF_INLINE_ICON_EXIF "icon_exif"
-#define PIXBUF_INLINE_ICON_MARKS "icon_marks"
-#define PIXBUF_INLINE_ICON_INFO "icon_info"
-#define PIXBUF_INLINE_ICON_SORT "icon_sort"
-#define PIXBUF_INLINE_ICON_PDF "icon_pdf"
-#define PIXBUF_INLINE_ICON_DRAW_RECTANGLE "icon_draw_rectangle"
-#define PIXBUF_INLINE_ICON_MOVE "icon_move"
-#define PIXBUF_INLINE_ICON_RENAME "icon_rename"
-#define PIXBUF_INLINE_ICON_SELECT_ALL "icon_select_all"
-#define PIXBUF_INLINE_ICON_SELECT_NONE "icon_select_none"
-#define PIXBUF_INLINE_ICON_SELECT_INVERT "icon_select_invert"
-#define PIXBUF_INLINE_ICON_SELECT_RECTANGLE "icon_select_rectangle"
-#define PIXBUF_INLINE_ICON_FILE_FILTER "icon_file_filter"
-#define PIXBUF_INLINE_ICON_TRASH "icon_trash"
-#define PIXBUF_INLINE_ICON_HEIF "icon_heic"
-#define PIXBUF_INLINE_ICON_GRAYSCALE "icon_grayscale"
-#define PIXBUF_INLINE_ICON_EXPOSURE "icon_exposure"
-#define PIXBUF_INLINE_SPLIT_PANE_SYNC "icon_split_pane_sync"
-
-#define PIXBUF_INLINE_ICON_CW "icon_rotate_clockwise"
-#define PIXBUF_INLINE_ICON_CCW "icon_rotate_counter_clockwise"
-#define PIXBUF_INLINE_ICON_180 "icon_rotate_180"
-#define PIXBUF_INLINE_ICON_MIRROR "icon_mirror"
-#define PIXBUF_INLINE_ICON_FLIP "icon_flip"
-#define PIXBUF_INLINE_ICON_ORIGINAL "icon_original"
+#define PIXBUF_INLINE_ARCHIVE "gq-archive-file"
+#define PIXBUF_INLINE_BROKEN "gq-sheet-broken"
+#define PIXBUF_INLINE_COLLECTION "gq-collection"
+#define PIXBUF_INLINE_FOLDER_CLOSED "gq-folder-closed"
+#define PIXBUF_INLINE_FOLDER_LOCKED "gq-folder-locked"
+#define PIXBUF_INLINE_FOLDER_OPEN "gq-folder-open"
+#define PIXBUF_INLINE_FOLDER_UP "gq-folder-up"
+#define PIXBUF_INLINE_ICON "gqview-icon"
+#define PIXBUF_INLINE_ICON_180 "gq-icon-rotate-180"
+#define PIXBUF_INLINE_ICON_BOOK "gq-icon-book"
+#define PIXBUF_INLINE_ICON_CCW "gq-icon-rotate-counter-clockwise"
+#define PIXBUF_INLINE_ICON_CONFIG "gq-icon-config"
+#define PIXBUF_INLINE_ICON_CW "gq-icon-rotate-clockwise"
+#define PIXBUF_INLINE_ICON_DRAW_RECTANGLE "gq-icon-draw-rectangle"
+#define PIXBUF_INLINE_ICON_EXIF "gq-icon-exif"
+#define PIXBUF_INLINE_ICON_EXPOSURE "gq-icon-exposure"
+#define PIXBUF_INLINE_ICON_FILE_FILTER "gq-icon-file-filter"
+#define PIXBUF_INLINE_ICON_FLIP "gq-icon-flip"
+#define PIXBUF_INLINE_ICON_FLOAT "gq-icon-float"
+#define PIXBUF_INLINE_ICON_GRAYSCALE "gq-icon-grayscale"
+#define PIXBUF_INLINE_ICON_HEIF "gq-icon-heic"
+#define PIXBUF_INLINE_ICON_HIDETOOLS "gq-icon-hidetools"
+#define PIXBUF_INLINE_ICON_INFO "gq-icon-info"
+#define PIXBUF_INLINE_ICON_MAINTENANCE "gq-icon-maintenance"
+#define PIXBUF_INLINE_ICON_MARKS "gq-icon-marks"
+#define PIXBUF_INLINE_ICON_MIRROR "gq-icon-mirror"
+#define PIXBUF_INLINE_ICON_MOVE "gq-icon-move"
+#define PIXBUF_INLINE_ICON_ORIGINAL "gq-icon-original"
+#define PIXBUF_INLINE_ICON_PANORAMA "gq-icon-panorama"
+#define PIXBUF_INLINE_ICON_PDF "gq-icon-pdf"
+#define PIXBUF_INLINE_ICON_RENAME "gq-icon-rename"
+#define PIXBUF_INLINE_ICON_SELECT_ALL "gq-icon-select-all"
+#define PIXBUF_INLINE_ICON_SELECT_INVERT "gq-icon-select-invert"
+#define PIXBUF_INLINE_ICON_SELECT_NONE "gq-icon-select-none"
+#define PIXBUF_INLINE_ICON_SELECT_RECTANGLE "gq-icon-select-rectangle"
+#define PIXBUF_INLINE_ICON_SORT "gq-icon-sort"
+#define PIXBUF_INLINE_ICON_THUMB "gq-icon-thumb"
+#define PIXBUF_INLINE_ICON_TOOLS "gq-icon-tools"
+#define PIXBUF_INLINE_ICON_TRASH "gq-icon-trash"
+#define PIXBUF_INLINE_ICON_VIEW "gq-icon-view"
+#define PIXBUF_INLINE_ICON_ZOOMFILLHOR "gq-icon-zoomfillhor"
+#define PIXBUF_INLINE_ICON_ZOOMFILLVERT "gq-icon-zoomfillvert"
+#define PIXBUF_INLINE_LOGO "geeqie-logo"
+#define PIXBUF_INLINE_METADATA "gq-sheet-metadata"
+#define PIXBUF_INLINE_SCROLLER "gq-scroller"
+#define PIXBUF_INLINE_SPLIT_PANE_SYNC "gq-icon-split-pane-sync"
+#define PIXBUF_INLINE_UNKNOWN "gq-sheet-unknown"
+#define PIXBUF_INLINE_VIDEO "gq-sheet-video"
GdkPixbuf *pixbuf_copy_rotate_90(GdkPixbuf *src, gboolean counter_clockwise);
GdkPixbuf *pixbuf_copy_mirror(GdkPixbuf *src, gboolean mirror, gboolean flip);