ui/gtk/image.c

changeset 533
951b92ce3708
parent 532
80a6d8923d75
child 547
631162b266d1
equal deleted inserted replaced
532:80a6d8923d75 533:951b92ce3708
181 181
182 return toplevel; 182 return toplevel;
183 } 183 }
184 184
185 static void imageviewer_reset(UiImageViewer *imgviewer) { 185 static void imageviewer_reset(UiImageViewer *imgviewer) {
186 imgviewer->zoom = 0;
187 imgviewer->isautoscaled = FALSE; 186 imgviewer->isautoscaled = FALSE;
188 imgviewer->transx = 0; 187 imgviewer->transx = 0;
189 imgviewer->transy; 188 imgviewer->transy;
190 imgviewer->begin_transx = 0; 189 imgviewer->begin_transx = 0;
191 imgviewer->begin_transy = 0; 190 imgviewer->begin_transy = 0;
192 imgviewer->scale = 1; 191 imgviewer->scale = 1;
192 imgviewer->user_scale = 1;
193 } 193 }
194 194
195 UIWIDGET ui_imageviewer_reset(UIWIDGET w) { 195 UIWIDGET ui_imageviewer_reset(UIWIDGET w) {
196 UiImageViewer *imgviewer = g_object_get_data(G_OBJECT(w), "uiimageviewer"); 196 UiImageViewer *imgviewer = g_object_get_data(G_OBJECT(w), "uiimageviewer");
197 if(imgviewer) { 197 if(imgviewer) {
248 248
249 imgviewer->scale = scale; 249 imgviewer->scale = scale;
250 } else { 250 } else {
251 scale = imgviewer->scale; 251 scale = imgviewer->scale;
252 } 252 }
253
254 imgviewer->user_scale = scale;
253 } else { 255 } else {
254 // user-adjusted scaling 256 // user-adjusted scaling
255 scale = 1 + ((double)imgviewer->zoom / (double)imgviewer->zoom_scale); 257 //scale = 1 + ((double)imgviewer->zoom / (double)imgviewer->zoom_scale);
258 scale = imgviewer->user_scale;
256 } 259 }
257 260
258 dpixwidth *= scale; 261 dpixwidth *= scale;
259 dpixheight *= scale; 262 dpixheight *= scale;
260 double x = (dwidth - dpixwidth) / 2; 263 double x = (dwidth - dpixwidth) / 2;
333 gdouble dy, 336 gdouble dy,
334 gpointer userdata) 337 gpointer userdata)
335 { 338 {
336 UiImageViewer *imgviewer = userdata; 339 UiImageViewer *imgviewer = userdata;
337 if(imgviewer->useradjustable) { 340 if(imgviewer->useradjustable) {
338 imgviewer->zoom -= dy; 341 double step = dy / imgviewer->zoom_scale;
339 if(imgviewer->zoom < -imgviewer->zoom_scale) { 342 if(imgviewer->user_scale - step > 0) {
340 imgviewer->zoom = -imgviewer->zoom_scale; 343 imgviewer->user_scale -= step;
341 } 344 }
345
342 imgviewer->scale = 0; // disable autoscale 346 imgviewer->scale = 0; // disable autoscale
343 gtk_widget_queue_draw(imgviewer->widget); 347 gtk_widget_queue_draw(imgviewer->widget);
344 return TRUE; 348 return TRUE;
345 } 349 }
346 return FALSE; 350 return FALSE;

mercurial