tdf#113050 sdext.pdfimport: Plumb tiling pattern fill to pdfiprocessor

Change-Id: I68459834fd903d31c9b2e57d637265dd67da4f56
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163565
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/sdext/qa/unit/pdfimport.cxx b/sdext/qa/unit/pdfimport.cxx
index 377d08d..18988d6 100644
--- a/sdext/qa/unit/pdfimport.cxx
+++ b/sdext/qa/unit/pdfimport.cxx
@@ -428,6 +428,14 @@ namespace
        {
        }

        virtual void tilingPatternFill(int, int, int, int,
                                       double, double,
                                       int,
                                       css::geometry::AffineMatrix2D&,
                                       const css::uno::Sequence<css::beans::PropertyValue>&) override
        {
        }

        typedef std::unordered_map<sal_Int32,FontAttributes> IdToFontMap;
        typedef std::unordered_map<FontAttributes,sal_Int32,FontAttrHash> FontToIdMap;

diff --git a/sdext/source/pdfimport/inc/contentsink.hxx b/sdext/source/pdfimport/inc/contentsink.hxx
index 44f609c..5354e43 100644
--- a/sdext/source/pdfimport/inc/contentsink.hxx
+++ b/sdext/source/pdfimport/inc/contentsink.hxx
@@ -171,6 +171,11 @@ namespace pdfi
                                                css::beans::PropertyValue>& xImage,
                                          const css::uno::Sequence<
                                                css::beans::PropertyValue>& xMask) = 0;
        virtual void tilingPatternFill(int nX0, int nY0, int nX1, int nY1,
                                       double nxStep, double nyStep,
                                       int nPaintType,
                                       css::geometry::AffineMatrix2D& rMat,
                                       const css::uno::Sequence<css::beans::PropertyValue>& xTile) = 0;
    };

    typedef std::shared_ptr<ContentSink> ContentSinkSharedPtr;
diff --git a/sdext/source/pdfimport/inc/pdfiprocessor.hxx b/sdext/source/pdfimport/inc/pdfiprocessor.hxx
index 3fdc146..40cdbfd 100644
--- a/sdext/source/pdfimport/inc/pdfiprocessor.hxx
+++ b/sdext/source/pdfimport/inc/pdfiprocessor.hxx
@@ -150,6 +150,12 @@ namespace pdfi
                                          const css::uno::Sequence<
                                                css::beans::PropertyValue>& xMask) override;

        virtual void tilingPatternFill(int nX0, int nY0, int nX1, int nY1,
                                       double nxStep, double nyStep,
                                       int nPaintType,
                                       css::geometry::AffineMatrix2D& rMat,
                                       const css::uno::Sequence<css::beans::PropertyValue>& xTile) override;

        void startIndicator( const OUString& rText );
        void endIndicator();

diff --git a/sdext/source/pdfimport/tree/pdfiprocessor.cxx b/sdext/source/pdfimport/tree/pdfiprocessor.cxx
index 44485f4..cf65223 100644
--- a/sdext/source/pdfimport/tree/pdfiprocessor.cxx
+++ b/sdext/source/pdfimport/tree/pdfiprocessor.cxx
@@ -383,6 +383,15 @@ void PDFIProcessor::drawAlphaMaskedImage(const uno::Sequence<beans::PropertyValu

}

void PDFIProcessor::tilingPatternFill(int /*nX0*/, int /*nY0*/, int /*nX1*/, int /*nY1*/,
                                      double /*nxStep*/, double /*nyStep*/,
                                      int /* nPaintType */,
                                      css::geometry::AffineMatrix2D& /*rMat*/,
                                      const css::uno::Sequence<css::beans::PropertyValue>& /*xTile*/)
{
    // TODO
}

void PDFIProcessor::strokePath( const uno::Reference< rendering::XPolyPolygon2D >& rPath )
{
    basegfx::B2DPolyPolygon aPoly=basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
diff --git a/sdext/source/pdfimport/wrapper/wrapper.cxx b/sdext/source/pdfimport/wrapper/wrapper.cxx
index 6094bfa..d99103b 100644
--- a/sdext/source/pdfimport/wrapper/wrapper.cxx
+++ b/sdext/source/pdfimport/wrapper/wrapper.cxx
@@ -838,10 +838,13 @@ void LineParser::readTilingPatternFill()
    readDouble(aMat.m12);

    // The tile is an image with alpha
    [[maybe_unused]]const uno::Sequence<beans::PropertyValue> aTile ( readImageImpl() );
    (void)aTile; // Unused until later patch
    // TODO
    //   use the parsed data
    const uno::Sequence<beans::PropertyValue> aTile ( readImageImpl() );

    m_parser.m_pSink->tilingPatternFill( nX0, nY0, nX1, nY1,
         nXStep, nYStep,
         nPaintType,
         aMat,
         aTile );
}

void Parser::parseLine( std::string_view aLine )