[Okular-devel] Page scaling filters

Nicolas F. kdelists at fratti.ch
Mon Mar 14 13:58:14 UTC 2016


Hi,

I've noticed that Okular seems to do page scaling using something bad
like bilinear. I'm interested in improving this by providing the option
to choose (slower) high-quality filters. I'm starting with re-examining
the current page drawing code and determining how to re-factor it to
account for this, and have a few questions.

1. What does PagePainter::scalePixmapOnImage do, and why? It seems to
just copy data from a pixmap to an image. Is this function even relevant?

2. PagePainter::paintCroppedPageOnPainter has a lot of code paths for
what one would assume should be a fairly simple operation. Is there a
historical reason for its complexity? I see it reimplements the entire
thing at least once for when it's not using a backbuffer.

3. PagePainter::paintCroppedPageOnPainter paints on QImage objects which
means the software rasteriser will be used. Since presumably nothing is
done with those images other than then being displayed, wouldn't it be
better to use a QOpenGLPaintDevice?

Thanks for any answers.


More information about the Okular-devel mailing list