Re: GtkImageView for EOG



On Mon, 2007-09-24 at 01:25 +0200, BJ�Lindqvist wrote:

> The three lost features are AFAICT, EOG:s delayed filtering,
> incremental zoom and fullscreen upscaling. If you zoom in on an image,
> EOG first displays the image using nearest filtering and triggers a
> timer which does the bilinear filtering when it times out.
> GtkImageView also uses much larger zoom increments that EogScrollView.
> Zooming goes from 100% to 150% to 200% while in EogScrollView you have
> to zoom in 15 times to increase the zoom by the same amount.

Looks like you just destroyed the secret sauce of EOG :)

* You want zooming to be smooth and fast.  Since machines are not fast
enough to do bilinear filtering of full-screen images, EOG does this in
two stages.  The first stage is a super-fast, synchronous pass with no
interpolation where the whole window is painted.  This tricks your eyes
into seeing the zoomed image instantly.  The second stage is an
asynchronous, interruptible, bilinear-interpolated repaint where the
window gets painted in small tiles.  If your machine is not fast enough
to finish repainting the whole window before you change the zoom factor
or scroll again, EOG will interrupt the painting process and resume it
when it can.  This is all done in the idle loop, with no timers
involved.  All that funny microtile code is to maintain an accurate view
of the dirty region.

* You want zooming to be gradual.  If you change the zoom factor by too
much, your brain will take some time to adjust its bearings after each
change:  "what was I looking at?".  If you change the zoom factor by too
little, you get annoyed that the "scroll wheel zooms too slowly".  This
is why web pages scroll by a few pixels with the wheel, not by a
page-ful.

* Fullscreen upscaling:  what do you mean?

  Federico



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]