From d13b18af322acbcd29bb15189e0ab41c43e4c3bb Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 16 Sep 2020 23:46:55 +0200 Subject: [PATCH] poppler: Convert Caret annotations via C++ Instead of via the magic XML cycle of Poppler::AnnotationUtils::storeAnnotation + Okular::AnnotationUtils::createAnnotation --- generators/poppler/annots.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/generators/poppler/annots.cpp b/generators/poppler/annots.cpp index c11119a6f..07c9e5890 100644 --- a/generators/poppler/annots.cpp +++ b/generators/poppler/annots.cpp @@ -442,6 +442,20 @@ static Okular::HighlightAnnotation::HighlightType popplerToOkular(Poppler::Highl return Okular::HighlightAnnotation::Highlight; } +static Okular::CaretAnnotation::CaretSymbol popplerToOkular(Poppler::CaretAnnotation::CaretSymbol pcs) +{ + switch (pcs) { + case Poppler::CaretAnnotation::None: + return Okular::CaretAnnotation::None; + case Poppler::CaretAnnotation::P: + return Okular::CaretAnnotation::P; + default: + qWarning() << Q_FUNC_INFO << "unknown value" << pcs; + } + + return Okular::CaretAnnotation::None; +} + static Okular::Annotation *createAnnotationFromPopplerAnnotation(Poppler::TextAnnotation *popplerAnnotation) { Okular::TextAnnotation *oTextAnn = new Okular::TextAnnotation(); @@ -540,6 +554,15 @@ static Okular::Annotation *createAnnotationFromPopplerAnnotation(const Poppler:: return oInkAnn; } +static Okular::Annotation *createAnnotationFromPopplerAnnotation(const Poppler::CaretAnnotation *popplerAnnotation) +{ + Okular::CaretAnnotation *oCaretAnn = new Okular::CaretAnnotation(); + + oCaretAnn->setCaretSymbol(popplerToOkular(popplerAnnotation->caretSymbol())); + + return oCaretAnn; +} + Okular::Annotation *createAnnotationFromPopplerAnnotation(Poppler::Annotation *popplerAnnotation, const Poppler::Page &popplerPage, bool *doDelete) { Okular::Annotation *okularAnnotation = nullptr; @@ -642,9 +665,13 @@ Okular::Annotation *createAnnotationFromPopplerAnnotation(Poppler::Annotation *p okularAnnotation = createAnnotationFromPopplerAnnotation(static_cast(popplerAnnotation)); break; } - case Poppler::Annotation::ACaret: + case Poppler::Annotation::ACaret: { externallyDrawn = true; - /* fallthrough */ + tieToOkularAnn = true; + *doDelete = false; + okularAnnotation = createAnnotationFromPopplerAnnotation(static_cast(popplerAnnotation)); + break; + } case Poppler::Annotation::AStamp: tieToOkularAnn = true; *doDelete = false;