> I saw that zoom has been changed following bug 124073. After trying
> it, I did not liked it. Personally I think it gives too much
> importance to extreme zooms, forgeting most people work around
> 100%. 4000 to 20 pix images in a reasonable size monitor is what I
> normally see, not 40000 pix or people with one pixel painted as
> 128*128 screen pixels. I also did not liked that it quickly went to
> fractional numbers in which one of X:Y is not 1, cos it does not look
> very pleasing due the fast way Gimp interpolates when displaying.

I think it is very important, that zoom behaves homogenous, regardless
of the actual zoom step. So the user will have a consistent experience
when he works with low and high resolution images (but see below).

> So I coded a different version that gives a full integer range in the
> 16:1 to 1:16, plus two extra steps near 1:1 (it is a special point, so
> I made the extra code an improvement and not only a way to make it
> work), and for extreme zooms it gives integers but reduced number.

looking at your patch I believe it is unnecessary complicated, because
it tries to deal with the problem on the fractions level.

I'd like to propose an alternate approach.

Let Gimpdisplayshell have a percentage (float), that describes the
desired zoom ratio as exact as possible. This is the value that gets
manipulated in the various zoom functions. The fraction necessary to
do the actual zooming of the image would be calculated from that
in the display code. When we stop exposing this fraction to the user
interface we no longer have to worry about "nice" fractions.

With this approach it is trivial to implement different approaches
for the zooming strategy: "homogenous zooming" would multiply/divide
by sqrt(2), "preset zooming" would have a lookup table with percentages
for the different zoom steps and move back/forward [1] in it (this also
easily adresses the "nice looking zoom levels" problem, simply select
the percentages so that they result in the desired fractions). The user
then could e.g. select the strategy in the preferences.

I believe this could simplify the whole issue a lot.


[1] it might be useful to guarantee a minimum zoom step since it does
not make much sense to scale from 102% down to 100%. But this also is
trivial to implement.

Gimp-developer mailing list

Reply via email to