include/vcl/filter/PDFiumLibrary.hxx | 3 +- include/vcl/pdf/PDFFindFlags.hxx | 34 +++++++++++++++++++++++++++++ vcl/source/graphic/VectorGraphicSearch.cxx | 14 +++++------ vcl/source/pdf/PDFiumLibrary.cxx | 11 +++++++-- 4 files changed, 52 insertions(+), 10 deletions(-)
New commits: commit 71c32c31dab86fe9c6d5893eee6821beaa3a3f43 Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Wed Feb 3 21:00:58 2021 +0100 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Thu Feb 4 09:11:14 2021 +0100 pdfium: add PDFFindFlags wrapper So that vcl::pdf::PDFiumTextPage::findStart() can be called without including fpdf_text.h. Change-Id: I6a765be6176ec77ca24f592e2e2210654debe075 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110391 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/include/vcl/filter/PDFiumLibrary.hxx b/include/vcl/filter/PDFiumLibrary.hxx index 667fa614da70..ab0b5db7e608 100644 --- a/include/vcl/filter/PDFiumLibrary.hxx +++ b/include/vcl/filter/PDFiumLibrary.hxx @@ -36,6 +36,7 @@ #include <vcl/pdf/PDFObjectType.hxx> #include <vcl/pdf/PDFTextRenderMode.hxx> #include <vcl/pdf/PDFFillMode.hxx> +#include <vcl/pdf/PDFFindFlags.hxx> #include <fpdf_doc.h> @@ -180,7 +181,7 @@ public: int countChars(); unsigned int getUnicode(int index); - std::unique_ptr<PDFiumSearchHandle> findStart(const OUString& rFindWhat, sal_uInt64 nFlags, + std::unique_ptr<PDFiumSearchHandle> findStart(const OUString& rFindWhat, PDFFindFlags nFlags, sal_Int32 nStartIndex); }; diff --git a/include/vcl/pdf/PDFFindFlags.hxx b/include/vcl/pdf/PDFFindFlags.hxx new file mode 100644 index 000000000000..f43efc7a6f7d --- /dev/null +++ b/include/vcl/pdf/PDFFindFlags.hxx @@ -0,0 +1,34 @@ +/* -*- 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 + +#include <o3tl/typed_flags_set.hxx> + +namespace vcl::pdf +{ +enum class PDFFindFlags : sal_uInt32 +{ + MatchCase = 0x00000001, + MatchWholeWord = 0x00000002, + Consecutive = 0x00000004, +}; + +} // namespace vcl::pdf + +namespace o3tl +{ +template <> +struct typed_flags<vcl::pdf::PDFFindFlags> : is_typed_flags<vcl::pdf::PDFFindFlags, 0x00000007> +{ +}; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/graphic/VectorGraphicSearch.cxx b/vcl/source/graphic/VectorGraphicSearch.cxx index 01b76fb28b06..59e51ea795e2 100644 --- a/vcl/source/graphic/VectorGraphicSearch.cxx +++ b/vcl/source/graphic/VectorGraphicSearch.cxx @@ -101,15 +101,15 @@ public: if (mnCurrentIndex >= 0) nStartIndex = mnCurrentIndex; - // FPDF_MATCHCASE, FPDF_MATCHWHOLEWORD, FPDF_CONSECUTIVE - // FPDF_MATCHCASE - If not set, it will not match case by default. - // FPDF_MATCHWHOLEWORD - If not set, it will not match the whole word by default. - // FPDF_CONSECUTIVE - If not set, it will skip past the current match to look for the next match. - int nSearchFlags = 0; + // vcl::pdf::PDFFindFlags::MatchCase, vcl::pdf::PDFFindFlags::MatchWholeWord, vcl::pdf::PDFFindFlags::Consecutive + // vcl::pdf::PDFFindFlags::MatchCase - If not set, it will not match case by default. + // vcl::pdf::PDFFindFlags::MatchWholeWord - If not set, it will not match the whole word by default. + // vcl::pdf::PDFFindFlags::Consecutive - If not set, it will skip past the current match to look for the next match. + vcl::pdf::PDFFindFlags nSearchFlags{}; if (maOptions.mbMatchCase) - nSearchFlags |= FPDF_MATCHCASE; + nSearchFlags |= vcl::pdf::PDFFindFlags::MatchCase; if (maOptions.mbMatchWholeWord) - nSearchFlags |= FPDF_MATCHWHOLEWORD; + nSearchFlags |= vcl::pdf::PDFFindFlags::MatchWholeWord; mpSearchHandle = mpTextPage->findStart(maSearchString, nSearchFlags, nStartIndex); diff --git a/vcl/source/pdf/PDFiumLibrary.cxx b/vcl/source/pdf/PDFiumLibrary.cxx index c1571682f4b3..9a13ae930fb5 100644 --- a/vcl/source/pdf/PDFiumLibrary.cxx +++ b/vcl/source/pdf/PDFiumLibrary.cxx @@ -114,6 +114,13 @@ static_assert(static_cast<int>(vcl::pdf::PDFFillMode::Alternate) == FPDF_FILLMOD static_assert(static_cast<int>(vcl::pdf::PDFFillMode::Winding) == FPDF_FILLMODE_WINDING, "PDFFillMode::Winding value mismatch"); +static_assert(static_cast<int>(vcl::pdf::PDFFindFlags::MatchCase) == FPDF_MATCHCASE, + "PDFFindFlags::MatchCase value mismatch"); +static_assert(static_cast<int>(vcl::pdf::PDFFindFlags::MatchWholeWord) == FPDF_MATCHWHOLEWORD, + "PDFFindFlags::MatchWholeWord value mismatch"); +static_assert(static_cast<int>(vcl::pdf::PDFFindFlags::Consecutive) == FPDF_CONSECUTIVE, + "PDFFindFlags::Consecutive value mismatch"); + namespace { /// Callback class to be used with FPDF_SaveWithVersion(). @@ -1101,11 +1108,11 @@ unsigned int PDFiumTextPage::getUnicode(int index) } std::unique_ptr<PDFiumSearchHandle> -PDFiumTextPage::findStart(const OUString& rFindWhat, sal_uInt64 nFlags, sal_Int32 nStartIndex) +PDFiumTextPage::findStart(const OUString& rFindWhat, PDFFindFlags nFlags, sal_Int32 nStartIndex) { FPDF_WIDESTRING pFindWhat = reinterpret_cast<FPDF_WIDESTRING>(rFindWhat.getStr()); return std::make_unique<vcl::pdf::PDFiumSearchHandle>( - FPDFText_FindStart(mpTextPage, pFindWhat, nFlags, nStartIndex)); + FPDFText_FindStart(mpTextPage, pFindWhat, static_cast<sal_uInt32>(nFlags), nStartIndex)); } PDFiumSearchHandle::PDFiumSearchHandle(FPDF_SCHHANDLE pSearchHandle) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits