X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=blobdiff_plain;f=src%2Fpixbuf-renderer.c;h=54a943f51da43710de4845048e4789c362fcab84;hp=3653b41e1005b026ff5541cb756b5128fbd4d22f;hb=1d056e1fb062c34b22b4d5f60b7893b128b4fa41;hpb=6c10b619698d68cfc9ce6c22b0a1366f028187eb diff --git a/src/pixbuf-renderer.c b/src/pixbuf-renderer.c index 3653b41e..54a943f5 100644 --- a/src/pixbuf-renderer.c +++ b/src/pixbuf-renderer.c @@ -1259,40 +1259,68 @@ static void pr_zoom_adjust_real(PixbufRenderer *pr, gdouble increment, } } - if (increment < 0.0) + if (options->image.zoom_style == ZOOM_GEOMETRIC) { - if (zoom >= 1.0) + if (increment < 0.0) { - if (zoom / -(increment - 1.0) < 1.0) + if (zoom >= 1.0) { - zoom = 1.0 / (zoom / (increment - 1.0)); + if (zoom / -(increment - 1.0) < 1.0) + { + zoom = 1.0 / (zoom / (increment - 1.0)); + } + else + { + zoom = zoom / -(increment - 1.0) ; + } } else { - zoom = zoom / -(increment - 1.0) ; + zoom = zoom * -(increment - 1.0); } } else { - zoom = zoom * -(increment - 1.0); + if (zoom <= -1.0 ) + { + if (zoom / (increment + 1.0) > -1.0) + { + zoom = -(1.0 / (zoom / (increment + 1.0))); + } + else + { + zoom = zoom / (increment + 1.0) ; + } + } + else + { + zoom = zoom * (increment + 1.0); + } } } else { - if (zoom <= -1.0 ) + if (increment < 0.0) { - if (zoom / (increment + 1.0) > -1.0) + if (zoom >= 1.0 && zoom + increment < 1.0) { - zoom = -(1.0 / (zoom / (increment + 1.0))); + zoom = zoom + increment - 2.0; } else { - zoom = zoom / (increment + 1.0) ; + zoom = zoom + increment; } } else { - zoom = zoom * (increment + 1.0); + if (zoom <= -1.0 && zoom + increment > -1.0) + { + zoom = zoom + increment + 2.0; + } + else + { + zoom = zoom + increment; + } } }