summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2020-10-15 15:39:16 +0200
committerTomaž Vajngerl <quikee@gmail.com>2020-10-18 21:23:42 +0200
commit8604610e193c980fe5a9339b677c7a0cfb0eee76 (patch)
tree47d8ac0589d4cafb148082af2ad5ac6a4c33655e
parent354080769f34207e3c850c61e62e8af346964463 (diff)
pdfium: simplify point unit conversion to HMM for annotations
Change-Id: Ied3721d58d49736c78a4fa5181b92beb1dff7728 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104378 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
-rw-r--r--vcl/source/filter/ipdf/pdfread.cxx61
1 files changed, 28 insertions, 33 deletions
diff --git a/vcl/source/filter/ipdf/pdfread.cxx b/vcl/source/filter/ipdf/pdfread.cxx
index 3ccad9b10ecc..db6c9d1bdd31 100644
--- a/vcl/source/filter/ipdf/pdfread.cxx
+++ b/vcl/source/filter/ipdf/pdfread.cxx
@@ -243,6 +243,14 @@ bool ImportPDF(SvStream& rStream, Graphic& rGraphic)
#if HAVE_FEATURE_PDFIUM
namespace
{
+basegfx::B2DPoint convertFromPDFInternalToHMM(basegfx::B2DSize const& rInputPoint,
+ basegfx::B2DSize const& rPageSize)
+{
+ double x = convertPointToMm100(rInputPoint.getX());
+ double y = convertPointToMm100(rPageSize.getY() - rInputPoint.getY());
+ return basegfx::B2DPoint(x, y);
+}
+
std::vector<PDFGraphicAnnotation>
findAnnotations(const std::unique_ptr<vcl::pdf::PDFiumPage>& pPage, basegfx::B2DSize aPageSize)
{
@@ -303,9 +311,8 @@ findAnnotations(const std::unique_ptr<vcl::pdf::PDFiumPage>& pPage, basegfx::B2D
rPDFGraphicAnnotation.mpMarker = pMarker;
for (auto const& rVertex : rVertices)
{
- double x = convertPointToMm100(rVertex.getX());
- double y = convertPointToMm100(aPageSize.getY() - rVertex.getY());
- pMarker->maPolygon.append({ x, y });
+ auto aPoint = convertFromPDFInternalToHMM(rVertex, aPageSize);
+ pMarker->maPolygon.append(aPoint);
}
pMarker->maPolygon.setClosed(true);
pMarker->mnWidth = convertPointToMm100(pAnnotation->getBorderWidth());
@@ -341,9 +348,8 @@ findAnnotations(const std::unique_ptr<vcl::pdf::PDFiumPage>& pPage, basegfx::B2D
basegfx::B2DPolygon aPolygon;
for (auto const& rVertex : rStrokes)
{
- double x = convertPointToMm100(rVertex.getX());
- double y = convertPointToMm100(aPageSize.getY() - rVertex.getY());
- aPolygon.append({ x, y });
+ auto aPoint = convertFromPDFInternalToHMM(rVertex, aPageSize);
+ aPolygon.append(aPoint);
}
pMarker->maStrokes.push_back(aPolygon);
}
@@ -366,29 +372,21 @@ findAnnotations(const std::unique_ptr<vcl::pdf::PDFiumPage>& pPage, basegfx::B2D
auto aAttachmentPoints = pAnnotation->getAttachmentPoints(i);
if (!aAttachmentPoints.empty())
{
- double x, y;
basegfx::B2DPolygon aPolygon;
aPolygon.setClosed(true);
- x = convertPointToMm100(aAttachmentPoints[0].getX());
- y = convertPointToMm100(aPageSize.getY()
- - aAttachmentPoints[0].getY());
- aPolygon.append({ x, y });
-
- x = convertPointToMm100(aAttachmentPoints[1].getX());
- y = convertPointToMm100(aPageSize.getY()
- - aAttachmentPoints[1].getY());
- aPolygon.append({ x, y });
-
- x = convertPointToMm100(aAttachmentPoints[3].getX());
- y = convertPointToMm100(aPageSize.getY()
- - aAttachmentPoints[3].getY());
- aPolygon.append({ x, y });
-
- x = convertPointToMm100(aAttachmentPoints[2].getX());
- y = convertPointToMm100(aPageSize.getY()
- - aAttachmentPoints[2].getY());
- aPolygon.append({ x, y });
+ auto aPoint1
+ = convertFromPDFInternalToHMM(aAttachmentPoints[0], aPageSize);
+ aPolygon.append(aPoint1);
+ auto aPoint2
+ = convertFromPDFInternalToHMM(aAttachmentPoints[1], aPageSize);
+ aPolygon.append(aPoint2);
+ auto aPoint3
+ = convertFromPDFInternalToHMM(aAttachmentPoints[3], aPageSize);
+ aPolygon.append(aPoint3);
+ auto aPoint4
+ = convertFromPDFInternalToHMM(aAttachmentPoints[2], aPageSize);
+ aPolygon.append(aPoint4);
pMarker->maQuads.push_back(aPolygon);
}
@@ -400,17 +398,14 @@ findAnnotations(const std::unique_ptr<vcl::pdf::PDFiumPage>& pPage, basegfx::B2D
auto const& rLineGeometry = pAnnotation->getLineGeometry();
if (!rLineGeometry.empty())
{
- double x, y;
auto pMarker = std::make_shared<vcl::pdf::PDFAnnotationMarkerLine>();
rPDFGraphicAnnotation.mpMarker = pMarker;
- x = convertPointToMm100(rLineGeometry[0].getX());
- y = convertPointToMm100(aPageSize.getY() - rLineGeometry[0].getY());
- pMarker->maLineStart = basegfx::B2DPoint(x, y);
+ auto aPoint1 = convertFromPDFInternalToHMM(rLineGeometry[0], aPageSize);
+ pMarker->maLineStart = aPoint1;
- x = convertPointToMm100(rLineGeometry[1].getX());
- y = convertPointToMm100(aPageSize.getY() - rLineGeometry[1].getY());
- pMarker->maLineEnd = basegfx::B2DPoint(x, y);
+ auto aPoint2 = convertFromPDFInternalToHMM(rLineGeometry[1], aPageSize);
+ pMarker->maLineEnd = aPoint2;
float fWidth = pAnnotation->getBorderWidth();
pMarker->mnWidth = convertPointToMm100(fWidth);