[Libreoffice-commits] core.git: include/vcl svx/source vcl/qa vcl/source
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Wed Dec 2 08:08:35 UTC 2020
include/vcl/filter/PDFiumLibrary.hxx | 3 ++-
include/vcl/pdf/PDFSegmentType.hxx | 25 +++++++++++++++++++++++++
svx/source/svdraw/svdpdf.cxx | 15 ++++++++-------
vcl/qa/cppunit/pdfexport/pdfexport.cxx | 10 +++++-----
vcl/source/pdf/PDFiumLibrary.cxx | 14 +++++++++++++-
5 files changed, 53 insertions(+), 14 deletions(-)
New commits:
commit 0e072c8225e747267eeb915ac88b33b7201df210
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Tue Dec 1 21:02:54 2020 +0100
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Wed Dec 2 09:07:51 2020 +0100
pdfium: introduce an enum class for path segment types
Towards not including fpdf_edit.h in PDFiumLibrary client code.
Change-Id: Iffdd11b0613399f31a3ed383c22b7a91059b83de
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107011
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
diff --git a/include/vcl/filter/PDFiumLibrary.hxx b/include/vcl/filter/PDFiumLibrary.hxx
index 1fe0dd8d988a..497ef3e2d47e 100644
--- a/include/vcl/filter/PDFiumLibrary.hxx
+++ b/include/vcl/filter/PDFiumLibrary.hxx
@@ -31,6 +31,7 @@
#include <vcl/Scanline.hxx>
#include <vcl/pdf/PDFAnnotationSubType.hxx>
#include <vcl/pdf/PDFPageObjectType.hxx>
+#include <vcl/pdf/PDFSegmentType.hxx>
#include <fpdf_doc.h>
@@ -135,7 +136,7 @@ public:
FPDF_PATHSEGMENT getPointer() const { return mpPathSegment; }
basegfx::B2DPoint getPoint() const;
bool isClosed() const;
- int getType() const;
+ PDFSegmentType getType() const;
};
class VCL_DLLPUBLIC PDFiumPageObject final
diff --git a/include/vcl/pdf/PDFSegmentType.hxx b/include/vcl/pdf/PDFSegmentType.hxx
new file mode 100644
index 000000000000..98f74482e6f3
--- /dev/null
+++ b/include/vcl/pdf/PDFSegmentType.hxx
@@ -0,0 +1,25 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+
+#pragma once
+
+namespace vcl::pdf
+{
+enum class PDFSegmentType
+{
+ Unknown = -1,
+ Lineto = 0,
+ Bezierto = 1,
+ Moveto = 2,
+};
+
+} // namespace vcl::pdf
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index db83863b001a..47ea46c62801 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -964,14 +964,14 @@ void ImpSdrPdfImport::ImportPath(std::unique_ptr<vcl::pdf::PDFiumPageObject> con
aB2DPoint.setX(aPoint.X());
aB2DPoint.setY(aPoint.Y());
- const int nSegmentType = pPathSegment->getType();
- switch (nSegmentType)
+ const vcl::pdf::PDFSegmentType eSegmentType = pPathSegment->getType();
+ switch (eSegmentType)
{
- case FPDF_SEGMENT_LINETO:
+ case vcl::pdf::PDFSegmentType::Lineto:
aPoly.append(aB2DPoint);
break;
- case FPDF_SEGMENT_BEZIERTO:
+ case vcl::pdf::PDFSegmentType::Bezierto:
aBezier.emplace_back(aB2DPoint.getX(), aB2DPoint.getY());
if (aBezier.size() == 3)
{
@@ -980,7 +980,7 @@ void ImpSdrPdfImport::ImportPath(std::unique_ptr<vcl::pdf::PDFiumPageObject> con
}
break;
- case FPDF_SEGMENT_MOVETO:
+ case vcl::pdf::PDFSegmentType::Moveto:
// New Poly.
if (aPoly.count() > 0)
{
@@ -991,9 +991,10 @@ void ImpSdrPdfImport::ImportPath(std::unique_ptr<vcl::pdf::PDFiumPageObject> con
aPoly.append(aB2DPoint);
break;
- case FPDF_SEGMENT_UNKNOWN:
+ case vcl::pdf::PDFSegmentType::Unknown:
default:
- SAL_WARN("sd.filter", "Unknown path segment type in PDF: " << nSegmentType);
+ SAL_WARN("sd.filter", "Unknown path segment type in PDF: "
+ << static_cast<int>(eSegmentType));
break;
}
}
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 136c54aec41e..eaf905986928 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -861,35 +861,35 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf108963)
CPPUNIT_ASSERT_EQUAL(5, nSegments);
std::unique_ptr<vcl::pdf::PDFiumPathSegment> pSegment
= pPdfPageObject->getPathSegment(0);
- CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_MOVETO, pSegment->getType());
+ CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFSegmentType::Moveto, pSegment->getType());
basegfx::B2DPoint aPoint = pSegment->getPoint();
CPPUNIT_ASSERT_EQUAL(245395, static_cast<int>(round(aPoint.getX() * 1000)));
CPPUNIT_ASSERT_EQUAL(244261, static_cast<int>(round(aPoint.getY() * 1000)));
CPPUNIT_ASSERT(!pSegment->isClosed());
pSegment = pPdfPageObject->getPathSegment(1);
- CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_LINETO, pSegment->getType());
+ CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFSegmentType::Lineto, pSegment->getType());
aPoint = pSegment->getPoint();
CPPUNIT_ASSERT_EQUAL(275102, static_cast<int>(round(aPoint.getX() * 1000)));
CPPUNIT_ASSERT_EQUAL(267618, static_cast<int>(round(aPoint.getY() * 1000)));
CPPUNIT_ASSERT(!pSegment->isClosed());
pSegment = pPdfPageObject->getPathSegment(2);
- CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_LINETO, pSegment->getType());
+ CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFSegmentType::Lineto, pSegment->getType());
aPoint = pSegment->getPoint();
CPPUNIT_ASSERT_EQUAL(287518, static_cast<int>(round(aPoint.getX() * 1000)));
CPPUNIT_ASSERT_EQUAL(251829, static_cast<int>(round(aPoint.getY() * 1000)));
CPPUNIT_ASSERT(!pSegment->isClosed());
pSegment = pPdfPageObject->getPathSegment(3);
- CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_LINETO, pSegment->getType());
+ CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFSegmentType::Lineto, pSegment->getType());
aPoint = pSegment->getPoint();
CPPUNIT_ASSERT_EQUAL(257839, static_cast<int>(round(aPoint.getX() * 1000)));
CPPUNIT_ASSERT_EQUAL(228472, static_cast<int>(round(aPoint.getY() * 1000)));
CPPUNIT_ASSERT(!pSegment->isClosed());
pSegment = pPdfPageObject->getPathSegment(4);
- CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_LINETO, pSegment->getType());
+ CPPUNIT_ASSERT_EQUAL(vcl::pdf::PDFSegmentType::Lineto, pSegment->getType());
aPoint = pSegment->getPoint();
CPPUNIT_ASSERT_EQUAL(245395, static_cast<int>(round(aPoint.getX() * 1000)));
CPPUNIT_ASSERT_EQUAL(244261, static_cast<int>(round(aPoint.getY() * 1000)));
diff --git a/vcl/source/pdf/PDFiumLibrary.cxx b/vcl/source/pdf/PDFiumLibrary.cxx
index 5c308d3e772b..0952c9a5d3e8 100644
--- a/vcl/source/pdf/PDFiumLibrary.cxx
+++ b/vcl/source/pdf/PDFiumLibrary.cxx
@@ -42,6 +42,15 @@ static_assert(static_cast<int>(vcl::pdf::PDFPageObjectType::Shading) == FPDF_PAG
static_assert(static_cast<int>(vcl::pdf::PDFPageObjectType::Form) == FPDF_PAGEOBJ_FORM,
"PDFPageObjectType::Form value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFSegmentType::Unknown) == FPDF_SEGMENT_UNKNOWN,
+ "PDFSegmentType::Unknown value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFSegmentType::Lineto) == FPDF_SEGMENT_LINETO,
+ "PDFSegmentType::Lineto value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFSegmentType::Bezierto) == FPDF_SEGMENT_BEZIERTO,
+ "PDFSegmentType::Bezierto value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFSegmentType::Moveto) == FPDF_SEGMENT_MOVETO,
+ "PDFSegmentType::Moveto value mismatch");
+
namespace
{
/// Callback class to be used with FPDF_SaveWithVersion().
@@ -604,7 +613,10 @@ basegfx::B2DPoint PDFiumPathSegment::getPoint() const
bool PDFiumPathSegment::isClosed() const { return FPDFPathSegment_GetClose(mpPathSegment); }
-int PDFiumPathSegment::getType() const { return FPDFPathSegment_GetType(mpPathSegment); }
+PDFSegmentType PDFiumPathSegment::getType() const
+{
+ return static_cast<PDFSegmentType>(FPDFPathSegment_GetType(mpPathSegment));
+}
PDFiumBitmap::PDFiumBitmap(FPDF_BITMAP pBitmap)
: mpBitmap(pBitmap)
More information about the Libreoffice-commits
mailing list