2 days ago
replace imageviewer integer zoom with fp userscale setting
ui/gtk/image.c | file | annotate | diff | comparison | revisions | |
ui/gtk/image.h | file | annotate | diff | comparison | revisions |
--- a/ui/gtk/image.c Sun Mar 30 10:37:35 2025 +0200 +++ b/ui/gtk/image.c Sun Mar 30 10:45:56 2025 +0200 @@ -183,13 +183,13 @@ } static void imageviewer_reset(UiImageViewer *imgviewer) { - imgviewer->zoom = 0; imgviewer->isautoscaled = FALSE; imgviewer->transx = 0; imgviewer->transy; imgviewer->begin_transx = 0; imgviewer->begin_transy = 0; imgviewer->scale = 1; + imgviewer->user_scale = 1; } UIWIDGET ui_imageviewer_reset(UIWIDGET w) { @@ -250,9 +250,12 @@ } else { scale = imgviewer->scale; } + + imgviewer->user_scale = scale; } else { // user-adjusted scaling - scale = 1 + ((double)imgviewer->zoom / (double)imgviewer->zoom_scale); + //scale = 1 + ((double)imgviewer->zoom / (double)imgviewer->zoom_scale); + scale = imgviewer->user_scale; } dpixwidth *= scale; @@ -335,10 +338,11 @@ { UiImageViewer *imgviewer = userdata; if(imgviewer->useradjustable) { - imgviewer->zoom -= dy; - if(imgviewer->zoom < -imgviewer->zoom_scale) { - imgviewer->zoom = -imgviewer->zoom_scale; + double step = dy / imgviewer->zoom_scale; + if(imgviewer->user_scale - step > 0) { + imgviewer->user_scale -= step; } + imgviewer->scale = 0; // disable autoscale gtk_widget_queue_draw(imgviewer->widget); return TRUE;
--- a/ui/gtk/image.h Sun Mar 30 10:37:35 2025 +0200 +++ b/ui/gtk/image.h Sun Mar 30 10:45:56 2025 +0200 @@ -48,13 +48,13 @@ UiBool useradjustable; GdkPixbuf *pixbuf; - int zoom_scale; + double zoom_scale; int transx; int transy; int begin_transx; int begin_transy; - int zoom; UiBool isautoscaled; + double user_scale; double scale; } UiImageViewer;