[Libreoffice-commits] core.git: vcl/source

Tomaž Vajngerl (via logerrit) logerrit at kemper.freedesktop.org
Sun Sep 6 12:01:53 UTC 2020


 vcl/source/filter/ipdf/pdfread.cxx |   97 ++++++++++++++++++++-----------------
 1 file changed, 54 insertions(+), 43 deletions(-)

New commits:
commit 6d275917944c274a22620c2c19880eb8e94f2558
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Wed Sep 2 17:04:27 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Sun Sep 6 14:01:07 2020 +0200

    extract PDF import for annotations to a separate function
    
    Change-Id: Ibaabaee5e1e6416f1ac518ff846b13e6c3f29cad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102091
    Tested-by: Tomaž Vajngerl <quikee at gmail.com>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/vcl/source/filter/ipdf/pdfread.cxx b/vcl/source/filter/ipdf/pdfread.cxx
index 01ab6d3625cd..190644d91d31 100644
--- a/vcl/source/filter/ipdf/pdfread.cxx
+++ b/vcl/source/filter/ipdf/pdfread.cxx
@@ -226,6 +226,58 @@ bool ImportPDF(SvStream& rStream, Graphic& rGraphic)
     return true;
 }
 
+namespace
+{
+std::vector<PDFGraphicAnnotation> findAnnotations(std::unique_ptr<vcl::pdf::PDFiumPage>& pPage,
+                                                  basegfx::B2DSize aPageSize)
+{
+    std::vector<PDFGraphicAnnotation> aPDFGraphicAnnotations;
+    for (int nAnnotation = 0; nAnnotation < pPage->getAnnotationCount(); nAnnotation++)
+    {
+        auto pAnnotation = pPage->getAnnotation(nAnnotation);
+        if (pAnnotation)
+        {
+            auto eSubtype = pAnnotation->getSubType();
+
+            if (eSubtype == vcl::pdf::PDFAnnotationSubType::Text
+                && pAnnotation->hasKey(vcl::pdf::constDictionaryKeyPopup))
+            {
+                OUString sAuthor = pAnnotation->getString(vcl::pdf::constDictionaryKeyTitle);
+                OUString sText = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
+                auto pPopupAnnotation = pAnnotation->getLinked(vcl::pdf::constDictionaryKeyPopup);
+
+                basegfx::B2DRectangle rRectangle = pAnnotation->getRectangle();
+                basegfx::B2DRectangle rRectangleHMM(
+                    convertPointToMm100(rRectangle.getMinX()),
+                    convertPointToMm100(aPageSize.getY() - rRectangle.getMinY()),
+                    convertPointToMm100(rRectangle.getMaxX()),
+                    convertPointToMm100(aPageSize.getY() - rRectangle.getMaxY()));
+
+                OUString sDateTimeString
+                    = pAnnotation->getString(vcl::pdf::constDictionaryKeyModificationDate);
+                OUString sISO8601String = vcl::pdf::convertPdfDateToISO8601(sDateTimeString);
+
+                css::util::DateTime aDateTime;
+                if (!sISO8601String.isEmpty())
+                {
+                    utl::ISO8601parseDateTime(sISO8601String, aDateTime);
+                }
+
+                PDFGraphicAnnotation aPDFGraphicAnnotation;
+                aPDFGraphicAnnotation.maRectangle = rRectangleHMM;
+                aPDFGraphicAnnotation.maAuthor = sAuthor;
+                aPDFGraphicAnnotation.maText = sText;
+                aPDFGraphicAnnotation.maDateTime = aDateTime;
+                aPDFGraphicAnnotation.meSubType = eSubtype;
+                aPDFGraphicAnnotations.push_back(aPDFGraphicAnnotation);
+            }
+        }
+    }
+    return aPDFGraphicAnnotations;
+}
+
+} // end anonymous namespace
+
 size_t ImportPDFUnloaded(const OUString& rURL, std::vector<PDFGraphicResult>& rGraphics)
 {
 #if HAVE_FEATURE_PDFIUM
@@ -282,49 +334,8 @@ size_t ImportPDFUnloaded(const OUString& rURL, std::vector<PDFGraphicResult>& rG
 
         auto pPage = pPdfDocument->openPage(nPageIndex);
 
-        std::vector<PDFGraphicAnnotation> aPDFGraphicAnnotations;
-        for (int nAnnotation = 0; nAnnotation < pPage->getAnnotationCount(); nAnnotation++)
-        {
-            auto pAnnotation = pPage->getAnnotation(nAnnotation);
-            if (pAnnotation)
-            {
-                auto eSubtype = pAnnotation->getSubType();
-
-                if (eSubtype == vcl::pdf::PDFAnnotationSubType::Text
-                    && pAnnotation->hasKey(vcl::pdf::constDictionaryKeyPopup))
-                {
-                    OUString sAuthor = pAnnotation->getString(vcl::pdf::constDictionaryKeyTitle);
-                    OUString sText = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
-                    auto pPopupAnnotation
-                        = pAnnotation->getLinked(vcl::pdf::constDictionaryKeyPopup);
-
-                    basegfx::B2DRectangle rRectangle = pAnnotation->getRectangle();
-                    basegfx::B2DRectangle rRectangleHMM(
-                        convertPointToMm100(rRectangle.getMinX()),
-                        convertPointToMm100(aPageSize.getY() - rRectangle.getMinY()),
-                        convertPointToMm100(rRectangle.getMaxX()),
-                        convertPointToMm100(aPageSize.getY() - rRectangle.getMaxY()));
-
-                    OUString sDateTimeString
-                        = pAnnotation->getString(vcl::pdf::constDictionaryKeyModificationDate);
-                    OUString sISO8601String = vcl::pdf::convertPdfDateToISO8601(sDateTimeString);
-
-                    css::util::DateTime aDateTime;
-                    if (!sISO8601String.isEmpty())
-                    {
-                        utl::ISO8601parseDateTime(sISO8601String, aDateTime);
-                    }
-
-                    PDFGraphicAnnotation aPDFGraphicAnnotation;
-                    aPDFGraphicAnnotation.maRectangle = rRectangleHMM;
-                    aPDFGraphicAnnotation.maAuthor = sAuthor;
-                    aPDFGraphicAnnotation.maText = sText;
-                    aPDFGraphicAnnotation.maDateTime = aDateTime;
-                    aPDFGraphicAnnotation.meSubType = eSubtype;
-                    aPDFGraphicAnnotations.push_back(aPDFGraphicAnnotation);
-                }
-            }
-        }
+        std::vector<PDFGraphicAnnotation> aPDFGraphicAnnotations
+            = findAnnotations(pPage, aPageSize);
 
         rGraphics.emplace_back(std::move(aGraphic), Size(nPageWidth, nPageHeight),
                                aPDFGraphicAnnotations);


More information about the Libreoffice-commits mailing list