Need help regarding heading into the Okular Feature: 388450

Dileep Sankhla sankhla.dileep96 at gmail.com
Sat Feb 17 18:20:13 UTC 2018


Thank you so much. The information made me understand okular much better
and its internals too. I will try my best to form a solution and if any
problem, will contact the developers here or IRC.
Thank you once again.

Dileep





‌

On Sat, Feb 17, 2018 at 4:13 PM, Tobias Deiminger <haxtibal at posteo.de>
wrote:

> Hi Dileep!
>
> @all: Please check if the following is correct
>
> But now the problem is I'm confused inside the large codebase
>>
>
> Don't worry! I guess this has happened to almost everybody here a few
> times :)
>
> I'm trying to get an idea from the annotations that remains glued to
>> the pageview and do scroll with the scrollbar
>>
>
> There's an critical difference between your popup annotation windows and
> the "glued annotations": The popup windows are real, independent widgets
> (AnnotWindow<-QFrame<-QWidget). But the glued ones are just "dumb"
> pixmaps mostly rendered by the poppler generator, while all logic & drawing
> is done by the (too-)mighty PageView (a QAbstractScrollArea widget). Imho,
> this disqualifies them a bit as "similar code example".
>
> Most "glued annotations" are rendered by the poppler library along with
> text and other PDF objects into, simplest case, one big QImage per page
> (see PDFGenerator::image [0], rendering thread). The page QImage is
> converted to a QPixmap and gets painted at once in
> PagePainter::paintCroppedPageOnPainter [1]. Okular just knows the
> annotations position rectangles, so that the PageView widget can overlay
> some basic UI functionality like tooltips and selection rectangles.
>
> There are interesting exceptions, e.g. stamp annotations. Poppler can't
> render them, so as kind of workaround [2] Okular does that on its own.
> Stamps are drawn in the seciton "5 -- MIXED FLOW. Draw ANNOTATIONS [OPAQUE
> ONES] on ACTIVE PAINTER" - "draw StampAnnotation" [3]. So, rendered by
> okular, scrolling with the page - that's a bit closer to what you want. But
> otoh, those stamps are still only dumb QPixmaps, handled by the PageView
> widget.
>
> Your popup note input dialog is a real independent widget (good so!) with
> user input logic + state. See class AnnotWindow, and
> PageView::openAnnotationWindow. This widget implements the "open state"
> of annotations, which is a term from PDF standard ISO 32000 [4]. Chapter
> 12.5.1, "Annotations - General" describes the open and closed state in
> detail, I think that's a good reading for you.
>
> Btw., I found README.internals.png [5] to be a brief and good overview of
> Okulars design when I first touched Okular.
>
> Sorry for not providing concrete solution hints. Hopefully it helped to at
> least gain more insight into the problem.
>
> Cheers
> Tobias
>
> [0] https://cgit.kde.org/okular.git/tree/generators/poppler/gene
> rator_pdf.cpp?h=v17.12.2#n950
> [1] https://cgit.kde.org/okular.git/tree/ui/pagepainter.cpp?h=v1
> 7.12.2#n265
> [2] https://bugs.kde.org/show_bug.cgi?id=383651
> [3] https://cgit.kde.org/okular.git/tree/ui/pagepainter.cpp?h=v1
> 7.12.2#n741
> [4] https://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/
> PDF32000_2008.pdf
> [5] https://cgit.kde.org/okular.git/tree/README.internals.png?h=v17.12.2
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/okular-devel/attachments/20180217/c344b6d1/attachment.html>


More information about the Okular-devel mailing list