[Libreoffice-commits] core.git: Branch 'feature/drawinglayercore' - 53 commits - basegfx/source cui/inc dictionaries drawinglayer/CppunitTest_drawinglayer_border.mk drawinglayer/inc drawinglayer/Library_drawinglayercore.mk drawinglayer/Library_drawinglayer.mk drawinglayer/Module_drawinglayer.mk drawinglayer/source emfio/CppunitTest_emfio_emf_test.mk emfio/Library_emfio.mk extras/CustomTarget_tpl_styles.mk extras/Package_tpl_styles.mk extras/source filter/Library_svgfilter.mk fpicker/source helpcontent2 include/basegfx include/canvas include/codemaker include/comphelper include/connectivity include/cppcanvas include/dbaccess include/drawinglayer include/editeng include/filter include/formula include/i18nutil include/jvmaccess include/linguistic include/oox include/sax include/sfx2 include/sot include/svl include/svtools include/svx include/toolkit include/tools include/ucbhelper include/unotest include/unotools include/vbahelper include/vcl include/xmloff include/xmlscript instsetoo_native/CustomT arget_setup.mk offapi/com officecfg/registry Repository.mk sc/CppunitTest_sc_ucalc.mk sc/Library_sc.mk sc/qa sc/source sd/CppunitTest_sd_pdf_import_test.mk sd/CppunitTest_sd_uimpress.mk sd/Library_sd.mk sd/Module_sd.mk sd/qa sd/source sd/uiconfig sfx2/inc sfx2/Library_sfx.mk sfx2/source sfx2/uiconfig solenv/clang-format svgio/CppunitTest_svgio.mk svgio/Library_svgio.mk svx/CppunitTest_svx_unit.mk svx/Library_svxcore.mk svx/Library_svx.mk svx/source svx/uiconfig sw/CppunitTest_sw_uwriter.mk sw/Library_sw.mk sw/Library_swui.mk sw/qa sw/source translations vcl/CppunitTest_vcl_type_serializer_test.mk vcl/Executable_fodtfuzzer.mk vcl/inc vcl/Library_vcl.mk vcl/qa vcl/source vcl/unx

Tomaž Vajngerl (via logerrit) logerrit at kemper.freedesktop.org
Mon May 4 06:54:51 UTC 2020


Rebased ref, commits from common ancestor:
commit 2ed5c94e656ed9729eb0c27bc0f9d20715a68492
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon May 4 08:49:36 2020 +0200
Commit:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon May 4 08:53:37 2020 +0200

    SdrPdfImport: add a test class to sd and write a simple test
    
    Open a simple PDF document, run the "break" action, check that
    we get the expected text as a text object.
    
    Change-Id: Iadb458f06b437689202eb013cb900edaabf17673

diff --git a/sd/CppunitTest_sd_pdf_import_test.mk b/sd/CppunitTest_sd_pdf_import_test.mk
new file mode 100644
index 000000000000..4326c9cdede0
--- /dev/null
+++ b/sd/CppunitTest_sd_pdf_import_test.mk
@@ -0,0 +1,73 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# 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/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,sd_pdf_import_test))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sd_pdf_import_test, \
+    sd/qa/unit/SdrPdfImportTest \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,sd_pdf_import_test, \
+    boost_headers \
+    $(if $(filter PDFIUM,$(BUILD_TYPE)),pdfium) \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sd_pdf_import_test,\
+    -I$(SRCDIR)/sd/inc \
+    -I$(SRCDIR)/sd/source/ui/inc \
+    -I$(SRCDIR)/sd/source/ui/slidesorter/inc \
+    -I$(SRCDIR)/svx/source/inc \
+    -I$(SRCDIR)/svx/inc \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sd_pdf_import_test, \
+    $(call gb_Helper_optional,AVMEDIA,avmedia) \
+    basegfx \
+    canvastools \
+    comphelper \
+    cppcanvas \
+    cppu \
+    cppuhelper \
+    drawinglayer \
+    editeng \
+    for \
+    forui \
+    i18nlangtag \
+    i18nutil \
+    msfilter \
+    oox \
+    sal \
+    salhelper \
+    sax \
+    sb \
+    sd \
+    sfx \
+    sot \
+    svl \
+    svt \
+    svx \
+    svxcore \
+    test \
+    tl \
+    tk \
+    ucbhelper \
+    unotest \
+    utl \
+    vcl \
+    xo \
+))
+
+$(eval $(call gb_CppunitTest_use_sdk_api,sd_pdf_import_test))
+$(eval $(call gb_CppunitTest_use_ure,sd_pdf_import_test))
+$(eval $(call gb_CppunitTest_use_vcl,sd_pdf_import_test))
+$(eval $(call gb_CppunitTest_use_rdb,sd_pdf_import_test,services))
+$(eval $(call gb_CppunitTest_use_configuration,sd_pdf_import_test))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sd/Module_sd.mk b/sd/Module_sd.mk
index a7edda76cbe4..d5c6b2ecab23 100644
--- a/sd/Module_sd.mk
+++ b/sd/Module_sd.mk
@@ -39,6 +39,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sd,\
     CppunitTest_sd_uiimpress \
     CppunitTest_sd_html_export_tests \
     CppunitTest_sd_activex_controls_tests \
+    CppunitTest_sd_pdf_import_test \
 ))
 endif
 
diff --git a/sd/qa/unit/SdrPdfImportTest.cxx b/sd/qa/unit/SdrPdfImportTest.cxx
new file mode 100644
index 000000000000..f7215360ec7e
--- /dev/null
+++ b/sd/qa/unit/SdrPdfImportTest.cxx
@@ -0,0 +1,128 @@
+/* -*- 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/.
+ */
+
+#include <test/bootstrapfixture.hxx>
+#include <unotest/macros_test.hxx>
+
+#include <svdpdf.hxx>
+
+#include <config_features.h>
+
+#include <comphelper/scopeguard.hxx>
+#include <comphelper/processfactory.hxx>
+
+#include <svx/svdograf.hxx>
+#include <editeng/outlobj.hxx>
+#include <editeng/editobj.hxx>
+
+#include <DrawDocShell.hxx>
+#include <DrawController.hxx>
+#include <ViewShell.hxx>
+#include <drawdoc.hxx>
+#include <sdpage.hxx>
+#include <unomodel.hxx>
+
+#include <com/sun/star/frame/Desktop.hpp>
+
+using namespace css;
+
+class SdrPdfImportTest : public test::BootstrapFixture, public unotest::MacrosTest
+{
+protected:
+    uno::Reference<lang::XComponent> mxComponent;
+
+public:
+    virtual void setUp() override;
+    virtual void tearDown() override;
+};
+
+void SdrPdfImportTest::setUp()
+{
+    test::BootstrapFixture::setUp();
+
+    mxDesktop.set(frame::Desktop::create(mxComponentContext));
+}
+
+void SdrPdfImportTest::tearDown()
+{
+    if (mxComponent.is())
+        mxComponent->dispose();
+
+    test::BootstrapFixture::tearDown();
+}
+
+// Load the PDF in Draw, which will load the PDF as an Graphic, then
+// mark the graphic object and trigger "break" funcition. This should
+// convert the PDF content into objects/shapes.
+CPPUNIT_TEST_FIXTURE(SdrPdfImportTest, testImportSimpleText)
+{
+#if HAVE_FEATURE_PDFIUM
+    // We need to enable PDFium import (and make sure to disable after the test)
+    bool bResetEnvVar = false;
+    if (getenv("LO_IMPORT_USE_PDFIUM") == nullptr)
+    {
+        bResetEnvVar = true;
+        setenv("LO_IMPORT_USE_PDFIUM", "1", false);
+    }
+    comphelper::ScopeGuard aPDFiumEnvVarGuard([&]() {
+        if (bResetEnvVar)
+            unsetenv("LO_IMPORT_USE_PDFIUM");
+    });
+
+    mxComponent = loadFromDesktop(m_directories.getURLFromSrc("sd/qa/unit/data/SimplePDF.pdf"));
+    auto pImpressDocument = dynamic_cast<SdXImpressDocument*>(mxComponent.get());
+    sd::ViewShell* pViewShell = pImpressDocument->GetDocShell()->GetViewShell();
+    CPPUNIT_ASSERT(pViewShell);
+
+    // Get the first page - there should be only one.
+    SdPage* pPage = pViewShell->GetActualPage();
+    CPPUNIT_ASSERT(pPage);
+
+    // Get the first object - there should be only one.
+    SdrObject* pObject = pPage->GetObj(0);
+    CPPUNIT_ASSERT(pObject);
+
+    // Check the object is a graphic object
+    SdrGrafObj* pGraphicObject = dynamic_cast<SdrGrafObj*>(pObject);
+    CPPUNIT_ASSERT(pGraphicObject);
+    // Check the graphic is a vector graphic and that it is PDF
+    Graphic aGraphic = pGraphicObject->GetGraphic();
+    auto const& pVectorGraphicData = aGraphic.getVectorGraphicData();
+    CPPUNIT_ASSERT(pVectorGraphicData);
+    CPPUNIT_ASSERT_EQUAL(VectorGraphicDataType::Pdf,
+                         pVectorGraphicData->getVectorGraphicDataType());
+
+    // Mark the object
+    SdrView* pView = pViewShell->GetView();
+    pView->MarkObj(pObject, pView->GetSdrPageView());
+
+    // Execute the break operation - to turn the PDF into shapes/objects
+    pViewShell->GetDrawView()->DoImportMarkedMtf();
+
+    // Check Objects after import
+
+    SdrObject* pImportedObject = pPage->GetObj(0);
+    CPPUNIT_ASSERT(pImportedObject);
+
+    // Object should be a text object containing one paragraph with
+    // content "This is PDF!"
+
+    SdrTextObj* pTextObject = dynamic_cast<SdrTextObj*>(pImportedObject);
+    CPPUNIT_ASSERT(pTextObject);
+    OutlinerParaObject* pOutlinerParagraphObject = pTextObject->GetOutlinerParaObject();
+    const EditTextObject& aEdit = pOutlinerParagraphObject->GetTextObject();
+    OUString sText = aEdit.GetText(0);
+    CPPUNIT_ASSERT_EQUAL(OUString("This is PDF!"), sText);
+
+#endif // HAVE_FEATURE_PDFIUM
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/qa/unit/data/SimplePDF.pdf b/sd/qa/unit/data/SimplePDF.pdf
new file mode 100644
index 000000000000..5d6fdb191544
Binary files /dev/null and b/sd/qa/unit/data/SimplePDF.pdf differ
diff --git a/svx/source/svdraw/svdpdf.hxx b/svx/source/inc/svdpdf.hxx
similarity index 98%
rename from svx/source/svdraw/svdpdf.hxx
rename to svx/source/inc/svdpdf.hxx
index d9d35fe0c80c..9b48eb1d30c5 100644
--- a/svx/source/svdraw/svdpdf.hxx
+++ b/svx/source/inc/svdpdf.hxx
@@ -24,9 +24,9 @@
 
 #if HAVE_FEATURE_PDFIUM
 #include <sal/config.h>
+#include <svx/svxdllapi.h>
 
 #include <memory>
-#include <sstream>
 
 #include <tools/fract.hxx>
 #include <vcl/virdev.hxx>
@@ -52,7 +52,7 @@ class SdrObject;
 class SvdProgressInfo;
 
 // Helper Class to import PDF
-class ImpSdrPdfImport final
+class SVXCORE_DLLPUBLIC ImpSdrPdfImport final
 {
     std::vector<SdrObject*> maTmpList;
     ScopedVclPtr<VirtualDevice> mpVD;
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index 5394c3c261d1..5cd0c0765a29 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -17,7 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include "svdpdf.hxx"
+#include <svdpdf.hxx>
 
 #include <config_features.h>
 
commit 11edfeac4257d2d6a63b3784d9fc34c9524ed8f4
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun May 3 13:03:30 2020 +0200
Commit:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon May 4 08:53:36 2020 +0200

    SdrPdfImport: use convertPointToMm100 for all unit conversion
    
    Change-Id: I78b3512cc0b9aea1fa4e9a810ec71eadd00b7635

diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index ad3a89ed9c02..5394c3c261d1 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -79,27 +79,8 @@
 
 namespace
 {
-/// Convert from DPI to pixels.
-/// PDFs don't have resolution, rather,
-/// dimensions are in inches, with 72 points / inch.
-/// Here we effectively render at 96 DPI (to match
-/// the image rendered in vcl::ImportPDF in pdfread.cxx).
-double lcl_PointToPixel(double fPoint) { return fPoint * 96. / 72.; }
-
-/// Convert from pixels to logic (twips).
-long lcl_ToLogic(double value)
-{
-    // Convert to integral preserving two dp.
-    const long in = static_cast<long>(value * 100.);
-    const long out = OutputDevice::LogicToLogic(in, MapUnit::MapPixel, MapUnit::Map100thMM);
-    return out / 100;
-}
-
 double sqrt2(double a, double b) { return sqrt(a * a + b * b); }
-}
 
-namespace
-{
 struct FPDFBitmapDeleter
 {
     void operator()(FPDF_BITMAP bitmap) { FPDFBitmap_Destroy(bitmap); }
@@ -248,8 +229,7 @@ void ImpSdrPdfImport::SetupPageScale(const double dPageWidth, const double dPage
     mdPageWidthPts = dPageWidth;
     mdPageHeightPts = dPageHeight;
 
-    Size aPageSize(lcl_ToLogic(lcl_PointToPixel(dPageWidth)),
-                   lcl_ToLogic(lcl_PointToPixel(dPageHeight)));
+    Size aPageSize(convertPointToMm100(dPageWidth), convertPointToMm100(dPageHeight));
 
     if (aPageSize.Width() && aPageSize.Height() && (!maScaleRect.IsEmpty()))
     {
@@ -815,10 +795,9 @@ void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTex
     const double dFontSize = FPDFTextObj_GetFontSize(pPageObject);
     double dFontSizeH = fabs(sqrt2(matrix.a, matrix.c) * dFontSize);
     double dFontSizeV = fabs(sqrt2(matrix.b, matrix.d) * dFontSize);
-    dFontSizeH = lcl_PointToPixel(dFontSizeH);
-    dFontSizeV = lcl_PointToPixel(dFontSizeV);
-    dFontSizeH = lcl_ToLogic(dFontSizeH);
-    dFontSizeV = lcl_ToLogic(dFontSizeV);
+
+    dFontSizeH = convertPointToMm100(dFontSizeH);
+    dFontSizeV = convertPointToMm100(dFontSizeV);
 
     const Size aFontSize(dFontSizeH, dFontSizeV);
     vcl::Font aFnt = mpVD->GetFont();
@@ -1120,7 +1099,7 @@ void ImpSdrPdfImport::ImportPath(FPDF_PAGEOBJECT pPageObject, int /*nPageObjectI
     float fWidth = 1;
     FPDFPageObj_GetStrokeWidth(pPageObject, &fWidth);
     const double dWidth = 0.5 * fabs(sqrt2(aPathMatrix.a(), aPathMatrix.c()) * fWidth);
-    mnLineWidth = lcl_ToLogic(lcl_PointToPixel(dWidth));
+    mnLineWidth = convertPointToMm100(dWidth);
 
     int nFillMode = FPDF_FILLMODE_ALTERNATE;
     FPDF_BOOL bStroke = 1; // Assume we have to draw, unless told otherwise.
@@ -1160,10 +1139,8 @@ void ImpSdrPdfImport::ImportPath(FPDF_PAGEOBJECT pPageObject, int /*nPageObjectI
 Point ImpSdrPdfImport::PointsToLogic(double x, double y) const
 {
     y = correctVertOrigin(y);
-    x = lcl_PointToPixel(x);
-    y = lcl_PointToPixel(y);
 
-    Point aPos(lcl_ToLogic(x), lcl_ToLogic(y));
+    Point aPos(convertPointToMm100(x), convertPointToMm100(y));
     return aPos;
 }
 
@@ -1173,15 +1150,10 @@ tools::Rectangle ImpSdrPdfImport::PointsToLogic(double left, double right, doubl
     top = correctVertOrigin(top);
     bottom = correctVertOrigin(bottom);
 
-    left = lcl_PointToPixel(left);
-    right = lcl_PointToPixel(right);
-    top = lcl_PointToPixel(top);
-    bottom = lcl_PointToPixel(bottom);
+    Point aPos(convertPointToMm100(left), convertPointToMm100(top));
+    Size aSize(convertPointToMm100(right - left), convertPointToMm100(bottom - top));
 
-    Point aPos(lcl_ToLogic(left), lcl_ToLogic(top));
-    Size aSize(lcl_ToLogic(right - left), lcl_ToLogic(bottom - top));
-    tools::Rectangle aRect(aPos, aSize);
-    return aRect;
+    return tools::Rectangle(aPos, aSize);
 }
 
 #endif // HAVE_FEATURE_PDFIUM
commit 59d28435f9bbde313b57ab299e531fc2880966d2
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Wed Apr 1 13:00:25 2020 +0200
Commit:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon May 4 08:52:47 2020 +0200

    Add OutputDevice::drawPrimitive2D to OutputDevice
    
    Change-Id: Ifc22eca62df72bddd247ba097054f34756520614

diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 1df0137cdcee..9cd127d3490c 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -49,6 +49,8 @@
 #include <com/sun/star/drawing/LineCap.hpp>
 #include <com/sun/star/uno/Reference.h>
 
+#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
+
 #include <memory>
 #include <vector>
 
@@ -1955,6 +1957,9 @@ public:
     ///@}
 
 
+    bool drawPrimitive2D(drawinglayer::primitive2d::Primitive2DContainer & rPrimitive2D);
+
+
     /** @name Native Widget Rendering functions
 
         These all just call through to the private mpGraphics functions of the same name.
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index cb59e378fb89..6d5b09ae4592 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -80,6 +80,7 @@ $(eval $(call gb_Library_use_libraries,vcl,\
     basegfx \
     comphelper \
     cppuhelper \
+    drawinglayercore \
     i18nlangtag \
     i18nutil \
     $(if $(filter OPENCL,$(BUILD_TYPE)),opencl) \
diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx
index 0dcdd84a5d0a..52f31234caa3 100644
--- a/vcl/source/outdev/outdev.cxx
+++ b/vcl/source/outdev/outdev.cxx
@@ -713,4 +713,9 @@ bool OutputDevice::DrawEPS( const Point& rPoint, const Size& rSize,
     return bDrawn;
 }
 
+bool OutputDevice::drawPrimitive2D(drawinglayer::primitive2d::Primitive2DContainer & rPrimitive2D)
+{
+    return false;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit c13b208131fd171cc5e07f651697787de6d88e29
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat Mar 7 14:33:43 2020 +0100
Commit:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Mon May 4 08:52:47 2020 +0200

    Separate core drawinglayer func. into drawinglayercore library
    
    This separates the drawinglayer core functionallity into a
    separate library, to keep a strict separation what is backend
    dependent and what is not. More strict separation can be done
    at a later date.
    
    This will make it possible to push part of drawinglayer
    (part of processor2d) directly into VCL.
    
    Change-Id: Ibc26580067e50bf20d7cdd37fa0e44eb10200878

diff --git a/Repository.mk b/Repository.mk
index 4479ed901e23..78b146096bdd 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -350,6 +350,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \
 	$(call gb_Helper_optional,SCRIPTING,dlgprov) \
 	$(if $(filter WNT,$(OS)),directx9canvas) \
 	$(if $(ENABLE_OPENGL_CANVAS),oglcanvas) \
+	drawinglayercore \
 	drawinglayer \
 	editeng \
 	$(if $(filter WNT,$(OS)),emser) \
diff --git a/drawinglayer/CppunitTest_drawinglayer_border.mk b/drawinglayer/CppunitTest_drawinglayer_border.mk
index fa2f715590cd..e00006c18dba 100644
--- a/drawinglayer/CppunitTest_drawinglayer_border.mk
+++ b/drawinglayer/CppunitTest_drawinglayer_border.mk
@@ -21,6 +21,7 @@ $(eval $(call gb_CppunitTest_use_libraries,drawinglayer_border, \
 	sal \
 	salhelper \
 	drawinglayer \
+	drawinglayercore \
 	vcl \
 	test \
 	tl \
diff --git a/drawinglayer/Library_drawinglayer.mk b/drawinglayer/Library_drawinglayer.mk
index 2a0f1030a789..46f21f56b6b6 100644
--- a/drawinglayer/Library_drawinglayer.mk
+++ b/drawinglayer/Library_drawinglayer.mk
@@ -30,6 +30,7 @@ $(eval $(call gb_Library_use_externals,drawinglayer,\
 ))
 
 $(eval $(call gb_Library_use_libraries,drawinglayer,\
+    drawinglayercore \
     basegfx \
     canvastools \
     comphelper \
@@ -67,11 +68,9 @@ $(eval $(call gb_Library_add_exception_objects,drawinglayer,\
     drawinglayer/source/attribute/sdrsceneattribute3d \
     drawinglayer/source/attribute/sdrshadowattribute \
     drawinglayer/source/attribute/strokeattribute \
-    drawinglayer/source/geometry/viewinformation2d \
     drawinglayer/source/geometry/viewinformation3d \
     drawinglayer/source/primitive2d/animatedprimitive2d \
     drawinglayer/source/primitive2d/backgroundcolorprimitive2d \
-    drawinglayer/source/primitive2d/baseprimitive2d \
     drawinglayer/source/primitive2d/bitmapprimitive2d \
     drawinglayer/source/primitive2d/borderlineprimitive2d \
     drawinglayer/source/primitive2d/controlprimitive2d \
@@ -111,7 +110,6 @@ $(eval $(call gb_Library_add_exception_objects,drawinglayer,\
     drawinglayer/source/primitive2d/PolyPolygonGraphicPrimitive2D \
     drawinglayer/source/primitive2d/PolyPolygonSelectionPrimitive2D \
     drawinglayer/source/primitive2d/primitivetools2d \
-    drawinglayer/source/primitive2d/Primitive2DContainer \
     drawinglayer/source/primitive2d/sceneprimitive2d \
     drawinglayer/source/primitive2d/sdrdecompositiontools2d \
     drawinglayer/source/primitive2d/shadowprimitive2d \
@@ -126,7 +124,6 @@ $(eval $(call gb_Library_add_exception_objects,drawinglayer,\
     drawinglayer/source/primitive2d/textlineprimitive2d \
     drawinglayer/source/primitive2d/textprimitive2d \
     drawinglayer/source/primitive2d/textstrikeoutprimitive2d \
-    drawinglayer/source/primitive2d/Tools \
     drawinglayer/source/primitive2d/transformprimitive2d \
     drawinglayer/source/primitive2d/transparenceprimitive2d \
     drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d \
diff --git a/drawinglayer/Library_drawinglayercore.mk b/drawinglayer/Library_drawinglayercore.mk
new file mode 100644
index 000000000000..f1643d27014d
--- /dev/null
+++ b/drawinglayer/Library_drawinglayercore.mk
@@ -0,0 +1,49 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# 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/.
+#
+
+$(eval $(call gb_Library_Library,drawinglayercore))
+
+$(eval $(call gb_Library_set_include,drawinglayercore,\
+    $$(INCLUDE) \
+    -I$(SRCDIR)/drawinglayer/inc \
+))
+
+$(eval $(call gb_Library_add_defs,drawinglayercore,\
+    -DDRAWINGLAYERCORE_DLLIMPLEMENTATION \
+))
+
+$(eval $(call gb_Library_set_precompiled_header,drawinglayercore,drawinglayer/inc/pch/precompiled_drawinglayercore))
+
+$(eval $(call gb_Library_use_sdk_api,drawinglayercore))
+
+$(eval $(call gb_Library_use_externals,drawinglayercore,\
+    boost_headers \
+    libxml2 \
+))
+
+$(eval $(call gb_Library_use_libraries,drawinglayercore,\
+    basegfx \
+    comphelper \
+    cppu \
+    cppuhelper \
+    i18nlangtag \
+    sal \
+    salhelper \
+    svl \
+    tl \
+))
+
+$(eval $(call gb_Library_add_exception_objects,drawinglayercore,\
+    drawinglayer/source/primitive2d/baseprimitive2d \
+    drawinglayer/source/primitive2d/Primitive2DContainer \
+    drawinglayer/source/primitive2d/Tools \
+    drawinglayer/source/geometry/viewinformation2d \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/drawinglayer/Module_drawinglayer.mk b/drawinglayer/Module_drawinglayer.mk
index 6d329e95c60a..687cd9c2671f 100644
--- a/drawinglayer/Module_drawinglayer.mk
+++ b/drawinglayer/Module_drawinglayer.mk
@@ -10,6 +10,7 @@
 $(eval $(call gb_Module_Module,drawinglayer))
 
 $(eval $(call gb_Module_add_targets,drawinglayer,\
+    Library_drawinglayercore \
     Library_drawinglayer \
 ))
 
diff --git a/drawinglayer/inc/pch/precompiled_drawinglayer.hxx b/drawinglayer/inc/pch/precompiled_drawinglayer.hxx
index 9aaf7bace296..d60954dab588 100644
--- a/drawinglayer/inc/pch/precompiled_drawinglayer.hxx
+++ b/drawinglayer/inc/pch/precompiled_drawinglayer.hxx
@@ -93,7 +93,6 @@
 #include <basegfx/range/basicrange.hxx>
 #include <basegfx/tuple/b2dtuple.hxx>
 #include <basegfx/tuple/b3dtuple.hxx>
-#include <basegfx/utils/canvastools.hxx>
 #include <basegfx/vector/b2dvector.hxx>
 #include <basegfx/vector/b2enums.hxx>
 #include <basegfx/vector/b2ivector.hxx>
@@ -105,7 +104,7 @@
 #include <com/sun/star/drawing/TextureMode.hpp>
 #include <com/sun/star/drawing/TextureProjectionMode.hpp>
 #include <com/sun/star/graphic/XPrimitive3D.hpp>
-#include <com/sun/star/util/XAccounting.hpp>
+#include <com/sun/star/uno/Reference.hxx>
 #include <comphelper/comphelperdllapi.h>
 #include <comphelper/processfactory.hxx>
 #include <comphelper/sequence.hxx>
@@ -139,7 +138,6 @@
 #include <drawinglayer/drawinglayerdllapi.h>
 #include <drawinglayer/geometry/viewinformation2d.hxx>
 #include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <drawinglayer/primitive2d/CommonTypes.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx>
@@ -147,9 +145,6 @@
 #include <drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx>
-#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
-#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
-#include <drawinglayer/primitive2d/Tools.hxx>
 #include <drawinglayer/primitive2d/baseprimitive2d.hxx>
 #include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
 #include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
diff --git a/drawinglayer/inc/pch/precompiled_drawinglayercore.cxx b/drawinglayer/inc/pch/precompiled_drawinglayercore.cxx
new file mode 100644
index 000000000000..4a8c23ea8e65
--- /dev/null
+++ b/drawinglayer/inc/pch/precompiled_drawinglayercore.cxx
@@ -0,0 +1,12 @@
+/* -*- 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/.
+ */
+
+#include "precompiled_drawinglayercore.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/inc/pch/precompiled_drawinglayercore.hxx b/drawinglayer/inc/pch/precompiled_drawinglayercore.hxx
new file mode 100644
index 000000000000..4cc5ca4612c9
--- /dev/null
+++ b/drawinglayer/inc/pch/precompiled_drawinglayercore.hxx
@@ -0,0 +1,46 @@
+/* -*- 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/.
+ */
+
+/*
+ This file has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2020-03-07 12:37:18 using:
+ ./bin/update_pch drawinglayer drawinglayercore --cutoff=4 --exclude:system --exclude:module --exclude:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./drawinglayer/inc/pch/precompiled_drawinglayercore.hxx "make drawinglayer.build" --find-conflicts
+*/
+
+#if PCH_LEVEL >= 1
+#include <ostream>
+#include <vector>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#include <osl/diagnose.h>
+#include <osl/interlck.h>
+#include <sal/config.h>
+#include <sal/types.h>
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <basegfx/basegfxdllapi.h>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/basicrange.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/utils/canvastools.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/emfio/CppunitTest_emfio_emf_test.mk b/emfio/CppunitTest_emfio_emf_test.mk
index 123e4b3549bd..2679c0a604d9 100644
--- a/emfio/CppunitTest_emfio_emf_test.mk
+++ b/emfio/CppunitTest_emfio_emf_test.mk
@@ -23,6 +23,7 @@ $(eval $(call gb_CppunitTest_use_sdk_api,emfio_emf))
 $(eval $(call gb_CppunitTest_use_libraries,emfio_emf,\
     basegfx \
     drawinglayer \
+    drawinglayercore \
     cppu \
     cppuhelper \
     comphelper \
diff --git a/emfio/Library_emfio.mk b/emfio/Library_emfio.mk
index 52fde14885b3..89add50b781a 100644
--- a/emfio/Library_emfio.mk
+++ b/emfio/Library_emfio.mk
@@ -41,6 +41,7 @@ $(eval $(call gb_Library_use_sdk_api,emfio))
 
 $(eval $(call gb_Library_use_libraries,emfio,\
     basegfx \
+    drawinglayercore \
     drawinglayer \
     cppu \
     cppuhelper \
diff --git a/filter/Library_svgfilter.mk b/filter/Library_svgfilter.mk
index 21318aa1fd03..1f0caf11758c 100644
--- a/filter/Library_svgfilter.mk
+++ b/filter/Library_svgfilter.mk
@@ -56,6 +56,7 @@ $(eval $(call gb_Library_use_libraries,svgfilter,\
 	sax \
 	salhelper \
 	comphelper \
+	drawinglayercore \
 	drawinglayer \
 	basegfx \
 	cppuhelper \
diff --git a/include/drawinglayer/drawinglayerdllapi.h b/include/drawinglayer/drawinglayerdllapi.h
index 0b3983504919..36a0d8abfea2 100644
--- a/include/drawinglayer/drawinglayerdllapi.h
+++ b/include/drawinglayer/drawinglayerdllapi.h
@@ -19,6 +19,12 @@
 #endif
 #define DRAWINGLAYER_DLLPRIVATE SAL_DLLPRIVATE
 
+#if defined(DRAWINGLAYERCORE_DLLIMPLEMENTATION)
+#define DRAWINGLAYERCORE_DLLPUBLIC SAL_DLLPUBLIC_EXPORT
+#else
+#define DRAWINGLAYERCORE_DLLPUBLIC SAL_DLLPUBLIC_IMPORT
+#endif
+
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/geometry/viewinformation2d.hxx b/include/drawinglayer/geometry/viewinformation2d.hxx
index 95be29a72bda..06b17248d213 100644
--- a/include/drawinglayer/geometry/viewinformation2d.hxx
+++ b/include/drawinglayer/geometry/viewinformation2d.hxx
@@ -63,7 +63,7 @@ namespace drawinglayer::geometry
     It is an implementation to support the sequence of PropertyValues used in a
     css::graphic::XPrimitive2D for C++ implementations working with those
 */
-class DRAWINGLAYER_DLLPUBLIC ViewInformation2D
+class DRAWINGLAYERCORE_DLLPUBLIC ViewInformation2D
 {
 public:
     typedef o3tl::cow_wrapper<ImpViewInformation2D, o3tl::ThreadSafeRefCountingPolicy> ImplType;
diff --git a/include/drawinglayer/primitive2d/Primitive2DContainer.hxx b/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
index cca3a0a91485..c096e9a8cc2f 100644
--- a/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
+++ b/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
@@ -34,7 +34,7 @@ class ViewInformation2D;
 
 namespace drawinglayer::primitive2d
 {
-class SAL_WARN_UNUSED DRAWINGLAYER_DLLPUBLIC Primitive2DContainer
+class SAL_WARN_UNUSED DRAWINGLAYERCORE_DLLPUBLIC Primitive2DContainer
     : public std::deque<Primitive2DReference>,
       public Primitive2DDecompositionVisitor
 {
diff --git a/include/drawinglayer/primitive2d/Primitive2DVisitor.hxx b/include/drawinglayer/primitive2d/Primitive2DVisitor.hxx
index dfe04b32a320..e174d1e0878d 100644
--- a/include/drawinglayer/primitive2d/Primitive2DVisitor.hxx
+++ b/include/drawinglayer/primitive2d/Primitive2DVisitor.hxx
@@ -27,7 +27,7 @@ namespace drawinglayer::primitive2d
 class Primitive2DContainer;
 
 // Visitor class for walking a tree of Primitive2DReference
-class DRAWINGLAYER_DLLPUBLIC Primitive2DDecompositionVisitor
+class DRAWINGLAYERCORE_DLLPUBLIC Primitive2DDecompositionVisitor
 {
 public:
     virtual void append(const Primitive2DReference&) = 0;
diff --git a/include/drawinglayer/primitive2d/Tools.hxx b/include/drawinglayer/primitive2d/Tools.hxx
index fbb6f5717c01..1c30565c8c1b 100644
--- a/include/drawinglayer/primitive2d/Tools.hxx
+++ b/include/drawinglayer/primitive2d/Tools.hxx
@@ -31,16 +31,16 @@ class ViewInformation2D;
 namespace drawinglayer::primitive2d
 {
 /// get B2DRange from a given Primitive2DReference
-basegfx::B2DRange DRAWINGLAYER_DLLPUBLIC getB2DRangeFromPrimitive2DReference(
+basegfx::B2DRange DRAWINGLAYERCORE_DLLPUBLIC getB2DRangeFromPrimitive2DReference(
     const Primitive2DReference& rCandidate, const geometry::ViewInformation2D& aViewInformation);
 
 /** compare two Primitive2DReferences for equality, including trying to get implementations (BasePrimitive2D)
     and using compare operator
  */
-bool DRAWINGLAYER_DLLPUBLIC arePrimitive2DReferencesEqual(const Primitive2DReference& rA,
-                                                          const Primitive2DReference& rB);
+bool DRAWINGLAYERCORE_DLLPUBLIC arePrimitive2DReferencesEqual(const Primitive2DReference& rA,
+                                                              const Primitive2DReference& rB);
 
-OUString DRAWINGLAYER_DLLPUBLIC idToString(sal_uInt32 nId);
+OUString DRAWINGLAYERCORE_DLLPUBLIC idToString(sal_uInt32 nId);
 
 } // end of namespace drawinglayer::primitive2d
 
diff --git a/include/drawinglayer/primitive2d/baseprimitive2d.hxx b/include/drawinglayer/primitive2d/baseprimitive2d.hxx
index 5e1a96429ff3..8818cdd0bcde 100644
--- a/include/drawinglayer/primitive2d/baseprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/baseprimitive2d.hxx
@@ -121,8 +121,8 @@ typedef cppu::WeakComponentImplHelper<css::graphic::XPrimitive2D, css::util::XAc
     for view-independent primitives which are defined by not using ViewInformation2D
     in their get2DDecomposition/getB2DRange implementations.
 */
-class DRAWINGLAYER_DLLPUBLIC BasePrimitive2D : protected cppu::BaseMutex,
-                                               public BasePrimitive2DImplBase
+class DRAWINGLAYERCORE_DLLPUBLIC BasePrimitive2D : protected cppu::BaseMutex,
+                                                   public BasePrimitive2DImplBase
 {
     BasePrimitive2D(const BasePrimitive2D&) = delete;
     BasePrimitive2D& operator=(const BasePrimitive2D&) = delete;
@@ -200,7 +200,7 @@ public:
         to identify if a new decomposition is needed at the next call
     (f) return maBuffered2DDecomposition
  */
-class DRAWINGLAYER_DLLPUBLIC BufferedDecompositionPrimitive2D : public BasePrimitive2D
+class DRAWINGLAYERCORE_DLLPUBLIC BufferedDecompositionPrimitive2D : public BasePrimitive2D
 {
 private:
     /// a sequence used for buffering the last create2DDecomposition() result
diff --git a/sc/CppunitTest_sc_ucalc.mk b/sc/CppunitTest_sc_ucalc.mk
index 8943de7ab4c3..60fb6676dab9 100644
--- a/sc/CppunitTest_sc_ucalc.mk
+++ b/sc/CppunitTest_sc_ucalc.mk
@@ -49,6 +49,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sc_ucalc, \
     cppuhelper \
     dbtools \
     drawinglayer \
+    drawinglayercore \
     editeng \
     for \
     forui \
diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 997b14c0add9..b540b27c9834 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -70,6 +70,7 @@ $(eval $(call gb_Library_use_libraries,sc,\
     cppu \
     cppuhelper \
     dbtools \
+    drawinglayercore \
     drawinglayer \
     editeng \
     for \
diff --git a/sd/CppunitTest_sd_uimpress.mk b/sd/CppunitTest_sd_uimpress.mk
index 93426dfc3a55..63f143978231 100644
--- a/sd/CppunitTest_sd_uimpress.mk
+++ b/sd/CppunitTest_sd_uimpress.mk
@@ -27,6 +27,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sd_uimpress,\
     cppu \
     cppuhelper \
     drawinglayer \
+    drawinglayercore \
     editeng \
     i18nlangtag \
     i18nutil \
diff --git a/sd/Library_sd.mk b/sd/Library_sd.mk
index 43b168be8d8c..24520633e77f 100644
--- a/sd/Library_sd.mk
+++ b/sd/Library_sd.mk
@@ -74,6 +74,7 @@ $(eval $(call gb_Library_use_libraries,sd,\
 	cppcanvas \
 	cppu \
 	cppuhelper \
+	drawinglayercore \
 	drawinglayer \
 	editeng \
 	i18nlangtag \
diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk
index 67a66ef2d211..a6d6b7d6b71a 100644
--- a/sfx2/Library_sfx.mk
+++ b/sfx2/Library_sfx.mk
@@ -49,6 +49,7 @@ $(eval $(call gb_Library_use_libraries,sfx,\
     comphelper \
     cppu \
     cppuhelper \
+    drawinglayercore \
     drawinglayer \
     fwe \
     i18nlangtag \
diff --git a/svgio/CppunitTest_svgio.mk b/svgio/CppunitTest_svgio.mk
index c6f4db91fc60..24fb7a39af32 100644
--- a/svgio/CppunitTest_svgio.mk
+++ b/svgio/CppunitTest_svgio.mk
@@ -30,6 +30,7 @@ $(eval $(call gb_CppunitTest_use_library_objects,svgio,\
 $(eval $(call gb_CppunitTest_use_libraries,svgio,\
     basegfx \
     drawinglayer \
+    drawinglayercore \
     cppu \
     cppuhelper \
     comphelper \
diff --git a/svgio/Library_svgio.mk b/svgio/Library_svgio.mk
index 449c17f61196..7ef1aeb19513 100644
--- a/svgio/Library_svgio.mk
+++ b/svgio/Library_svgio.mk
@@ -33,6 +33,7 @@ $(eval $(call gb_Library_use_sdk_api,svgio))
 
 $(eval $(call gb_Library_use_libraries,svgio,\
     basegfx \
+    drawinglayercore \
     drawinglayer \
     comphelper \
     cppu \
diff --git a/svx/CppunitTest_svx_unit.mk b/svx/CppunitTest_svx_unit.mk
index 92feb45d6578..c78b8d7769eb 100644
--- a/svx/CppunitTest_svx_unit.mk
+++ b/svx/CppunitTest_svx_unit.mk
@@ -35,6 +35,7 @@ $(eval $(call gb_CppunitTest_add_exception_objects,svx_unit, \
 $(eval $(call gb_CppunitTest_use_libraries,svx_unit, \
 	basegfx \
 	drawinglayer \
+	drawinglayercore \
 	sal \
 	sfx \
 	svxcore \
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index d3eff20b6769..9ccba33a748c 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -50,6 +50,7 @@ $(eval $(call gb_Library_use_libraries,svx,\
 		crashreport) \
     $(call gb_Helper_optional,DBCONNECTIVITY, \
         dbtools) \
+    drawinglayercore \
     drawinglayer \
     editeng \
     fwe \
diff --git a/svx/Library_svxcore.mk b/svx/Library_svxcore.mk
index 222d69bb6c8a..7a9b31e58b77 100644
--- a/svx/Library_svxcore.mk
+++ b/svx/Library_svxcore.mk
@@ -57,6 +57,7 @@ $(eval $(call gb_Library_use_libraries,svxcore,\
     cppu \
     $(call gb_Helper_optional,DBCONNECTIVITY, \
         dbtools) \
+    drawinglayercore \
     drawinglayer \
     editeng \
     fwe \
diff --git a/sw/CppunitTest_sw_uwriter.mk b/sw/CppunitTest_sw_uwriter.mk
index 6b9ffa4ba683..a881587735e4 100644
--- a/sw/CppunitTest_sw_uwriter.mk
+++ b/sw/CppunitTest_sw_uwriter.mk
@@ -33,6 +33,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_uwriter, \
     $(call gb_Helper_optional,DBCONNECTIVITY, \
         dbtools) \
     drawinglayer \
+    drawinglayercore \
     editeng \
     i18nlangtag \
     i18nutil \
diff --git a/sw/Library_sw.mk b/sw/Library_sw.mk
index b6d75fd890bf..d99c59a58a4b 100644
--- a/sw/Library_sw.mk
+++ b/sw/Library_sw.mk
@@ -58,6 +58,7 @@ $(eval $(call gb_Library_use_libraries,sw,\
     cppuhelper \
     $(call gb_Helper_optional,DBCONNECTIVITY, \
         dbtools) \
+    drawinglayercore \
     drawinglayer \
     editeng \
     i18nlangtag \
diff --git a/sw/Library_swui.mk b/sw/Library_swui.mk
index 99f1dd20ae3d..4c09d1cc4bda 100644
--- a/sw/Library_swui.mk
+++ b/sw/Library_swui.mk
@@ -75,6 +75,7 @@ $(eval $(call gb_Library_use_libraries,swui,\
     ucbhelper \
     utl \
     vcl \
+    drawinglayercore \
     drawinglayer \
 ))
 
commit 029194643d0ba7d76df28bc21eec4a27492eea99
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun May 3 11:34:51 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:43:35 2020 +0200

    drawinglayer: extract constant in renderWrongSpellPrimitive2D
    
    Change-Id: I131e2d5620d027f32dc2929cd12fedb168e30e9c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93390
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
index 27df21201efe..9f838a7e1b61 100644
--- a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
+++ b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
@@ -28,6 +28,11 @@ using namespace css;
 
 namespace drawinglayer
 {
+namespace
+{
+constexpr sal_uInt32 constMinimumFontHeight = 5; // #define WRONG_SHOW_MIN 5
+}
+
 bool renderWrongSpellPrimitive2D(const primitive2d::WrongSpellPrimitive2D& rWrongSpellCandidate,
                                  OutputDevice& rOutputDevice,
                                  const basegfx::B2DHomMatrix& rObjectToViewTransformation,
@@ -38,9 +43,7 @@ bool renderWrongSpellPrimitive2D(const primitive2d::WrongSpellPrimitive2D& rWron
     const basegfx::B2DVector aFontVectorPixel(aLocalTransform * basegfx::B2DVector(0.0, 1.0));
     const sal_uInt32 nFontPixelHeight(basegfx::fround(aFontVectorPixel.getLength()));
 
-    static const sal_uInt32 nMinimumFontHeight(5); // #define WRONG_SHOW_MIN 5
-
-    if (nFontPixelHeight <= nMinimumFontHeight)
+    if (nFontPixelHeight <= constMinimumFontHeight)
         return true;
 
     const basegfx::B2DPoint aStart(aLocalTransform
commit 2f844056c340ead941188fd1ea7ad2b1400586aa
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sun May 3 11:32:25 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:43:21 2020 +0200

    drawinglayer: flatten renderWrongSpellPrimitive2D
    
    Change-Id: I93ff19f9f54b6f14c660af554d697b9ba525f81c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93389
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
index 83fdba7cc1f5..27df21201efe 100644
--- a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
+++ b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
@@ -40,30 +40,30 @@ bool renderWrongSpellPrimitive2D(const primitive2d::WrongSpellPrimitive2D& rWron
 
     static const sal_uInt32 nMinimumFontHeight(5); // #define WRONG_SHOW_MIN 5
 
-    if (nFontPixelHeight > nMinimumFontHeight)
-    {
-        const basegfx::B2DPoint aStart(aLocalTransform
-                                       * basegfx::B2DPoint(rWrongSpellCandidate.getStart(), 0.0));
-        const basegfx::B2DPoint aStop(aLocalTransform
-                                      * basegfx::B2DPoint(rWrongSpellCandidate.getStop(), 0.0));
-        const Point aVclStart(basegfx::fround(aStart.getX()), basegfx::fround(aStart.getY()));
-        const Point aVclStop(basegfx::fround(aStop.getX()), basegfx::fround(aStop.getY()));
+    if (nFontPixelHeight <= nMinimumFontHeight)
+        return true;
 
-        // #i101075# draw it. Do not forget to use the evtl. offsetted origin of the target device,
-        // e.g. when used with mask/transparence buffer device
-        const Point aOrigin(rOutputDevice.GetMapMode().GetOrigin());
+    const basegfx::B2DPoint aStart(aLocalTransform
+                                   * basegfx::B2DPoint(rWrongSpellCandidate.getStart(), 0.0));
+    const basegfx::B2DPoint aStop(aLocalTransform
+                                  * basegfx::B2DPoint(rWrongSpellCandidate.getStop(), 0.0));
+    const Point aVclStart(basegfx::fround(aStart.getX()), basegfx::fround(aStart.getY()));
+    const Point aVclStop(basegfx::fround(aStop.getX()), basegfx::fround(aStop.getY()));
 
-        const basegfx::BColor aProcessedColor(
-            rBColorModifierStack.getModifiedColor(rWrongSpellCandidate.getColor()));
-        const bool bMapModeEnabledState(rOutputDevice.IsMapModeEnabled());
+    // #i101075# draw it. Do not forget to use the evtl. offsetted origin of the target device,
+    // e.g. when used with mask/transparence buffer device
+    const Point aOrigin(rOutputDevice.GetMapMode().GetOrigin());
 
-        vcl::ScopedAntialiasing a(rOutputDevice, true);
-        rOutputDevice.EnableMapMode(false);
-        rOutputDevice.SetLineColor(Color(aProcessedColor));
-        rOutputDevice.SetFillColor();
-        rOutputDevice.DrawWaveLine(aOrigin + aVclStart, aOrigin + aVclStop);
-        rOutputDevice.EnableMapMode(bMapModeEnabledState);
-    }
+    const basegfx::BColor aProcessedColor(
+        rBColorModifierStack.getModifiedColor(rWrongSpellCandidate.getColor()));
+    const bool bMapModeEnabledState(rOutputDevice.IsMapModeEnabled());
+
+    vcl::ScopedAntialiasing a(rOutputDevice, true);
+    rOutputDevice.EnableMapMode(false);
+    rOutputDevice.SetLineColor(Color(aProcessedColor));
+    rOutputDevice.SetFillColor();
+    rOutputDevice.DrawWaveLine(aOrigin + aVclStart, aOrigin + aVclStop);
+    rOutputDevice.EnableMapMode(bMapModeEnabledState);
 
     // cannot really go wrong
     return true;
commit e4f72f84661fba50937891e28f73f6661edaa21e
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat May 2 23:38:44 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:43:03 2020 +0200

    remove helperwrongspellrenderer.{cxx,hxx} from clang-format blacklist
    
    Change-Id: Ib0b1f389189012ab27dd061481737ac6a6a1a84e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93388
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
index c359b3485bc6..83fdba7cc1f5 100644
--- a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
+++ b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
@@ -28,43 +28,46 @@ using namespace css;
 
 namespace drawinglayer
 {
-    bool renderWrongSpellPrimitive2D(
-        const primitive2d::WrongSpellPrimitive2D& rWrongSpellCandidate,
-        OutputDevice& rOutputDevice,
-        const basegfx::B2DHomMatrix& rObjectToViewTransformation,
-        const basegfx::BColorModifierStack& rBColorModifierStack)
-    {
-        const basegfx::B2DHomMatrix aLocalTransform(rObjectToViewTransformation * rWrongSpellCandidate.getTransformation());
-        const basegfx::B2DVector aFontVectorPixel(aLocalTransform * basegfx::B2DVector(0.0, 1.0));
-        const sal_uInt32 nFontPixelHeight(basegfx::fround(aFontVectorPixel.getLength()));
-
-        static const sal_uInt32 nMinimumFontHeight(5); // #define WRONG_SHOW_MIN         5
+bool renderWrongSpellPrimitive2D(const primitive2d::WrongSpellPrimitive2D& rWrongSpellCandidate,
+                                 OutputDevice& rOutputDevice,
+                                 const basegfx::B2DHomMatrix& rObjectToViewTransformation,
+                                 const basegfx::BColorModifierStack& rBColorModifierStack)
+{
+    const basegfx::B2DHomMatrix aLocalTransform(rObjectToViewTransformation
+                                                * rWrongSpellCandidate.getTransformation());
+    const basegfx::B2DVector aFontVectorPixel(aLocalTransform * basegfx::B2DVector(0.0, 1.0));
+    const sal_uInt32 nFontPixelHeight(basegfx::fround(aFontVectorPixel.getLength()));
 
-        if(nFontPixelHeight > nMinimumFontHeight)
-        {
-            const basegfx::B2DPoint aStart(aLocalTransform * basegfx::B2DPoint(rWrongSpellCandidate.getStart(), 0.0));
-            const basegfx::B2DPoint aStop(aLocalTransform * basegfx::B2DPoint(rWrongSpellCandidate.getStop(), 0.0));
-            const Point aVclStart(basegfx::fround(aStart.getX()), basegfx::fround(aStart.getY()));
-            const Point aVclStop(basegfx::fround(aStop.getX()), basegfx::fround(aStop.getY()));
+    static const sal_uInt32 nMinimumFontHeight(5); // #define WRONG_SHOW_MIN 5
 
-            // #i101075# draw it. Do not forget to use the evtl. offsetted origin of the target device,
-            // e.g. when used with mask/transparence buffer device
-            const Point aOrigin(rOutputDevice.GetMapMode().GetOrigin());
+    if (nFontPixelHeight > nMinimumFontHeight)
+    {
+        const basegfx::B2DPoint aStart(aLocalTransform
+                                       * basegfx::B2DPoint(rWrongSpellCandidate.getStart(), 0.0));
+        const basegfx::B2DPoint aStop(aLocalTransform
+                                      * basegfx::B2DPoint(rWrongSpellCandidate.getStop(), 0.0));
+        const Point aVclStart(basegfx::fround(aStart.getX()), basegfx::fround(aStart.getY()));
+        const Point aVclStop(basegfx::fround(aStop.getX()), basegfx::fround(aStop.getY()));
 
-            const basegfx::BColor aProcessedColor(rBColorModifierStack.getModifiedColor(rWrongSpellCandidate.getColor()));
-            const bool bMapModeEnabledState(rOutputDevice.IsMapModeEnabled());
+        // #i101075# draw it. Do not forget to use the evtl. offsetted origin of the target device,
+        // e.g. when used with mask/transparence buffer device
+        const Point aOrigin(rOutputDevice.GetMapMode().GetOrigin());
 
-            vcl::ScopedAntialiasing a(rOutputDevice, true);
-            rOutputDevice.EnableMapMode(false);
-            rOutputDevice.SetLineColor(Color(aProcessedColor));
-            rOutputDevice.SetFillColor();
-            rOutputDevice.DrawWaveLine(aOrigin + aVclStart, aOrigin + aVclStop);
-            rOutputDevice.EnableMapMode(bMapModeEnabledState);
-        }
+        const basegfx::BColor aProcessedColor(
+            rBColorModifierStack.getModifiedColor(rWrongSpellCandidate.getColor()));
+        const bool bMapModeEnabledState(rOutputDevice.IsMapModeEnabled());
 
-        // cannot really go wrong
-        return true;
+        vcl::ScopedAntialiasing a(rOutputDevice, true);
+        rOutputDevice.EnableMapMode(false);
+        rOutputDevice.SetLineColor(Color(aProcessedColor));
+        rOutputDevice.SetFillColor();
+        rOutputDevice.DrawWaveLine(aOrigin + aVclStart, aOrigin + aVclStop);
+        rOutputDevice.EnableMapMode(bMapModeEnabledState);
     }
+
+    // cannot really go wrong
+    return true;
+}
 } // end of namespace drawinglayer
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx b/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
index 9ca43f705c1f..886ce99bb7ff 100644
--- a/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
+++ b/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
@@ -21,13 +21,15 @@
 
 class OutputDevice;
 
-namespace drawinglayer::primitive2d {
-    class WrongSpellPrimitive2D;
+namespace drawinglayer::primitive2d
+{
+class WrongSpellPrimitive2D;
 }
 
-namespace basegfx {
-    class B2DHomMatrix;
-    class BColorModifierStack;
+namespace basegfx
+{
+class B2DHomMatrix;
+class BColorModifierStack;
 }
 
 // support WrongSpell rendering using VCL from primitives due to VCLs nice
@@ -35,11 +37,10 @@ namespace basegfx {
 
 namespace drawinglayer
 {
-    bool renderWrongSpellPrimitive2D(
-        const primitive2d::WrongSpellPrimitive2D& rWrongSpellCandidate,
-        OutputDevice& rOutputDevice,
-        const basegfx::B2DHomMatrix& rObjectToViewTransformation,
-        const basegfx::BColorModifierStack& rBColorModifierStack);
+bool renderWrongSpellPrimitive2D(const primitive2d::WrongSpellPrimitive2D& rWrongSpellCandidate,
+                                 OutputDevice& rOutputDevice,
+                                 const basegfx::B2DHomMatrix& rObjectToViewTransformation,
+                                 const basegfx::BColorModifierStack& rBColorModifierStack);
 
 } // end of namespace drawinglayer
 
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index 298745b86375..db09c4a5d8a9 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -3744,8 +3744,6 @@ drawinglayer/source/processor2d/baseprocessor2d.cxx
 drawinglayer/source/processor2d/contourextractor2d.cxx
 drawinglayer/source/processor2d/getdigitlanguage.cxx
 drawinglayer/source/processor2d/getdigitlanguage.hxx
-drawinglayer/source/processor2d/helperwrongspellrenderer.cxx
-drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
 drawinglayer/source/processor2d/hittestprocessor2d.cxx
 drawinglayer/source/processor2d/linegeometryextractor2d.cxx
 drawinglayer/source/processor2d/objectinfoextractor2d.cxx
commit a57a6d145f7c91cc1ba51f73ea7be217f5837be7
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat May 2 23:35:27 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:42:46 2020 +0200

    pragma once in helperwrongspellrenderer.hxx
    
    Change-Id: I25aac069b9212824fee50240a1b6682bf7e6f0f7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93387
    Tested-by: Tomaž Vajngerl <quikee at gmail.com>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx b/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
index 08210a4b02d7..9ca43f705c1f 100644
--- a/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
+++ b/drawinglayer/source/processor2d/helperwrongspellrenderer.hxx
@@ -17,24 +17,19 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_DRAWINGLAYER_SOURCE_PROCESSOR2D_HELPERWRONGSPELLRENDERER_HXX
-#define INCLUDED_DRAWINGLAYER_SOURCE_PROCESSOR2D_HELPERWRONGSPELLRENDERER_HXX
-
-
-// predefines
+#pragma once
 
 class OutputDevice;
 
-namespace drawinglayer { namespace primitive2d {
+namespace drawinglayer::primitive2d {
     class WrongSpellPrimitive2D;
-}}
+}
 
 namespace basegfx {
     class B2DHomMatrix;
     class BColorModifierStack;
 }
 
-
 // support WrongSpell rendering using VCL from primitives due to VCLs nice
 // and fast solution with wavelines
 
@@ -48,7 +43,4 @@ namespace drawinglayer
 
 } // end of namespace drawinglayer
 
-
-#endif // INCLUDED_DRAWINGLAYER_SOURCE_PROCESSOR2D_HELPERWRONGSPELLRENDERER_HXX
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit e360fb8a316215e6b2d2d27be24b038f0b16a82c
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat May 2 23:09:53 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:42:10 2020 +0200

    organize includes in vclpixelprocessor2d.cxx
    
    Change-Id: I1590e437946aaa4bd3a8b6a2c47d2ee17d2060a5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93386
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index f09c6ad0fd76..bba66e2d4272 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -19,8 +19,16 @@
 
 #include "vclpixelprocessor2d.hxx"
 #include "vclhelperbufferdevice.hxx"
+#include "helperwrongspellrenderer.hxx"
+
+#include <sal/log.hxx>
+#include <tools/stream.hxx>
 #include <vcl/BitmapFilterStackBlur.hxx>
 #include <vcl/outdev.hxx>
+#include <vcl/dibtools.hxx>
+#include <vcl/hatch.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+
 #include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
 #include <drawinglayer/primitive2d/Tools.hxx>
 #include <drawinglayer/primitive2d/textprimitive2d.hxx>
@@ -41,25 +49,19 @@
 #include <drawinglayer/primitive2d/transformprimitive2d.hxx>
 #include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
 #include <drawinglayer/primitive2d/glowprimitive2d.hxx>
-#include <primitive2d/pointarrayprimitive2d.hxx>
 #include <drawinglayer/primitive2d/wrongspellprimitive2d.hxx>
 #include <drawinglayer/primitive2d/controlprimitive2d.hxx>
 #include <drawinglayer/primitive2d/borderlineprimitive2d.hxx>
-#include <com/sun/star/awt/XWindow2.hpp>
 #include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
 #include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include "helperwrongspellrenderer.hxx"
-#include <primitive2d/fillhatchprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <vcl/hatch.hxx>
-#include <sal/log.hxx>
-#include <com/sun/star/awt/XControl.hpp>
 #include <drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx>
-#include <primitive2d/epsprimitive2d.hxx>
 #include <drawinglayer/primitive2d/svggradientprimitive2d.hxx>
+#include <primitive2d/pointarrayprimitive2d.hxx>
+#include <primitive2d/fillhatchprimitive2d.hxx>
+#include <primitive2d/epsprimitive2d.hxx>
 
-#include <vcl/dibtools.hxx>
-#include <tools/stream.hxx>
+#include <com/sun/star/awt/XWindow2.hpp>
+#include <com/sun/star/awt/XControl.hpp>
 
 using namespace com::sun::star;
 
commit 94d5587e013ba61091d90d6636d0e6f320ac5615
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat May 2 23:05:12 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:41:55 2020 +0200

    organize includes in vclprocessor2d.cxx
    
    Change-Id: I1117eb86823762882d463c6e4d3b295efaa3151c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93365
    Tested-by: Tomaž Vajngerl <quikee at gmail.com>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index c5460f0433e1..96b0bf9a97b5 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -17,16 +17,27 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include "vclprocessor2d.hxx"
+
+#include "getdigitlanguage.hxx"
+#include "vclhelperbufferdevice.hxx"
 #include <cmath>
 #include <comphelper/string.hxx>
-#include "vclprocessor2d.hxx"
-#include <drawinglayer/primitive2d/textprimitive2d.hxx>
-#include <drawinglayer/primitive2d/textdecoratedprimitive2d.hxx>
 #include <tools/debug.hxx>
+#include <vcl/graph.hxx>
 #include <vcl/outdev.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <sal/log.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolygonclipper.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <drawinglayer/primitive2d/textprimitive2d.hxx>
+#include <drawinglayer/primitive2d/textdecoratedprimitive2d.hxx>
 #include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
 #include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
 #include <drawinglayer/primitive2d/fillgraphicprimitive2d.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx>
@@ -37,36 +48,21 @@
 #include <drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx>
 #include <drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx>
 #include <drawinglayer/primitive2d/maskprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include "vclhelperbufferdevice.hxx"
 #include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
 #include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
 #include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
 #include <drawinglayer/primitive2d/transformprimitive2d.hxx>
 #include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
-#include <primitive2d/pointarrayprimitive2d.hxx>
 #include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <sal/log.hxx>
 #include <drawinglayer/primitive2d/textenumsprimitive2d.hxx>
-#include <primitive2d/epsprimitive2d.hxx>
 #include <drawinglayer/primitive2d/svggradientprimitive2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <vcl/graph.hxx>
-
-#include "getdigitlanguage.hxx"
-
-// control support
-
-#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
-
-#include <basegfx/polygon/b2dpolygonclipper.hxx>
-
 // for support of Title/Description in all apps when embedding pictures
 #include <drawinglayer/primitive2d/objectinfoprimitive2d.hxx>
+// control support
+#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
 
-#include <toolkit/helper/vclunohelper.hxx>
+#include <primitive2d/pointarrayprimitive2d.hxx>
+#include <primitive2d/epsprimitive2d.hxx>
 
 using namespace com::sun::star;
 
commit 8e63a3623a05713154d798081b13374a819fa84f
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat May 2 21:16:42 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:41:20 2020 +0200

    dl: replace OSL_ENSURE with SAL_WARN_IF in impBufferDevice
    
    Change-Id: I457b9310109157da03b6c310783651f5232d2054
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93364
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
index 54206abf7aa5..534c512daa42 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
@@ -219,7 +219,8 @@ void VDevBuffer::free(VirtualDevice& rDevice)
 {
     ::osl::MutexGuard aGuard(m_aMutex);
     const auto aUsedFound = std::find(maUsedBuffers.begin(), maUsedBuffers.end(), &rDevice);
-    OSL_ENSURE(aUsedFound != maUsedBuffers.end(), "OOps, non-registered buffer freed (!)");
+    SAL_WARN_IF(aUsedFound == maUsedBuffers.end(), "drawinglayer",
+                "OOps, non-registered buffer freed (!)");
 
     maUsedBuffers.erase(aUsedFound);
     maFreeBuffers.emplace_back(&rDevice);
@@ -286,8 +287,8 @@ impBufferDevice::impBufferDevice(OutputDevice& rOutDev, const basegfx::B2DRange&
 #endif
 
     // #i93485# assert when copying from window to VDev is used
-    OSL_ENSURE(
-        mrOutDev.GetOutDevType() != OUTDEV_WINDOW,
+    SAL_WARN_IF(
+        mrOutDev.GetOutDevType() == OUTDEV_WINDOW, "drawinglayer",
         "impBufferDevice render helper: Copying from Window to VDev, this should be avoided (!)");
 
     const bool bWasEnabledSrc(mrOutDev.IsMapModeEnabled());
@@ -424,13 +425,15 @@ void impBufferDevice::paint(double fTrans)
 
 VirtualDevice& impBufferDevice::getContent()
 {
-    assert(mpContent && "impBufferDevice: No content, check isVisible() before accessing (!)");
+    SAL_WARN_IF(!mpContent, "drawinglayer",
+                "impBufferDevice: No content, check isVisible() before accessing (!)");
     return *mpContent;
 }
 
 VirtualDevice& impBufferDevice::getMask()
 {
-    assert(mpContent && "impBufferDevice: No content, check isVisible() before accessing (!)");
+    SAL_WARN_IF(!mpContent, "drawinglayer",
+                "impBufferDevice: No content, check isVisible() before accessing (!)");
     if (!mpMask)
     {
         mpMask = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), true, true);
@@ -444,7 +447,8 @@ VirtualDevice& impBufferDevice::getMask()
 
 VirtualDevice& impBufferDevice::getTransparence()
 {
-    OSL_ENSURE(mpContent, "impBufferDevice: No content, check isVisible() before accessing (!)");
+    SAL_WARN_IF(!mpContent, "drawinglayer",
+                "impBufferDevice: No content, check isVisible() before accessing (!)");
     if (!mpAlpha)
     {
         mpAlpha = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), true, false);
commit f256d5d5cb3f715325c2bff03c2cca2046bbf97c
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat May 2 21:07:23 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:41:05 2020 +0200

    drawinglayer: remove aBuffer typedef in VDevBuffer
    
    Also use back() method on vector instead of end() - 1
    
    Change-Id: I944691d097f82b1651cff87a7bb0d7c457ece27a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93363
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
index 53ecdd4ee685..54206abf7aa5 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
@@ -39,16 +39,14 @@
 
 namespace
 {
-typedef std::vector<VclPtr<VirtualDevice>> aBuffers;
-
 class VDevBuffer : public Timer, protected cppu::BaseMutex
 {
 private:
     // available buffers
-    aBuffers maFreeBuffers;
+    std::vector<VclPtr<VirtualDevice>> maFreeBuffers;
 
     // allocated/used buffers (remembered to allow deleting them in destructor)
-    aBuffers maUsedBuffers;
+    std::vector<VclPtr<VirtualDevice>> maUsedBuffers;
 
     // remember what outputdevice was the template passed to VirtualDevice::Create
     // so we can test if that OutputDevice was disposed before reusing a
@@ -83,13 +81,13 @@ VDevBuffer::~VDevBuffer()
 
     while (!maFreeBuffers.empty())
     {
-        (*(maFreeBuffers.end() - 1)).disposeAndClear();
+        maFreeBuffers.back().disposeAndClear();
         maFreeBuffers.pop_back();
     }
 
     while (!maUsedBuffers.empty())
     {
-        (*(maUsedBuffers.end() - 1)).disposeAndClear();
+        maUsedBuffers.back().disposeAndClear();
         maUsedBuffers.pop_back();
     }
 }
@@ -105,9 +103,9 @@ VclPtr<VirtualDevice> VDevBuffer::alloc(OutputDevice& rOutDev, const Size& rSize
     bool bOkay(false);
     if (!maFreeBuffers.empty())
     {
-        aBuffers::iterator aFound(maFreeBuffers.end());
+        auto aFound(maFreeBuffers.end());
 
-        for (aBuffers::iterator a(maFreeBuffers.begin()); a != maFreeBuffers.end(); ++a)
+        for (auto a = maFreeBuffers.begin(); a != maFreeBuffers.end(); ++a)
         {
             assert(*a && "Empty pointer in VDevBuffer (!)");
 
@@ -220,8 +218,7 @@ VclPtr<VirtualDevice> VDevBuffer::alloc(OutputDevice& rOutDev, const Size& rSize
 void VDevBuffer::free(VirtualDevice& rDevice)
 {
     ::osl::MutexGuard aGuard(m_aMutex);
-    const aBuffers::iterator aUsedFound(
-        std::find(maUsedBuffers.begin(), maUsedBuffers.end(), &rDevice));
+    const auto aUsedFound = std::find(maUsedBuffers.begin(), maUsedBuffers.end(), &rDevice);
     OSL_ENSURE(aUsedFound != maUsedBuffers.end(), "OOps, non-registered buffer freed (!)");
 
     maUsedBuffers.erase(aUsedFound);
@@ -237,9 +234,9 @@ void VDevBuffer::Invoke()
 
     while (!maFreeBuffers.empty())
     {
-        aBuffers::iterator aLastOne(maFreeBuffers.end() - 1);
-        maDeviceTemplates.erase(*aLastOne);
-        aLastOne->disposeAndClear();
+        auto aLastOne = maFreeBuffers.back();
+        maDeviceTemplates.erase(aLastOne);
+        aLastOne.disposeAndClear();
         maFreeBuffers.pop_back();
     }
 }
commit e5889bb63a20061b3986afff5e64062c8db3fd64
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat May 2 19:33:57 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:40:50 2020 +0200

    remove vclhelperbufferdevice.{cxx,hxx} from clang-format blacklist
    
    Change-Id: I0ab6572ab700756322f96b982f7faeb6d8dc9fb6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93362
    Tested-by: Tomaž Vajngerl <quikee at gmail.com>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
index f362559d12bf..53ecdd4ee685 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
@@ -35,422 +35,430 @@
 #include <vcl/lazydelete.hxx>
 #include <vcl/dibtools.hxx>
 
-
 // buffered VDev usage
 
 namespace
 {
-    typedef std::vector< VclPtr<VirtualDevice> > aBuffers;
-
-    class VDevBuffer : public Timer, protected cppu::BaseMutex
-    {
-    private:
-        // available buffers
-        aBuffers            maFreeBuffers;
-
-        // allocated/used buffers (remembered to allow deleting them in destructor)
-        aBuffers            maUsedBuffers;
-
-        // remember what outputdevice was the template passed to VirtualDevice::Create
-        // so we can test if that OutputDevice was disposed before reusing a
-        // virtualdevice because that isn't safe to do at least for Gtk2
-        std::map< VclPtr<VirtualDevice>, VclPtr<OutputDevice> > maDeviceTemplates;
+typedef std::vector<VclPtr<VirtualDevice>> aBuffers;
 
-    public:
-        VDevBuffer();
-        virtual ~VDevBuffer() override;
-
-        VclPtr<VirtualDevice> alloc(OutputDevice& rOutDev, const Size& rSizePixel, bool bClear, bool bMonoChrome);
-        void free(VirtualDevice& rDevice);
+class VDevBuffer : public Timer, protected cppu::BaseMutex
+{
+private:
+    // available buffers
+    aBuffers maFreeBuffers;
+
+    // allocated/used buffers (remembered to allow deleting them in destructor)
+    aBuffers maUsedBuffers;
+
+    // remember what outputdevice was the template passed to VirtualDevice::Create
+    // so we can test if that OutputDevice was disposed before reusing a
+    // virtualdevice because that isn't safe to do at least for Gtk2
+    std::map<VclPtr<VirtualDevice>, VclPtr<OutputDevice>> maDeviceTemplates;
+
+public:
+    VDevBuffer();
+    virtual ~VDevBuffer() override;
+
+    VclPtr<VirtualDevice> alloc(OutputDevice& rOutDev, const Size& rSizePixel, bool bClear,
+                                bool bMonoChrome);
+    void free(VirtualDevice& rDevice);
+
+    // Timer virtuals
+    virtual void Invoke() override;
+};
+
+VDevBuffer::VDevBuffer()
+    : Timer("VDevBuffer timer")
+    , maFreeBuffers()
+    , maUsedBuffers()
+{
+    SetTimeout(10L * 1000L); // ten seconds
+    SetDebugName("drawinglayer::VDevBuffer via Invoke()");
+}
 
-        // Timer virtuals
-        virtual void Invoke() override;
-    };
+VDevBuffer::~VDevBuffer()
+{
+    ::osl::MutexGuard aGuard(m_aMutex);
+    Stop();
 
-    VDevBuffer::VDevBuffer()
-    :   Timer("VDevBuffer timer"),
-        maFreeBuffers(),
-        maUsedBuffers()
+    while (!maFreeBuffers.empty())
     {
-        SetTimeout(10L * 1000L); // ten seconds
-        SetDebugName("drawinglayer::VDevBuffer via Invoke()");
+        (*(maFreeBuffers.end() - 1)).disposeAndClear();
+        maFreeBuffers.pop_back();
     }
 
-    VDevBuffer::~VDevBuffer()
+    while (!maUsedBuffers.empty())
     {
-        ::osl::MutexGuard aGuard(m_aMutex);
-        Stop();
+        (*(maUsedBuffers.end() - 1)).disposeAndClear();
+        maUsedBuffers.pop_back();
+    }
+}
 
-        while(!maFreeBuffers.empty())
-        {
-            (*(maFreeBuffers.end() - 1)).disposeAndClear();
-            maFreeBuffers.pop_back();
-        }
+VclPtr<VirtualDevice> VDevBuffer::alloc(OutputDevice& rOutDev, const Size& rSizePixel, bool bClear,
+                                        bool bMonoChrome)
+{
+    ::osl::MutexGuard aGuard(m_aMutex);
+    VclPtr<VirtualDevice> pRetval;
 
-        while(!maUsedBuffers.empty())
-        {
-            (*(maUsedBuffers.end() - 1)).disposeAndClear();
-            maUsedBuffers.pop_back();
-        }
-    }
+    sal_Int32 nBits = bMonoChrome ? 1 : rOutDev.GetBitCount();
 
-    VclPtr<VirtualDevice> VDevBuffer::alloc(OutputDevice& rOutDev, const Size& rSizePixel, bool bClear, bool bMonoChrome)
+    bool bOkay(false);
+    if (!maFreeBuffers.empty())
     {
-        ::osl::MutexGuard aGuard(m_aMutex);
-        VclPtr<VirtualDevice> pRetval;
+        aBuffers::iterator aFound(maFreeBuffers.end());
 
-        sal_Int32 nBits = bMonoChrome ? 1 : rOutDev.GetBitCount();
-
-        bool bOkay(false);
-        if(!maFreeBuffers.empty())
+        for (aBuffers::iterator a(maFreeBuffers.begin()); a != maFreeBuffers.end(); ++a)
         {
-            aBuffers::iterator aFound(maFreeBuffers.end());
+            assert(*a && "Empty pointer in VDevBuffer (!)");
 
-            for(aBuffers::iterator a(maFreeBuffers.begin()); a != maFreeBuffers.end(); ++a)
+            if (nBits == (*a)->GetBitCount())
             {
-                assert(*a && "Empty pointer in VDevBuffer (!)");
-
-                if (nBits == (*a)->GetBitCount())
+                // candidate is valid due to bit depth
+                if (aFound != maFreeBuffers.end())
                 {
-                    // candidate is valid due to bit depth
-                    if(aFound != maFreeBuffers.end())
+                    // already found
+                    if (bOkay)
                     {
-                        // already found
-                        if(bOkay)
+                        // found is valid
+                        const bool bCandidateOkay(
+                            (*a)->GetOutputWidthPixel() >= rSizePixel.getWidth()
+                            && (*a)->GetOutputHeightPixel() >= rSizePixel.getHeight());
+
+                        if (bCandidateOkay)
                         {
-                            // found is valid
-                            const bool bCandidateOkay((*a)->GetOutputWidthPixel() >= rSizePixel.getWidth() && (*a)->GetOutputHeightPixel() >= rSizePixel.getHeight());
+                            // found and candidate are valid
+                            const sal_uLong aSquare((*aFound)->GetOutputWidthPixel()
+                                                    * (*aFound)->GetOutputHeightPixel());
+                            const sal_uLong aCandidateSquare((*a)->GetOutputWidthPixel()
+                                                             * (*a)->GetOutputHeightPixel());
 
-                            if(bCandidateOkay)
-                            {
-                                // found and candidate are valid
-                                const sal_uLong aSquare((*aFound)->GetOutputWidthPixel() * (*aFound)->GetOutputHeightPixel());
-                                const sal_uLong aCandidateSquare((*a)->GetOutputWidthPixel() * (*a)->GetOutputHeightPixel());
-
-                                if(aCandidateSquare < aSquare)
-                                {
-                                    // candidate is valid and smaller, use it
-                                    aFound = a;
-                                }
-                            }
-                            else
+                            if (aCandidateSquare < aSquare)
                             {
-                                // found is valid, candidate is not. Keep found
+                                // candidate is valid and smaller, use it
+                                aFound = a;
                             }
                         }
                         else
                         {
-                            // found is invalid, use candidate
-                            aFound = a;
-                            bOkay = (*aFound)->GetOutputWidthPixel() >= rSizePixel.getWidth() && (*aFound)->GetOutputHeightPixel() >= rSizePixel.getHeight();
+                            // found is valid, candidate is not. Keep found
                         }
                     }
                     else
                     {
-                        // none yet, use candidate
+                        // found is invalid, use candidate
                         aFound = a;
-                        bOkay = (*aFound)->GetOutputWidthPixel() >= rSizePixel.getWidth() && (*aFound)->GetOutputHeightPixel() >= rSizePixel.getHeight();
-                    }
-                }
-            }
-
-            if(aFound != maFreeBuffers.end())
-            {
-                pRetval = *aFound;
-                maFreeBuffers.erase(aFound);
-            }
-        }
-
-        if (pRetval)
-        {
-            // found a suitable cached virtual device, but the
-            // outputdevice it was based on has been disposed,
-            // drop it and create a new one instead as reusing
-            // such devices is unsafe under at least Gtk2
-            if (maDeviceTemplates[pRetval]->isDisposed())
-            {
-                maDeviceTemplates.erase(pRetval);
-                pRetval.disposeAndClear();
-            }
-            else
-            {
-                if (bOkay)
-                {
-                    if (bClear)
-                    {
-                        pRetval->Erase(::tools::Rectangle(0, 0, rSizePixel.getWidth(), rSizePixel.getHeight()));
+                        bOkay = (*aFound)->GetOutputWidthPixel() >= rSizePixel.getWidth()
+                                && (*aFound)->GetOutputHeightPixel() >= rSizePixel.getHeight();
                     }
                 }
                 else
                 {
-                    pRetval->SetOutputSizePixel(rSizePixel, bClear);
+                    // none yet, use candidate
+                    aFound = a;
+                    bOkay = (*aFound)->GetOutputWidthPixel() >= rSizePixel.getWidth()
+                            && (*aFound)->GetOutputHeightPixel() >= rSizePixel.getHeight();
                 }
             }
         }
 
-        // no success yet, create new buffer
-        if(!pRetval)
+        if (aFound != maFreeBuffers.end())
         {
-            pRetval = VclPtr<VirtualDevice>::Create(rOutDev, bMonoChrome ? DeviceFormat::BITMASK : DeviceFormat::DEFAULT);
-            maDeviceTemplates[pRetval] = &rOutDev;
-            pRetval->SetOutputSizePixel(rSizePixel, bClear);
+            pRetval = *aFound;
+            maFreeBuffers.erase(aFound);
+        }
+    }
+
+    if (pRetval)
+    {
+        // found a suitable cached virtual device, but the
+        // outputdevice it was based on has been disposed,
+        // drop it and create a new one instead as reusing
+        // such devices is unsafe under at least Gtk2
+        if (maDeviceTemplates[pRetval]->isDisposed())
+        {
+            maDeviceTemplates.erase(pRetval);
+            pRetval.disposeAndClear();
         }
         else
         {
-            // reused, reset some values
-            pRetval->SetMapMode();
-            pRetval->SetRasterOp(RasterOp::OverPaint);
+            if (bOkay)
+            {
+                if (bClear)
+                {
+                    pRetval->Erase(
+                        ::tools::Rectangle(0, 0, rSizePixel.getWidth(), rSizePixel.getHeight()));
+                }
+            }
+            else
+            {
+                pRetval->SetOutputSizePixel(rSizePixel, bClear);
+            }
         }
-
-        // remember allocated buffer
-        maUsedBuffers.push_back(pRetval);
-
-        return pRetval;
     }
 
-    void VDevBuffer::free(VirtualDevice& rDevice)
+    // no success yet, create new buffer
+    if (!pRetval)
     {
-        ::osl::MutexGuard aGuard(m_aMutex);
-        const aBuffers::iterator aUsedFound(std::find(maUsedBuffers.begin(), maUsedBuffers.end(), &rDevice));
-        OSL_ENSURE(aUsedFound != maUsedBuffers.end(), "OOps, non-registered buffer freed (!)");
-
-        maUsedBuffers.erase(aUsedFound);
-        maFreeBuffers.emplace_back(&rDevice);
-        SAL_WARN_IF(maFreeBuffers.size() > 1000, "drawinglayer", "excessive cached buffers, "
-            << maFreeBuffers.size() << " entries!");
-        Start();
+        pRetval = VclPtr<VirtualDevice>::Create(rOutDev, bMonoChrome ? DeviceFormat::BITMASK
+                                                                     : DeviceFormat::DEFAULT);
+        maDeviceTemplates[pRetval] = &rOutDev;
+        pRetval->SetOutputSizePixel(rSizePixel, bClear);
     }
-
-    void VDevBuffer::Invoke()
+    else
     {
-        ::osl::MutexGuard aGuard(m_aMutex);
-
-        while(!maFreeBuffers.empty())
-        {
-            aBuffers::iterator aLastOne(maFreeBuffers.end() - 1);
-            maDeviceTemplates.erase(*aLastOne);
-            aLastOne->disposeAndClear();
-            maFreeBuffers.pop_back();
-        }
+        // reused, reset some values
+        pRetval->SetMapMode();
+        pRetval->SetRasterOp(RasterOp::OverPaint);
     }
+
+    // remember allocated buffer
+    maUsedBuffers.push_back(pRetval);
+
+    return pRetval;
 }
 
+void VDevBuffer::free(VirtualDevice& rDevice)
+{
+    ::osl::MutexGuard aGuard(m_aMutex);
+    const aBuffers::iterator aUsedFound(
+        std::find(maUsedBuffers.begin(), maUsedBuffers.end(), &rDevice));
+    OSL_ENSURE(aUsedFound != maUsedBuffers.end(), "OOps, non-registered buffer freed (!)");
+
+    maUsedBuffers.erase(aUsedFound);
+    maFreeBuffers.emplace_back(&rDevice);
+    SAL_WARN_IF(maFreeBuffers.size() > 1000, "drawinglayer",
+                "excessive cached buffers, " << maFreeBuffers.size() << " entries!");
+    Start();
+}
+
+void VDevBuffer::Invoke()
+{
+    ::osl::MutexGuard aGuard(m_aMutex);
+
+    while (!maFreeBuffers.empty())
+    {
+        aBuffers::iterator aLastOne(maFreeBuffers.end() - 1);
+        maDeviceTemplates.erase(*aLastOne);
+        aLastOne->disposeAndClear();
+        maFreeBuffers.pop_back();
+    }
+}
+}
 
 // support for rendering Bitmap and BitmapEx contents
 
 namespace drawinglayer
 {
-    // static global VDev buffer for the VclProcessor2D's (VclMetafileProcessor2D and VclPixelProcessor2D)
-    VDevBuffer& getVDevBuffer()
-    {
-        // secure global instance with Vcl's safe destroyer of external (seen by
-        // library base) stuff, the remembered VDevs need to be deleted before
-        // Vcl's deinit
-        static vcl::DeleteOnDeinit< VDevBuffer > aVDevBuffer(new VDevBuffer());
-        return *aVDevBuffer.get();
-    }
+// static global VDev buffer for the VclProcessor2D's (VclMetafileProcessor2D and VclPixelProcessor2D)
+VDevBuffer& getVDevBuffer()
+{
+    // secure global instance with Vcl's safe destroyer of external (seen by
+    // library base) stuff, the remembered VDevs need to be deleted before
+    // Vcl's deinit
+    static vcl::DeleteOnDeinit<VDevBuffer> aVDevBuffer(new VDevBuffer());
+    return *aVDevBuffer.get();
+}
 
-    impBufferDevice::impBufferDevice(
-        OutputDevice& rOutDev,
-        const basegfx::B2DRange& rRange)
-    :   mrOutDev(rOutDev),
-        mpContent(nullptr),
-        mpMask(nullptr),
-        mpAlpha(nullptr)
-    {
-        basegfx::B2DRange aRangePixel(rRange);
-        aRangePixel.transform(mrOutDev.GetViewTransformation());
-        const ::tools::Rectangle aRectPixel(
-            static_cast<sal_Int32>(floor(aRangePixel.getMinX())), static_cast<sal_Int32>(floor(aRangePixel.getMinY())),
-            static_cast<sal_Int32>(ceil(aRangePixel.getMaxX())), static_cast<sal_Int32>(ceil(aRangePixel.getMaxY())));
-        const Point aEmptyPoint;
-        maDestPixel = ::tools::Rectangle(aEmptyPoint, mrOutDev.GetOutputSizePixel());
-        maDestPixel.Intersection(aRectPixel);
-
-        if(!isVisible())
-            return;
+impBufferDevice::impBufferDevice(OutputDevice& rOutDev, const basegfx::B2DRange& rRange)
+    : mrOutDev(rOutDev)
+    , mpContent(nullptr)
+    , mpMask(nullptr)
+    , mpAlpha(nullptr)
+{
+    basegfx::B2DRange aRangePixel(rRange);
+    aRangePixel.transform(mrOutDev.GetViewTransformation());
+    const ::tools::Rectangle aRectPixel(static_cast<sal_Int32>(floor(aRangePixel.getMinX())),
+                                        static_cast<sal_Int32>(floor(aRangePixel.getMinY())),
+                                        static_cast<sal_Int32>(ceil(aRangePixel.getMaxX())),
+                                        static_cast<sal_Int32>(ceil(aRangePixel.getMaxY())));
+    const Point aEmptyPoint;
+    maDestPixel = ::tools::Rectangle(aEmptyPoint, mrOutDev.GetOutputSizePixel());
+    maDestPixel.Intersection(aRectPixel);
+
+    if (!isVisible())
+        return;
 
 #ifdef IOS
-        // Exact mechanism unknown, but for some reason SmartArt
-        // rendering, especially shadows, is broken on iOS unless
-        // we pass 'true' here. Are virtual devices always de
-        // facto cleared when created on other platforms?
-        mpContent = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), true, false);
+    // Exact mechanism unknown, but for some reason SmartArt
+    // rendering, especially shadows, is broken on iOS unless
+    // we pass 'true' here. Are virtual devices always de
+    // facto cleared when created on other platforms?
+    mpContent = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), true, false);
 #else
-        mpContent = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), false, false);
+    mpContent = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), false, false);
 #endif
 
-        // #i93485# assert when copying from window to VDev is used
-        OSL_ENSURE(mrOutDev.GetOutDevType() != OUTDEV_WINDOW,
-            "impBufferDevice render helper: Copying from Window to VDev, this should be avoided (!)");
+    // #i93485# assert when copying from window to VDev is used
+    OSL_ENSURE(
+        mrOutDev.GetOutDevType() != OUTDEV_WINDOW,
+        "impBufferDevice render helper: Copying from Window to VDev, this should be avoided (!)");
 
-        const bool bWasEnabledSrc(mrOutDev.IsMapModeEnabled());
-        mrOutDev.EnableMapMode(false);
-        mpContent->DrawOutDev(aEmptyPoint, maDestPixel.GetSize(), maDestPixel.TopLeft(), maDestPixel.GetSize(), mrOutDev);
-        mrOutDev.EnableMapMode(bWasEnabledSrc);
+    const bool bWasEnabledSrc(mrOutDev.IsMapModeEnabled());
+    mrOutDev.EnableMapMode(false);
+    mpContent->DrawOutDev(aEmptyPoint, maDestPixel.GetSize(), maDestPixel.TopLeft(),
+                          maDestPixel.GetSize(), mrOutDev);
+    mrOutDev.EnableMapMode(bWasEnabledSrc);
 
-        MapMode aNewMapMode(mrOutDev.GetMapMode());
+    MapMode aNewMapMode(mrOutDev.GetMapMode());
 
-        const Point aLogicTopLeft(mrOutDev.PixelToLogic(maDestPixel.TopLeft()));
-        aNewMapMode.SetOrigin(Point(-aLogicTopLeft.X(), -aLogicTopLeft.Y()));
+    const Point aLogicTopLeft(mrOutDev.PixelToLogic(maDestPixel.TopLeft()));
+    aNewMapMode.SetOrigin(Point(-aLogicTopLeft.X(), -aLogicTopLeft.Y()));
 
-        mpContent->SetMapMode(aNewMapMode);
+    mpContent->SetMapMode(aNewMapMode);
 
-        // copy AA flag for new target
-        mpContent->SetAntialiasing(mrOutDev.GetAntialiasing());
+    // copy AA flag for new target
+    mpContent->SetAntialiasing(mrOutDev.GetAntialiasing());
 
-        // copy RasterOp (e.g. may be RasterOp::Xor on destination)
-        mpContent->SetRasterOp(mrOutDev.GetRasterOp());
-    }
+    // copy RasterOp (e.g. may be RasterOp::Xor on destination)
+    mpContent->SetRasterOp(mrOutDev.GetRasterOp());
+}
 
-    impBufferDevice::~impBufferDevice()
+impBufferDevice::~impBufferDevice()
+{
+    if (mpContent)
     {
-        if(mpContent)
-        {
-            getVDevBuffer().free(*mpContent);
-        }
-
-        if(mpMask)
-        {
-            getVDevBuffer().free(*mpMask);
-        }
+        getVDevBuffer().free(*mpContent);
+    }
 
-        if(mpAlpha)
-        {
-            getVDevBuffer().free(*mpAlpha);
-        }
+    if (mpMask)
+    {
+        getVDevBuffer().free(*mpMask);
     }
 
-    void impBufferDevice::paint(double fTrans)
+    if (mpAlpha)
     {
-        if(!isVisible())
-            return;
+        getVDevBuffer().free(*mpAlpha);
+    }
+}
+
+void impBufferDevice::paint(double fTrans)
+{
+    if (!isVisible())
+        return;
 
-        const Point aEmptyPoint;
-        const Size aSizePixel(maDestPixel.GetSize());
-        const bool bWasEnabledDst(mrOutDev.IsMapModeEnabled());
+    const Point aEmptyPoint;
+    const Size aSizePixel(maDestPixel.GetSize());
+    const bool bWasEnabledDst(mrOutDev.IsMapModeEnabled());
 #ifdef DBG_UTIL
-        static bool bDoSaveForVisualControl(false); // loplugin:constvars:ignore
+    static bool bDoSaveForVisualControl(false); // loplugin:constvars:ignore
 #endif
 
-        mrOutDev.EnableMapMode(false);
-        mpContent->EnableMapMode(false);
+    mrOutDev.EnableMapMode(false);
+    mpContent->EnableMapMode(false);
 
 #ifdef DBG_UTIL
-        if(bDoSaveForVisualControl)
-        {
-            SvFileStream aNew(
+    if (bDoSaveForVisualControl)
+    {
+        SvFileStream aNew(
 #ifdef _WIN32
-                "c:\\content.bmp",
+            "c:\\content.bmp",
 #else
-                "~/content.bmp",
+            "~/content.bmp",
 #endif
-                StreamMode::WRITE|StreamMode::TRUNC);
-            Bitmap aContent(mpContent->GetBitmap(aEmptyPoint, aSizePixel));
-            WriteDIB(aContent, aNew, false, true);
-        }
+            StreamMode::WRITE | StreamMode::TRUNC);
+        Bitmap aContent(mpContent->GetBitmap(aEmptyPoint, aSizePixel));
+        WriteDIB(aContent, aNew, false, true);
+    }
 #endif
 
-        // during painting the buffer, disable evtl. set RasterOp (may be RasterOp::Xor)
-        const RasterOp aOrigRasterOp(mrOutDev.GetRasterOp());
-        mrOutDev.SetRasterOp(RasterOp::OverPaint);
+    // during painting the buffer, disable evtl. set RasterOp (may be RasterOp::Xor)
+    const RasterOp aOrigRasterOp(mrOutDev.GetRasterOp());
+    mrOutDev.SetRasterOp(RasterOp::OverPaint);
 
-        if(mpAlpha)
-        {
-            mpAlpha->EnableMapMode(false);
-            const AlphaMask aAlphaMask(mpAlpha->GetBitmap(aEmptyPoint, aSizePixel));
+    if (mpAlpha)
+    {
+        mpAlpha->EnableMapMode(false);
+        const AlphaMask aAlphaMask(mpAlpha->GetBitmap(aEmptyPoint, aSizePixel));
 
 #ifdef DBG_UTIL
-            if(bDoSaveForVisualControl)
-            {
-                SvFileStream aNew(
+        if (bDoSaveForVisualControl)
+        {
+            SvFileStream aNew(
 #ifdef _WIN32
-                    "c:\\transparence.bmp",
+                "c:\\transparence.bmp",
 #else
-                    "~/transparence.bmp",
+                "~/transparence.bmp",
 #endif
-                    StreamMode::WRITE|StreamMode::TRUNC);
-                WriteDIB(aAlphaMask.GetBitmap(), aNew, false, true);
-            }
+                StreamMode::WRITE | StreamMode::TRUNC);
+            WriteDIB(aAlphaMask.GetBitmap(), aNew, false, true);
+        }
 #endif
 
-            Bitmap aContent(mpContent->GetBitmap(aEmptyPoint, aSizePixel));
-            mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aAlphaMask));
-        }
-        else if(mpMask)
-        {
-            mpMask->EnableMapMode(false);
-            const Bitmap aMask(mpMask->GetBitmap(aEmptyPoint, aSizePixel));
+        Bitmap aContent(mpContent->GetBitmap(aEmptyPoint, aSizePixel));
+        mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aAlphaMask));
+    }
+    else if (mpMask)
+    {
+        mpMask->EnableMapMode(false);
+        const Bitmap aMask(mpMask->GetBitmap(aEmptyPoint, aSizePixel));
 
 #ifdef DBG_UTIL
-            if(bDoSaveForVisualControl)
-            {
-                SvFileStream aNew(
+        if (bDoSaveForVisualControl)
+        {
+            SvFileStream aNew(
 #ifdef _WIN32
-                    "c:\\mask.bmp",
+                "c:\\mask.bmp",
 #else
-                    "~/mask.bmp",
+                "~/mask.bmp",
 #endif
-                    StreamMode::WRITE|StreamMode::TRUNC);
-                WriteDIB(aMask, aNew, false, true);
-            }
-#endif
-
-            Bitmap aContent(mpContent->GetBitmap(aEmptyPoint, aSizePixel));
-            mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aMask));
-        }
-        else if(0.0 != fTrans)
-        {
-            sal_uInt8 nMaskValue(static_cast<sal_uInt8>(basegfx::fround(fTrans * 255.0)));
-            const AlphaMask aAlphaMask(aSizePixel, &nMaskValue);
-            Bitmap aContent(mpContent->GetBitmap(aEmptyPoint, aSizePixel));
-            mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aAlphaMask));
-        }
-        else
-        {
-            mrOutDev.DrawOutDev(maDestPixel.TopLeft(), aSizePixel,
-                                aEmptyPoint, aSizePixel,
-                                *mpContent);
+                StreamMode::WRITE | StreamMode::TRUNC);
+            WriteDIB(aMask, aNew, false, true);
         }
+#endif
 
-        mrOutDev.SetRasterOp(aOrigRasterOp);
-        mrOutDev.EnableMapMode(bWasEnabledDst);
+        Bitmap aContent(mpContent->GetBitmap(aEmptyPoint, aSizePixel));
+        mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aMask));
     }
-
-    VirtualDevice& impBufferDevice::getContent()
+    else if (0.0 != fTrans)
     {
-        assert(mpContent && "impBufferDevice: No content, check isVisible() before accessing (!)");
-        return *mpContent;
+        sal_uInt8 nMaskValue(static_cast<sal_uInt8>(basegfx::fround(fTrans * 255.0)));
+        const AlphaMask aAlphaMask(aSizePixel, &nMaskValue);
+        Bitmap aContent(mpContent->GetBitmap(aEmptyPoint, aSizePixel));
+        mrOutDev.DrawBitmapEx(maDestPixel.TopLeft(), BitmapEx(aContent, aAlphaMask));
     }
-
-    VirtualDevice& impBufferDevice::getMask()
+    else
     {
-        assert(mpContent && "impBufferDevice: No content, check isVisible() before accessing (!)");
-        if (!mpMask)
-        {
-            mpMask = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), true, true);
-            mpMask->SetMapMode(mpContent->GetMapMode());
+        mrOutDev.DrawOutDev(maDestPixel.TopLeft(), aSizePixel, aEmptyPoint, aSizePixel, *mpContent);
+    }
 
-            // do NOT copy AA flag for mask!
-        }
+    mrOutDev.SetRasterOp(aOrigRasterOp);
+    mrOutDev.EnableMapMode(bWasEnabledDst);
+}
 
-        return *mpMask;
-    }
+VirtualDevice& impBufferDevice::getContent()
+{
+    assert(mpContent && "impBufferDevice: No content, check isVisible() before accessing (!)");
+    return *mpContent;
+}
 
-    VirtualDevice& impBufferDevice::getTransparence()
+VirtualDevice& impBufferDevice::getMask()
+{
+    assert(mpContent && "impBufferDevice: No content, check isVisible() before accessing (!)");
+    if (!mpMask)
     {
-        OSL_ENSURE(mpContent, "impBufferDevice: No content, check isVisible() before accessing (!)");
-        if(!mpAlpha)
-        {
-            mpAlpha = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), true, false);
-            mpAlpha->SetMapMode(mpContent->GetMapMode());
+        mpMask = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), true, true);
+        mpMask->SetMapMode(mpContent->GetMapMode());
 
-            // copy AA flag for new target; masking needs to be smooth
-            mpAlpha->SetAntialiasing(mpContent->GetAntialiasing());
-        }
+        // do NOT copy AA flag for mask!
+    }
+
+    return *mpMask;
+}
+
+VirtualDevice& impBufferDevice::getTransparence()
+{
+    OSL_ENSURE(mpContent, "impBufferDevice: No content, check isVisible() before accessing (!)");
+    if (!mpAlpha)
+    {
+        mpAlpha = getVDevBuffer().alloc(mrOutDev, maDestPixel.GetSize(), true, false);
+        mpAlpha->SetMapMode(mpContent->GetMapMode());
 
-        return *mpAlpha;
+        // copy AA flag for new target; masking needs to be smooth
+        mpAlpha->SetAntialiasing(mpContent->GetAntialiasing());
     }
+
+    return *mpAlpha;
+}
 } // end of namespace drawinglayer
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
index 5305b1c0541e..90d351eac50f 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
@@ -21,32 +21,33 @@
 
 #include <vcl/virdev.hxx>
 
-namespace basegfx { class B2DRange; }
+namespace basegfx
+{
+class B2DRange;
+}
 
 // support methods for vcl direct gradient rendering
 
 namespace drawinglayer
 {
-    class impBufferDevice
-    {
-        OutputDevice&                       mrOutDev;
-        VclPtr<VirtualDevice>               mpContent;
-        VclPtr<VirtualDevice>               mpMask;
-        VclPtr<VirtualDevice>               mpAlpha;
-        ::tools::Rectangle                  maDestPixel;
-
-    public:
-        impBufferDevice(
-            OutputDevice& rOutDev,
-            const basegfx::B2DRange& rRange);
-        ~impBufferDevice();
-
-        void paint(double fTrans = 0.0);
-        bool isVisible() const { return !maDestPixel.IsEmpty(); }
-        VirtualDevice& getContent();
-        VirtualDevice& getMask();
-        VirtualDevice& getTransparence();
-    };
+class impBufferDevice
+{
+    OutputDevice& mrOutDev;
+    VclPtr<VirtualDevice> mpContent;
+    VclPtr<VirtualDevice> mpMask;
+    VclPtr<VirtualDevice> mpAlpha;
+    tools::Rectangle maDestPixel;
+
+public:
+    impBufferDevice(OutputDevice& rOutDev, const basegfx::B2DRange& rRange);
+    ~impBufferDevice();
+
+    void paint(double fTrans = 0.0);
+    bool isVisible() const { return !maDestPixel.IsEmpty(); }
+    VirtualDevice& getContent();
+    VirtualDevice& getMask();
+    VirtualDevice& getTransparence();
+};
 } // end of namespace drawinglayer
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index 466245492198..298745b86375 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -3752,8 +3752,6 @@ drawinglayer/source/processor2d/objectinfoextractor2d.cxx
 drawinglayer/source/processor2d/processor2dtools.cxx
 drawinglayer/source/processor2d/processorfromoutputdevice.cxx
 drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
-drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
-drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
 drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
 drawinglayer/source/processor2d/vclmetafileprocessor2d.hxx
 drawinglayer/source/processor3d/baseprocessor3d.cxx
commit 1a86c041cd9eaefd5869df984c780b84f847e6fd
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Sat May 2 19:29:49 2020 +0200
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon May 4 08:40:17 2020 +0200

    pragma once in vclhelperbufferdevice.hxx
    
    Change-Id: I12e53849fa23496799ba5e45fc0077cb9b54048c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93361
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
index 3bcbb979761e..5305b1c0541e 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
@@ -17,17 +17,12 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_DRAWINGLAYER_SOURCE_PROCESSOR2D_VCLHELPERBUFFERDEVICE_HXX
-#define INCLUDED_DRAWINGLAYER_SOURCE_PROCESSOR2D_VCLHELPERBUFFERDEVICE_HXX
+#pragma once
 
 #include <vcl/virdev.hxx>
 
-
-// predefines
-
 namespace basegfx { class B2DRange; }
 
-
 // support methods for vcl direct gradient rendering
 
 namespace drawinglayer
@@ -54,7 +49,4 @@ namespace drawinglayer
     };
 } // end of namespace drawinglayer
 
-
-#endif // INCLUDED_DRAWINGLAYER_SOURCE_PROCESSOR2D_VCLHELPERBUFFERDEVICE_HXX
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit b6caf887c6e47b65b3453b4319180325d67a5671
Author:     Andrea Gelmini <andrea.gelmini at gelma.net>
AuthorDate: Thu Apr 30 14:20:46 2020 +0200
Commit:     Julien Nabet <serval2412 at yahoo.fr>
CommitDate: Mon May 4 07:18:39 2020 +0200

    Fix typo
    
    Change-Id: Ic084ebbc04731b362bac0cf51e4b2bbdf5ef0526
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93208
    Tested-by: Jenkins
    Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>

diff --git a/basegfx/source/polygon/b2dpolygonclipper.cxx b/basegfx/source/polygon/b2dpolygonclipper.cxx
index cdcfeafbfaea..246d5a10ab84 100644
--- a/basegfx/source/polygon/b2dpolygonclipper.cxx
+++ b/basegfx/source/polygon/b2dpolygonclipper.cxx
@@ -547,7 +547,7 @@ namespace basegfx::utils
         * inside    |inside     |next
         * inside    |outside    |intersect with clip plane
         * outside   |outside    |nothing
-        * outside   |inside     |intersect with clip plane follwed by next
+        * outside   |inside     |intersect with clip plane followed by next
         *
         */
         static sal_uInt32 scissorLineSegment( ::basegfx::B2DPoint           *in_vertex,    // input buffer
commit a162f0f036fa1d0dc4dcd63c7859bda0b5702247
Author:     Andrea Gelmini <andrea.gelmini at gelma.net>
AuthorDate: Sun May 3 22:49:28 2020 +0200
Commit:     Andrea Gelmini <andrea.gelmini at gelma.net>
CommitDate: Mon May 4 07:01:22 2020 +0200

    Fix typos
    
    Change-Id: I63ae6adec1967bcf888538437e5e88f0acdea66e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93392
    Tested-by: Jenkins
    Reviewed-by: Andrea Gelmini <andrea.gelmini at gelma.net>

diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index 7e4a3e6a5345..ad3a89ed9c02 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -807,9 +807,9 @@ void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTex
         return;
     }
 
-    // Let's rely on null-terminaton for the length of the string. We
+    // Let's rely on null-termination for the length of the string. We
     // just know the number of bytes the string takes, but in OUString
-    // needs the number of charaters.
+    // needs the number of characters.
     OUString sText(pText.get());
 
     const double dFontSize = FPDFTextObj_GetFontSize(pPageObject);
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 346a8646abb9..ab5333498649 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -2161,7 +2161,7 @@ void PdfExportTest::testVersion15()
 // Check round-trip of importing and exporting the PDF with PDFium filter,
 // which imports the PDF document as multiple PDFs as graphic object.
 // Each page in the document has one PDF graphic object which content is
-// the correcponding page in the PDF. When such a document is exported,
+// the corresponding page in the PDF. When such a document is exported,
 // the PDF graphic gets embedded into the exported PDF document (as a
 // Form XObject).
 void PdfExportTest::testMultiPagePDF()
commit b58b06fdc5edc9dbe5178225b2c090f7faf1918a
Author:     Olivier Hallot <olivier.hallot at libreoffice.org>
AuthorDate: Sun May 3 22:54:53 2020 -0300
Commit:     Gerrit Code Review <gerrit at gerrit.libreoffice.org>
CommitDate: Mon May 4 03:54:53 2020 +0200

    Update git submodules
    
    * Update helpcontent2 from branch 'master'
      to 45490e779509af867ed9da186f834cc868d518db
      - tdf#132630 Hide Whitespace -> Show Whitespace
    
        Change-Id: I9a14cce825874338b87b5f82f55c52f661e7a877
        Reviewed-on: https://gerrit.libreoffice.org/c/help/+/93346
        Tested-by: Jenkins
        Reviewed-by: Olivier Hallot <olivier.hallot at libreoffice.org>

diff --git a/helpcontent2 b/helpcontent2
index f6eb36852572..45490e779509 160000
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit f6eb368525721bf598325dcf78c82604919b9484
+Subproject commit 45490e779509af867ed9da186f834cc868d518db

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list