[Libreoffice-commits] core.git: include/vcl vcl/source
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Fri Feb 12 08:06:49 UTC 2021
include/vcl/filter/PDFiumLibrary.hxx | 23 ++++++--------------
vcl/source/pdf/PDFiumLibrary.cxx | 40 ++++++++++++++++++++++++++++-------
2 files changed, 39 insertions(+), 24 deletions(-)
New commits:
commit 7ff14c0f79d8400ec2fe29350b0d9bc0cd51f957
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Thu Feb 11 20:40:26 2021 +0100
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Fri Feb 12 09:06:03 2021 +0100
pdfium: eliminate FPDF_TEXTPAGE from the public header
All usage goes via the PDFiumTextPage interface now.
Change-Id: Ied9d7fc9e1cf91b6a2feca63264993fd77348bed
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110792
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 5908f01e4ab0..eea1be960291 100644
--- a/include/vcl/filter/PDFiumLibrary.hxx
+++ b/include/vcl/filter/PDFiumLibrary.hxx
@@ -161,27 +161,18 @@ public:
virtual int getSearchCount() = 0;
};
-class VCL_DLLPUBLIC PDFiumTextPage final
+class VCL_DLLPUBLIC PDFiumTextPage
{
-private:
- FPDF_TEXTPAGE mpTextPage;
-
- PDFiumTextPage(const PDFiumTextPage&) = delete;
- PDFiumTextPage& operator=(const PDFiumTextPage&) = delete;
-
public:
- PDFiumTextPage(FPDF_TEXTPAGE pTextPage);
- ~PDFiumTextPage();
-
- FPDF_TEXTPAGE getPointer() { return mpTextPage; }
+ virtual ~PDFiumTextPage() = default;
- int countChars();
- unsigned int getUnicode(int index);
- std::unique_ptr<PDFiumSearchHandle> findStart(const OUString& rFindWhat, PDFFindFlags nFlags,
- sal_Int32 nStartIndex);
+ virtual int countChars() = 0;
+ virtual unsigned int getUnicode(int index) = 0;
+ virtual std::unique_ptr<PDFiumSearchHandle>
+ findStart(const OUString& rFindWhat, PDFFindFlags nFlags, sal_Int32 nStartIndex) = 0;
/// Returned rect is no longer upside down and is in mm100.
- basegfx::B2DRectangle getCharBox(int nIndex, double fPageHeight);
+ virtual basegfx::B2DRectangle getCharBox(int nIndex, double fPageHeight) = 0;
};
class VCL_DLLPUBLIC PDFiumPage final
diff --git a/vcl/source/pdf/PDFiumLibrary.cxx b/vcl/source/pdf/PDFiumLibrary.cxx
index c14a73ddd469..275b5f5e21be 100644
--- a/vcl/source/pdf/PDFiumLibrary.cxx
+++ b/vcl/source/pdf/PDFiumLibrary.cxx
@@ -268,6 +268,29 @@ public:
int getSearchResultIndex() override;
int getSearchCount() override;
};
+
+class PDFiumTextPageImpl final : public PDFiumTextPage
+{
+private:
+ FPDF_TEXTPAGE mpTextPage;
+
+ PDFiumTextPageImpl(const PDFiumTextPageImpl&) = delete;
+ PDFiumTextPageImpl& operator=(const PDFiumTextPageImpl&) = delete;
+
+public:
+ PDFiumTextPageImpl(FPDF_TEXTPAGE pTextPage);
+ ~PDFiumTextPageImpl();
+
+ FPDF_TEXTPAGE getPointer() { return mpTextPage; }
+
+ int countChars() override;
+ unsigned int getUnicode(int index) override;
+ std::unique_ptr<PDFiumSearchHandle> findStart(const OUString& rFindWhat, PDFFindFlags nFlags,
+ sal_Int32 nStartIndex) override;
+
+ /// Returned rect is no longer upside down and is in mm100.
+ basegfx::B2DRectangle getCharBox(int nIndex, double fPageHeight) override;
+};
}
OUString convertPdfDateToISO8601(OUString const& rInput)
@@ -597,7 +620,7 @@ std::unique_ptr<PDFiumTextPage> PDFiumPage::getTextPage()
FPDF_TEXTPAGE pTextPage = FPDFText_LoadPage(mpPage);
if (pTextPage)
{
- pPDFiumTextPage = std::make_unique<PDFiumTextPage>(pTextPage);
+ pPDFiumTextPage = std::make_unique<PDFiumTextPageImpl>(pTextPage);
}
return pPDFiumTextPage;
}
@@ -616,10 +639,11 @@ PDFiumPageObjectImpl::PDFiumPageObjectImpl(FPDF_PAGEOBJECT pPageObject)
{
}
-OUString PDFiumPageObjectImpl::getText(std::unique_ptr<PDFiumTextPage> const& pTextPage)
+OUString PDFiumPageObjectImpl::getText(std::unique_ptr<PDFiumTextPage> const& rTextPage)
{
OUString sReturnText;
+ auto pTextPage = static_cast<PDFiumTextPageImpl*>(rTextPage.get());
int nBytes = FPDFTextObj_GetText(mpPageObject, pTextPage->getPointer(), nullptr, 0);
assert(nBytes % 2 == 0);
nBytes /= 2;
@@ -1108,20 +1132,20 @@ std::unique_ptr<PDFiumPageObject> PDFiumAnnotationImpl::getObject(int nIndex)
return pPDFiumPageObject;
}
-PDFiumTextPage::PDFiumTextPage(FPDF_TEXTPAGE pTextPage)
+PDFiumTextPageImpl::PDFiumTextPageImpl(FPDF_TEXTPAGE pTextPage)
: mpTextPage(pTextPage)
{
}
-PDFiumTextPage::~PDFiumTextPage()
+PDFiumTextPageImpl::~PDFiumTextPageImpl()
{
if (mpTextPage)
FPDFText_ClosePage(mpTextPage);
}
-int PDFiumTextPage::countChars() { return FPDFText_CountChars(mpTextPage); }
+int PDFiumTextPageImpl::countChars() { return FPDFText_CountChars(mpTextPage); }
-basegfx::B2DRectangle PDFiumTextPage::getCharBox(int nIndex, double fPageHeight)
+basegfx::B2DRectangle PDFiumTextPageImpl::getCharBox(int nIndex, double fPageHeight)
{
double left = 0.0;
double right = 0.0;
@@ -1141,13 +1165,13 @@ basegfx::B2DRectangle PDFiumTextPage::getCharBox(int nIndex, double fPageHeight)
return basegfx::B2DRectangle();
}
-unsigned int PDFiumTextPage::getUnicode(int index)
+unsigned int PDFiumTextPageImpl::getUnicode(int index)
{
return FPDFText_GetUnicode(mpTextPage, index);
}
std::unique_ptr<PDFiumSearchHandle>
-PDFiumTextPage::findStart(const OUString& rFindWhat, PDFFindFlags nFlags, sal_Int32 nStartIndex)
+PDFiumTextPageImpl::findStart(const OUString& rFindWhat, PDFFindFlags nFlags, sal_Int32 nStartIndex)
{
FPDF_WIDESTRING pFindWhat = reinterpret_cast<FPDF_WIDESTRING>(rFindWhat.getStr());
return std::make_unique<vcl::pdf::PDFiumSearchHandleImpl>(
More information about the Libreoffice-commits
mailing list