ui/gtk/image.h

changeset 103
6606616eca9f
parent 51
e324291ca9f8
--- a/ui/gtk/image.h	Tue Feb 25 21:11:00 2025 +0100
+++ b/ui/gtk/image.h	Sat Apr 05 16:46:11 2025 +0200
@@ -36,11 +36,99 @@
 extern "C" {
 #endif
 
+typedef struct UiImageViewer {
+    UiObject *obj;
+    GtkWidget *widget;
+    UiVar *var;
+    int padding_left;
+    int padding_right;
+    int padding_top;
+    int padding_bottom;
+    UiBool autoscale;
+    UiBool adjustwidgetsize;
+    UiBool useradjustable;
+    GdkPixbuf *pixbuf;
+    
+    double zoom_scale;
+    int transx;
+    int transy;
+    int begin_transx;
+    int begin_transy;
+    UiBool isautoscaled;
+    double user_scale;
+    double scale;
+    
+    ui_callback onbuttonpress;
+    void *onbuttonpressdata;
+    ui_callback onbuttonrelease;
+    void *onbuttonreleasedata;
+} UiImageViewer;
+
+void ui_cairo_draw_image(UiImageViewer *imgviewer, cairo_t *cr, int width, int height);
 
 void* ui_imageviewer_get(UiGeneric *g);
 const char* ui_imageviewer_get_type(UiGeneric *g);
 int ui_imageviewer_set(UiGeneric *g, void *value, const char *type);
 
+#if GTK_MAJOR_VERSION >= 4
+
+gboolean ui_imageviewer_scroll(
+        GtkEventControllerScroll *widget,
+        gdouble dx,
+        gdouble dy,
+        gpointer userdata);
+
+void ui_imageviewer_drag_begin_cb(
+        GtkGestureDrag* self,
+        gdouble start_x,
+        gdouble start_y,
+        gpointer userdata);
+
+void ui_imageviewer_drag_end_cb(
+        GtkGestureDrag* self,
+        gdouble x,
+        gdouble y,
+        gpointer userdata);
+
+void ui_imageviewer_drag_update_cb(
+        GtkGestureDrag* self,
+        gdouble x,
+        gdouble y,
+        gpointer userdata);
+
+void ui_imageviewer_pressed_cb(
+        GtkGestureClick *self,
+        gint n_press,
+        gdouble x,
+        gdouble y,
+        gpointer userdata);
+
+void ui_imageviewer_released_cb(
+        GtkGestureClick *self,
+        gint n_press,
+        gdouble x,
+        gdouble y,
+        gpointer userdata);
+
+#else
+
+gboolean ui_imageviewer_scroll_event(
+        GtkWidget *widget,
+        GdkEventScroll event,
+        gpointer userdata);
+
+gboolean ui_imageviewer_button_press_event(
+        GtkWidget *widget,
+        GdkEventButton event,
+        gpointer userdata);
+
+gboolean ui_imageviewer_button_release_event(
+        GtkWidget *widget,
+        GdkEventButton event,
+        gpointer userdata);
+
+#endif
+
 #ifdef __cplusplus
 }
 #endif

mercurial