ui/gtk/image.c

Mon, 29 Sep 2025 21:14:46 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 29 Sep 2025 21:14:46 +0200
changeset 779
b84cbe57e0bd
parent 669
5b930e8c3a87
child 801
e096c441e874
permissions
-rw-r--r--

change UiCellValue from struct to union and pass it as pointer to the onsave function, for better compatibility with other languages

339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2024 Olaf Wintermann. All rights reserved.
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include "image.h"
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 #include "container.h"
389
d15eca5fd8b3 implement image viewer context menus (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 381
diff changeset
32 #include "menu.h"
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 #include "../common/context.h"
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 #include "../common/object.h"
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
36 static void imageviewer_destroy(UiImageViewer *iv) {
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
37 if(iv->pixbuf) {
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
38 g_object_unref(iv->pixbuf);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
39 }
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
40 free(iv);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
41 }
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
42
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
43 #if GTK_MAJOR_VERSION >= 4
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
44
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
45 static void imageviewer_draw(
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
46 GtkDrawingArea *drawingarea,
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
47 cairo_t *cr,
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
48 int width,
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
49 int height,
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
50 gpointer userdata)
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
51 {
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
52 ui_cairo_draw_image(userdata, cr, width, height);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
53 }
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
54
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
55 #else
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
56
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
57 static gboolean imageviewer_draw(GtkWidget *widget, cairo_t *cr, gpointer userdata) {
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
58 int width = gtk_widget_get_allocated_width(widget);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
59 int height = gtk_widget_get_allocated_height(widget);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
60 ui_cairo_draw_image(userdata, cr, width, height);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
61 return FALSE;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
62 }
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
63
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
64 #endif
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
66 UIWIDGET ui_imageviewer_create(UiObject *obj, UiImageViewerArgs *args) {
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 UiObject *current = uic_current_obj(obj);
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
69 GtkWidget *drawingarea = gtk_drawing_area_new();
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
70 GtkWidget *toplevel;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
71 GtkWidget *widget = drawingarea;
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
72
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
73 gtk_widget_set_size_request(drawingarea, 100, 100);
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 #if GTK_MAJOR_VERSION < 4
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 GtkWidget *eventbox = gtk_event_box_new();
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
77 gtk_container_add(GTK_CONTAINER(eventbox), drawingarea);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
78 widget = eventbox;
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79 #endif
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
81 if(args->scrollarea) {
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
82 toplevel = SCROLLEDWINDOW_NEW();
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
83 SCROLLEDWINDOW_SET_CHILD(toplevel, widget);
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
84 args->adjustwidgetsize = TRUE;
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
85 } else {
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
86 toplevel = widget;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
87 }
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
88
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
89 UiImageViewer *imgviewer = malloc(sizeof(UiImageViewer));
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
90 memset(imgviewer, 0, sizeof(UiImageViewer));
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
91 imgviewer->obj = obj;
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
92 imgviewer->onbuttonpress = args->onbuttonpress;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
93 imgviewer->onbuttonpressdata = args->onbuttonpressdata;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
94 imgviewer->onbuttonrelease = args->onbuttonrelease;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
95 imgviewer->onbuttonreleasedata = args->onbuttonreleasedata;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
96 if(args->image_padding > 0) {
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
97 imgviewer->padding_left = args->image_padding;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
98 imgviewer->padding_right = args->image_padding;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
99 imgviewer->padding_top = args->image_padding;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
100 imgviewer->padding_bottom = args->image_padding;
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
101 } else {
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
102 imgviewer->padding_left = args->image_padding_left;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
103 imgviewer->padding_right = args->image_padding_right;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
104 imgviewer->padding_top = args->image_padding_top;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
105 imgviewer->padding_bottom = args->image_padding_bottom;
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
106 }
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
107 imgviewer->adjustwidgetsize = args->adjustwidgetsize;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
108 imgviewer->autoscale = args->autoscale;
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
109 imgviewer->useradjustable = args->useradjustable;
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
110 imgviewer->zoom_scale = 20;
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
111
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
112 g_object_set_data_full(G_OBJECT(drawingarea), "uiimageviewer", imgviewer, (GDestroyNotify)imageviewer_destroy);
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
113
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
114 UiVar *var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_GENERIC);
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
115 imgviewer->var = var;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
116 imgviewer->widget = drawingarea;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
117
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 if(var) {
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 UiGeneric *value = var->value;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 value->get = ui_imageviewer_get;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 value->get_type = ui_imageviewer_get_type;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 value->set = ui_imageviewer_set;
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
123 value->obj = imgviewer;
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 if(value->value && value->type && !strcmp(value->type, UI_IMAGE_OBJECT_TYPE)) {
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 GdkPixbuf *pixbuf = value->value;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 value->value = NULL;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 ui_imageviewer_set(value, pixbuf, UI_IMAGE_OBJECT_TYPE);
548
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
128 g_object_unref(pixbuf);
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 }
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 }
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
132 #if GTK_MAJOR_VERSION >= 4
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
133 gtk_drawing_area_set_draw_func(
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
134 GTK_DRAWING_AREA(drawingarea),
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
135 imageviewer_draw,
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
136 imgviewer,
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
137 NULL);
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
138
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
139 if(args->useradjustable) {
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
140 gtk_widget_set_focusable(drawingarea, TRUE);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
141 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
142
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
143 GtkEventController *scrollcontroller = gtk_event_controller_scroll_new(GTK_EVENT_CONTROLLER_SCROLL_VERTICAL);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
144 g_signal_connect(scrollcontroller, "scroll", G_CALLBACK(ui_imageviewer_scroll), imgviewer);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
145 gtk_widget_add_controller(GTK_WIDGET(drawingarea), GTK_EVENT_CONTROLLER(scrollcontroller));
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
146
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
147 GtkGesture *drag = gtk_gesture_drag_new();
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
148 g_signal_connect(drag, "drag-begin", G_CALLBACK(ui_imageviewer_drag_begin_cb), imgviewer);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
149 g_signal_connect(drag, "drag-end", G_CALLBACK(ui_imageviewer_drag_end_cb), imgviewer);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
150 g_signal_connect(drag, "drag-update", G_CALLBACK(ui_imageviewer_drag_update_cb), imgviewer);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
151 gtk_widget_add_controller(GTK_WIDGET(drawingarea), GTK_EVENT_CONTROLLER(drag));
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
152
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
153 GtkGesture *click = gtk_gesture_click_new();
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
154 g_signal_connect(click, "pressed", G_CALLBACK(ui_imageviewer_pressed_cb), imgviewer);
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
155 g_signal_connect(click, "released", G_CALLBACK(ui_imageviewer_released_cb), imgviewer);
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
156 gtk_widget_add_controller(GTK_WIDGET(drawingarea), GTK_EVENT_CONTROLLER(click));
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
157
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
158 #elif GTK_MAJOR_VERSION == 3
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
159 g_signal_connect(
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
160 drawingarea,
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
161 "draw",
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
162 G_CALLBACK(imageviewer_draw),
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
163 imgviewer);
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
164
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
165 gtk_widget_add_events(eventbox, GDK_SCROLL_MASK);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
166
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
167 g_signal_connect(
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
168 eventbox,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
169 "scroll-event",
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
170 G_CALLBACK(ui_imageviewer_scroll_event),
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
171 imgviewer);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
172 g_signal_connect(
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
173 eventbox,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
174 "button-press-event",
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
175 G_CALLBACK(ui_imageviewer_button_press_event),
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
176 imgviewer);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
177 g_signal_connect(
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
178 eventbox,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
179 "button-release-event",
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
180 G_CALLBACK(ui_imageviewer_button_release_event),
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
181 imgviewer);
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
182
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
183 #endif
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
184
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
185 if(args->contextmenu) {
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
186 UIMENU menu = ui_contextmenu_create(args->contextmenu, obj, widget);
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
187 ui_widget_set_contextmenu(widget, menu);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
188 }
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
189
594
fc854e0ab924 pass Args structs per pointer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 578
diff changeset
190 UI_APPLY_LAYOUT2(current, args);
669
5b930e8c3a87 simplify layout fill option, remove fill parameter from container add function (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 659
diff changeset
191 current->container->add(current->container, toplevel);
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
192
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
193 return toplevel;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
194 }
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
195
532
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
196 static void imageviewer_reset(UiImageViewer *imgviewer) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
197 imgviewer->isautoscaled = FALSE;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
198 imgviewer->transx = 0;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
199 imgviewer->transy;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
200 imgviewer->begin_transx = 0;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
201 imgviewer->begin_transy = 0;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
202 imgviewer->scale = 1;
533
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
203 imgviewer->user_scale = 1;
532
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
204 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
205
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
206 UIWIDGET ui_imageviewer_reset(UIWIDGET w) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
207 UiImageViewer *imgviewer = g_object_get_data(G_OBJECT(w), "uiimageviewer");
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
208 if(imgviewer) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
209 imageviewer_reset(imgviewer);
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
210 gtk_widget_queue_draw(w);
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
211 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
212 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
213
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
214 UIWIDGET ui_imageviewer_set_autoscale(UIWIDGET w, UiBool set) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
215 UiImageViewer *imgviewer = g_object_get_data(G_OBJECT(w), "uiimageviewer");
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
216 if(imgviewer) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
217 imgviewer->autoscale = set;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
218 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
219 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
220
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
221 UIWIDGET ui_imageviewer_set_adjustwidgetsize(UIWIDGET w, UiBool set) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
222 UiImageViewer *imgviewer = g_object_get_data(G_OBJECT(w), "uiimageviewer");
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
223 if(imgviewer) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
224 imgviewer->adjustwidgetsize = set;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
225 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
226 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
227
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
228 UIWIDGET ui_imageviewer_set_useradjustable(UIWIDGET w, UiBool set) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
229 UiImageViewer *imgviewer = g_object_get_data(G_OBJECT(w), "uiimageviewer");
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
230 if(imgviewer) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
231 imgviewer->useradjustable = set;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
232 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
233 }
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
234
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
235 void ui_cairo_draw_image(UiImageViewer *imgviewer, cairo_t *cr, int width, int height) {
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
236 if(!imgviewer->pixbuf) {
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
237 return;
389
d15eca5fd8b3 implement image viewer context menus (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 381
diff changeset
238 }
d15eca5fd8b3 implement image viewer context menus (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 381
diff changeset
239
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
240 GdkPixbuf *pixbuf = imgviewer->pixbuf;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
241 double dpixwidth = (double)gdk_pixbuf_get_width(pixbuf);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
242 double dpixheight = (double)gdk_pixbuf_get_height(pixbuf);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
243
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
244 double dwidth = width;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
245 double dheight = height;
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
246 double scale = 1;
532
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
247 // if autoscale is enabled, scale the image to fill available space
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
248 // if useradjustable is also enabled, the autoscaling is only done once
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
249 if(imgviewer->autoscale && imgviewer->scale != 0) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
250 if(!imgviewer->isautoscaled) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
251 scale = dwidth / dpixwidth;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
252 if(dpixheight * scale > dheight) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
253 scale = dheight / dpixheight;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
254 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
255
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
256 if(imgviewer->useradjustable) {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
257 imgviewer->isautoscaled = TRUE;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
258 }
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
259
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
260 imgviewer->scale = scale;
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
261 } else {
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
262 scale = imgviewer->scale;
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
263 }
533
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
264
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
265 imgviewer->user_scale = scale;
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
266 } else {
532
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
267 // user-adjusted scaling
533
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
268 //scale = 1 + ((double)imgviewer->zoom / (double)imgviewer->zoom_scale);
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
269 scale = imgviewer->user_scale;
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
270 }
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
271
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
272 dpixwidth *= scale;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
273 dpixheight *= scale;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
274 double x = (dwidth - dpixwidth) / 2;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
275 double y = (dheight - dpixheight) / 2;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
276
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
277 x += imgviewer->transx;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
278 y += imgviewer->transy;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
279
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
280 cairo_translate(cr, x, y);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
281 cairo_scale(cr, scale, scale);
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
282
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
283 gdk_cairo_set_source_pixbuf(cr, pixbuf, 0, 0);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
284 cairo_paint(cr);
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
285 }
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
286
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
287 void* ui_imageviewer_get(UiGeneric *g) {
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
288 UiImageViewer *imgviewer = g->obj;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
289 g->value = imgviewer->pixbuf;
340
2dd42bd4fe5d add imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 339
diff changeset
290 return g->value;
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
291 }
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
292
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
293 const char* ui_imageviewer_get_type(UiGeneric *g) {
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
294 return UI_IMAGE_OBJECT_TYPE;
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
295 }
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
296
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
297 int ui_imageviewer_set(UiGeneric *g, void *value, const char *type) {
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
298 if(!type || strcmp(type, UI_IMAGE_OBJECT_TYPE)) {
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
299 return 1;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
300 }
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
301
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
302 GdkPixbuf *pixbuf = value;
548
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
303 g_object_ref(pixbuf);
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
304
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
305 UiImageViewer *imgviewer = g->obj;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
306 g->value = pixbuf;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
307
532
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
308 imageviewer_reset(imgviewer);
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
309
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
310 if(imgviewer->pixbuf) {
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
311 g_object_unref(imgviewer->pixbuf);
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
312 }
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
313 imgviewer->pixbuf = pixbuf;
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
314
532
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
315 if(imgviewer->adjustwidgetsize && !imgviewer->autoscale) {
381
b47bda6666ce fix gtk3 image loading
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 340
diff changeset
316 int width = gdk_pixbuf_get_width(pixbuf);
b47bda6666ce fix gtk3 image loading
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 340
diff changeset
317 int height = gdk_pixbuf_get_height(pixbuf);
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
318 gtk_widget_set_size_request(imgviewer->widget, width, height);
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
319 }
529
0a4a6b0d1c82 add new imageviewer implementation (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 390
diff changeset
320 gtk_widget_queue_draw(imgviewer->widget);
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
321
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
322 return 0;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
323 }
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
324
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
325
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
326
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
327 int ui_image_load_file(UiGeneric *obj, const char *path) {
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
328 GError *error = NULL;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
329 GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(path, &error);
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
330 if(!pixbuf) {
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
331 return 1;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
332 }
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
333
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
334 if(obj->set) {
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
335 obj->set(obj, pixbuf, UI_IMAGE_OBJECT_TYPE);
548
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
336 g_object_unref(pixbuf);
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
337 } else {
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
338 obj->value = pixbuf;
578
950d2e38957b fix ui_image_load_* functions would not set the type to UI_IMAGE_OBJECT_TYPE in case UiGeneric is not bound to an widget
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 565
diff changeset
339 obj->type = UI_IMAGE_OBJECT_TYPE;
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
340 }
548
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
341
339
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
342 return 0;
b68b5f984074 add minimally working image viewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
343 }
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
344
563
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
345 UIEXPORT int ui_image_load_data(UiGeneric *obj, const void *imgdata, size_t size) {
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
346 GBytes *bytes = g_bytes_new_static(imgdata, size);
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
347 GInputStream *in = g_memory_input_stream_new_from_bytes(bytes);
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
348 GError *error = NULL;
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
349 GdkPixbuf *pixbuf = gdk_pixbuf_new_from_stream(in, NULL, &error);
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
350 g_object_unref(in);
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
351 if(!pixbuf) {
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
352 return 1;
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
353 }
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
354
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
355 if(obj->set) {
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
356 obj->set(obj, pixbuf, UI_IMAGE_OBJECT_TYPE);
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
357 g_object_unref(pixbuf);
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
358 } else {
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
359 obj->value = pixbuf;
578
950d2e38957b fix ui_image_load_* functions would not set the type to UI_IMAGE_OBJECT_TYPE in case UiGeneric is not bound to an widget
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 565
diff changeset
360 obj->type = UI_IMAGE_OBJECT_TYPE;
563
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
361 }
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
362
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
363 return 0;
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
364 }
6fc93c3b91c9 add ui_image_load_data (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 548
diff changeset
365
548
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
366 void ui_image_ref(UIIMAGE img) {
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
367 g_object_ref(img);
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
368 }
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
369
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
370 void ui_image_unref(UIIMAGE img) {
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
371 g_object_unref(img);
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
372 }
198756ab2845 add UIIMAGE type
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 547
diff changeset
373
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
374 #if GTK_MAJOR_VERSION >= 4
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
375
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
376 gboolean ui_imageviewer_scroll(
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
377 GtkEventControllerScroll *widget,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
378 gdouble dx,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
379 gdouble dy,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
380 gpointer userdata)
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
381 {
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
382 UiImageViewer *imgviewer = userdata;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
383 if(imgviewer->useradjustable) {
533
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
384 double step = dy / imgviewer->zoom_scale;
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
385 if(imgviewer->user_scale - step > 0) {
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
386 imgviewer->user_scale -= step;
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
387 }
533
951b92ce3708 replace imageviewer integer zoom with fp userscale setting
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 532
diff changeset
388
532
80a6d8923d75 allow autoscale + useradjustable in imageviewer (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 530
diff changeset
389 imgviewer->scale = 0; // disable autoscale
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
390 gtk_widget_queue_draw(imgviewer->widget);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
391 return TRUE;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
392 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
393 return FALSE;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
394 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
395
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
396 void ui_imageviewer_drag_begin_cb(
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
397 GtkGestureDrag *self,
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
398 gdouble start_x,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
399 gdouble start_y,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
400 gpointer userdata)
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
401 {
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
402 UiImageViewer *imgviewer = userdata;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
403 imgviewer->begin_transx = imgviewer->transx;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
404 imgviewer->begin_transy = imgviewer->transy;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
405 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
406
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
407 void ui_imageviewer_drag_end_cb(
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
408 GtkGestureDrag* self,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
409 gdouble x,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
410 gdouble y,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
411 gpointer userdata)
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
412 {
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
413
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
414 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
415
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
416 void ui_imageviewer_drag_update_cb(
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
417 GtkGestureDrag *self,
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
418 gdouble x,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
419 gdouble y,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
420 gpointer userdata)
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
421 {
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
422 UiImageViewer *imgviewer = userdata;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
423 if(imgviewer->useradjustable) {
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
424 imgviewer->transx = imgviewer->begin_transx + x;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
425 imgviewer->transy = imgviewer->begin_transy + y;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
426 gtk_widget_queue_draw(imgviewer->widget);
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
427 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
428 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
429
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
430 static void imgviewer_button_event(
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
431 GtkGestureClick *gesture,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
432 UiImageViewer *imgviewer,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
433 ui_callback callback,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
434 void *userdata)
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
435 {
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
436 UiEvent event;
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
437 event.obj = imgviewer->obj;
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
438 event.window = event.obj->window;
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
439 event.document = event.obj->ctx->document;
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
440 event.eventdata = NULL;
659
d6baaa93f7be add UiEvent eventdatatype
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 594
diff changeset
441 event.eventdatatype = 0;
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
442 event.intval = gtk_gesture_single_get_current_button(GTK_GESTURE_SINGLE(gesture));
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
443 event.set = 0;
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
444 callback(&event, userdata);
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
445 }
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
446
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
447 void ui_imageviewer_pressed_cb(
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
448 GtkGestureClick *self,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
449 gint n_press,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
450 gdouble x,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
451 gdouble y,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
452 gpointer userdata)
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
453 {
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
454 UiImageViewer *imgviewer = userdata;
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
455 if(imgviewer->onbuttonpress) {
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
456 imgviewer_button_event(self, imgviewer, imgviewer->onbuttonpress, imgviewer->onbuttonpressdata);
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
457 }
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
458 }
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
459
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
460 void ui_imageviewer_released_cb(
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
461 GtkGestureClick *self,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
462 gint n_press,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
463 gdouble x,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
464 gdouble y,
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
465 gpointer userdata)
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
466 {
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
467 UiImageViewer *imgviewer = userdata;
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
468 if(imgviewer->onbuttonrelease) {
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
469 imgviewer_button_event(self, imgviewer, imgviewer->onbuttonrelease, imgviewer->onbuttonreleasedata);
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
470 }
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
471 }
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
472
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
473 #else
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
474
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
475 gboolean ui_imageviewer_scroll_event(
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
476 GtkWidget *widget,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
477 GdkEventScroll event,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
478 gpointer userdata)
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
479 {
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
480 // TODO
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
481 return FALSE;
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
482 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
483
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
484 gboolean ui_imageviewer_button_press_event(
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
485 GtkWidget *widget,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
486 GdkEventButton event,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
487 gpointer userdata)
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
488 {
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
489 // TODO
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
490 return FALSE;
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
491 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
492
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
493 gboolean ui_imageviewer_button_release_event(
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
494 GtkWidget *widget,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
495 GdkEventButton event,
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
496 gpointer userdata)
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
497 {
547
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
498 // TODO
631162b266d1 add imgviewer button press/release callbacks (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 533
diff changeset
499 return FALSE;
530
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
500 }
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
501
7992a44fe719 implement imageviewer useradjustable setting in gtk4 implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 529
diff changeset
502 #endif

mercurial