tdf#113050 sdext.pdfimport Tiling pattern fill parser

Add a parser for the TilingPatternFill entry from the poppler wrapper.

This doesn't get triggered yet until the wrapper enables the
tilingPatternFill.

Change-Id: I34ab84ba1ab9d6773f33d667b324bef5d6c6e409
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163564
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/sdext/source/pdfimport/wrapper/keyword_list b/sdext/source/pdfimport/wrapper/keyword_list
index bf15ddb..4d1e6d2d 100644
--- a/sdext/source/pdfimport/wrapper/keyword_list
+++ b/sdext/source/pdfimport/wrapper/keyword_list
@@ -38,6 +38,7 @@ setTextRenderMode,SETTEXTRENDERMODE
setTransformation,SETTRANSFORMATION
startPage,STARTPAGE
strokePath,STROKEPATH
tilingPatternFill,TILINGPATTERNFILL
updateBlendMode,UPDATEBLENDMODE
updateCtm,UPDATECTM
updateFillColor,UPDATEFILLCOLOR
diff --git a/sdext/source/pdfimport/wrapper/wrapper.cxx b/sdext/source/pdfimport/wrapper/wrapper.cxx
index ade4dc5..6094bfa 100644
--- a/sdext/source/pdfimport/wrapper/wrapper.cxx
+++ b/sdext/source/pdfimport/wrapper/wrapper.cxx
@@ -107,6 +107,7 @@ enum parseKey {
    SETTRANSFORMATION,
    STARTPAGE,
    STROKEPATH,
    TILINGPATTERNFILL,
    UPDATEBLENDMODE,
    UPDATECTM,
    UPDATEFILLCOLOR,
@@ -195,6 +196,7 @@ public:
    void                 readLink();
    void                 readMaskedImage();
    void                 readSoftMaskedImage();
    void                 readTilingPatternFill();
};

/** Unescapes line-ending characters in input string. These
@@ -813,6 +815,35 @@ void LineParser::readSoftMaskedImage()
    m_parser.m_pSink->drawAlphaMaskedImage( aImage, aMask );
}

void LineParser::readTilingPatternFill()
{
    sal_Int32 nX0, nY0, nX1, nY1, nPaintType;
    double nXStep, nYStep;
    geometry::AffineMatrix2D aMat;
    readInt32(nX0);
    readInt32(nY0);
    readInt32(nX1);
    readInt32(nY1);

    readDouble(nXStep);
    readDouble(nYStep);

    readInt32(nPaintType);

    readDouble(aMat.m00);
    readDouble(aMat.m10);
    readDouble(aMat.m01);
    readDouble(aMat.m11);
    readDouble(aMat.m02);
    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
}

void Parser::parseLine( std::string_view aLine )
{
    OSL_PRECOND( m_pSink,         "Invalid sink" );
@@ -865,6 +896,8 @@ void Parser::parseLine( std::string_view aLine )
        }
        case STROKEPATH:
            m_pSink->strokePath(lp.readPath()); break;
        case TILINGPATTERNFILL:
            lp.readTilingPatternFill(); break;
        case UPDATECTM:
            lp.readTransformation(); break;
        case UPDATEFILLCOLOR: