[Libreoffice-commits] core.git: include/vcl sd/source vcl/source
Tomaž Vajngerl (via logerrit)
logerrit at kemper.freedesktop.org
Sun Oct 18 19:23:54 UTC 2020
include/vcl/pdf/PDFAnnotationMarker.hxx | 6 ++++++
sd/source/filter/pdf/sdpdffilter.cxx | 13 +++++++++++++
vcl/source/filter/ipdf/pdfread.cxx | 24 +++++++++++++++++++++++-
3 files changed, 42 insertions(+), 1 deletion(-)
New commits:
commit 354080769f34207e3c850c61e62e8af346964463
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Thu Oct 15 14:35:26 2020 +0200
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Sun Oct 18 21:23:10 2020 +0200
sd: support line PDF annot. as custom marker
This renderes the line marker, but line start and end symbol is
for now not supported.
Change-Id: Ibf099f54b4bc047b22dae32c705982c8cb24388b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104377
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/include/vcl/pdf/PDFAnnotationMarker.hxx b/include/vcl/pdf/PDFAnnotationMarker.hxx
index 2c525f85cbd5..d797115437e9 100644
--- a/include/vcl/pdf/PDFAnnotationMarker.hxx
+++ b/include/vcl/pdf/PDFAnnotationMarker.hxx
@@ -45,6 +45,12 @@ struct VCL_DLLPUBLIC PDFAnnotationMarkerPolygon : public PDFAnnotationMarker
basegfx::B2DPolygon maPolygon;
};
+struct VCL_DLLPUBLIC PDFAnnotationMarkerLine : public PDFAnnotationMarker
+{
+ basegfx::B2DPoint maLineStart;
+ basegfx::B2DPoint maLineEnd;
+};
+
enum class PDFTextMarkerType
{
Highlight,
diff --git a/sd/source/filter/pdf/sdpdffilter.cxx b/sd/source/filter/pdf/sdpdffilter.cxx
index e903c015d4be..4b52f9e4b574 100644
--- a/sd/source/filter/pdf/sdpdffilter.cxx
+++ b/sd/source/filter/pdf/sdpdffilter.cxx
@@ -170,6 +170,19 @@ bool SdPdfFilter::Import()
if (rCustomAnnotationMarker.maFillColor.GetTransparency() == 0)
rCustomAnnotationMarker.maFillColor.SetTransparency(0x90);
}
+ else if (rPDFAnnotation.meSubType == vcl::pdf::PDFAnnotationSubType::Line)
+ {
+ auto* pMarker = static_cast<vcl::pdf::PDFAnnotationMarkerLine*>(
+ rPDFAnnotation.mpMarker.get());
+
+ basegfx::B2DPolygon aPoly;
+ aPoly.append(pMarker->maLineStart);
+ aPoly.append(pMarker->maLineEnd);
+ rCustomAnnotationMarker.maPolygons.push_back(aPoly);
+
+ rCustomAnnotationMarker.mnLineWidth = pMarker->mnWidth;
+ rCustomAnnotationMarker.maFillColor = COL_TRANSPARENT;
+ }
}
}
}
diff --git a/vcl/source/filter/ipdf/pdfread.cxx b/vcl/source/filter/ipdf/pdfread.cxx
index 9be28fcf0c9b..3ccad9b10ecc 100644
--- a/vcl/source/filter/ipdf/pdfread.cxx
+++ b/vcl/source/filter/ipdf/pdfread.cxx
@@ -259,7 +259,8 @@ findAnnotations(const std::unique_ptr<vcl::pdf::PDFiumPage>& pPage, basegfx::B2D
|| eSubtype == vcl::pdf::PDFAnnotationSubType::Circle
|| eSubtype == vcl::pdf::PDFAnnotationSubType::Square
|| eSubtype == vcl::pdf::PDFAnnotationSubType::Ink
- || eSubtype == vcl::pdf::PDFAnnotationSubType::Highlight)
+ || eSubtype == vcl::pdf::PDFAnnotationSubType::Highlight
+ || eSubtype == vcl::pdf::PDFAnnotationSubType::Line)
{
OUString sAuthor = pAnnotation->getString(vcl::pdf::constDictionaryKeyTitle);
OUString sText = pAnnotation->getString(vcl::pdf::constDictionaryKeyContents);
@@ -394,6 +395,27 @@ findAnnotations(const std::unique_ptr<vcl::pdf::PDFiumPage>& pPage, basegfx::B2D
}
}
}
+ else if (eSubtype == vcl::pdf::PDFAnnotationSubType::Line)
+ {
+ 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);
+
+ x = convertPointToMm100(rLineGeometry[1].getX());
+ y = convertPointToMm100(aPageSize.getY() - rLineGeometry[1].getY());
+ pMarker->maLineEnd = basegfx::B2DPoint(x, y);
+
+ float fWidth = pAnnotation->getBorderWidth();
+ pMarker->mnWidth = convertPointToMm100(fWidth);
+ }
+ }
}
}
}
More information about the Libreoffice-commits
mailing list