[Libreoffice-commits] core.git: filter/Configuration_filter.mk filter/Library_gie.mk filter/source svtools/source

Bryan Quigley gquigs at gmail.com
Tue Dec 1 10:12:48 PST 2015


 filter/Configuration_filter.mk                                       |    3 
 filter/Library_gie.mk                                                |    1 
 filter/source/config/fragments/filters/draw_pct_Export.xcu           |   30 
 filter/source/config/fragments/filters/impress_pct_Export.xcu        |   30 
 filter/source/config/fragments/internalgraphicfilters/pct_Export.xcu |   27 
 filter/source/graphicfilter/epict/epict.cxx                          | 2269 ----------
 svtools/source/filter/exportdialog.cxx                               |    3 
 7 files changed, 2363 deletions(-)

New commits:
commit f3f653e106a3ff9d33280a1786ece974d7a77735
Author: Bryan Quigley <gquigs at gmail.com>
Date:   Tue Nov 17 13:49:13 2015 -0500

    tdf#92925 Remove PCT export
    
    Mac PICT was replaced (by PDF) after Apple moved from Mac Classic.
    I tested import and it still works
    
    Change-Id: I931036d3946240280d406bd4abbcef6e0f86d894
    Reviewed-on: https://gerrit.libreoffice.org/20029
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
index bf6dc92..0f3081e 100644
--- a/filter/Configuration_filter.mk
+++ b/filter/Configuration_filter.mk
@@ -777,7 +777,6 @@ $(eval $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_drawgraphics_f
 	draw_jpg_Export \
 	draw_met_Export \
 	draw_pbm_Export \
-	draw_pct_Export \
 	draw_pgm_Export \
 	draw_png_Export \
 	draw_ppm_Export \
@@ -824,7 +823,6 @@ $(eval $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_impressgraphic
 	impress_jpg_Export \
 	impress_met_Export \
 	impress_pbm_Export \
-	impress_pct_Export \
 	impress_pgm_Export \
 	impress_png_Export \
 	impress_ppm_Export \
@@ -907,7 +905,6 @@ $(eval $(call filter_Configuration_add_internal_filters,fcfg_langpack,fcfg_inter
 	pcd_Import_Base \
 	pcd_Import_Base4 \
 	pcd_Import_Base16 \
-	pct_Export \
 	pct_Import \
 	pcx_Import \
 	pgm_Export \
diff --git a/filter/Library_gie.mk b/filter/Library_gie.mk
index f2b42cd..f68f3f9 100644
--- a/filter/Library_gie.mk
+++ b/filter/Library_gie.mk
@@ -47,7 +47,6 @@ $(eval $(call gb_Library_add_exception_objects,gie,\
 	filter/source/graphicfilter/eppm/eppm \
 	filter/source/graphicfilter/eps/eps \
 	filter/source/graphicfilter/egif/giflzwc \
-	filter/source/graphicfilter/epict/epict \
 	filter/source/graphicfilter/eras/eras \
 	filter/source/graphicfilter/itiff/ccidecom \
 	filter/source/graphicfilter/itiff/itiff \
diff --git a/filter/source/config/fragments/filters/draw_pct_Export.xcu b/filter/source/config/fragments/filters/draw_pct_Export.xcu
deleted file mode 100644
index d96b22c..0000000
--- a/filter/source/config/fragments/filters/draw_pct_Export.xcu
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
- * 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 incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
--->
-    <node oor:name="draw_pct_Export" oor:op="replace">
-        <prop oor:name="Flags"><value>EXPORT ALIEN SUPPORTSSELECTION</value></prop>
-        <prop oor:name="UIComponent"><value>com.sun.star.svtools.SvFilterOptionsDialog</value></prop>
-        <prop oor:name="FilterService"/>
-        <prop oor:name="UserData"><value></value></prop>
-        <prop oor:name="UIName">
-            <value xml:lang="en-US">PCT - Mac Pict</value>
-        </prop>
-        <prop oor:name="FileFormatVersion"><value>0</value></prop>
-        <prop oor:name="Type"><value>pct_Mac_Pict</value></prop>
-        <prop oor:name="TemplateName"/>
-        <prop oor:name="DocumentService"><value>com.sun.star.drawing.DrawingDocument</value></prop>
-    </node>
diff --git a/filter/source/config/fragments/filters/impress_pct_Export.xcu b/filter/source/config/fragments/filters/impress_pct_Export.xcu
deleted file mode 100644
index 84883ed..0000000
--- a/filter/source/config/fragments/filters/impress_pct_Export.xcu
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
- * 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 incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
--->
-    <node oor:name="impress_pct_Export" oor:op="replace">
-        <prop oor:name="Flags"><value>EXPORT ALIEN SUPPORTSSELECTION</value></prop>
-        <prop oor:name="UIComponent"><value>com.sun.star.svtools.SvFilterOptionsDialog</value></prop>
-        <prop oor:name="FilterService"/>
-        <prop oor:name="UserData"><value></value></prop>
-        <prop oor:name="UIName">
-            <value xml:lang="en-US">PCT - Mac Pict</value>
-        </prop>
-        <prop oor:name="FileFormatVersion"><value>0</value></prop>
-        <prop oor:name="Type"><value>pct_Mac_Pict</value></prop>
-        <prop oor:name="TemplateName"/>
-        <prop oor:name="DocumentService"><value>com.sun.star.presentation.PresentationDocument</value></prop>
-    </node>
diff --git a/filter/source/config/fragments/internalgraphicfilters/pct_Export.xcu b/filter/source/config/fragments/internalgraphicfilters/pct_Export.xcu
deleted file mode 100644
index 707a4e2..0000000
--- a/filter/source/config/fragments/internalgraphicfilters/pct_Export.xcu
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
- * 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 incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
--->
-    <node oor:name="pct_Export" oor:op="replace"  >
-        <prop oor:name="Type"><value>pct_Mac_Pict</value></prop>
-        <prop oor:name="FormatName"><value>ept</value></prop>
-        <prop oor:name="RealFilterName"/>
-        <prop oor:name="UIComponent"><value>com.sun.star.svtools.SvFilterOptionsDialog</value></prop>
-        <prop oor:name="UIName">
-            <value xml:lang="en-US">PCT - Mac Pict</value>
-        </prop>
-        <prop oor:name="Flags"><value>EXPORT</value></prop>
-    </node>
diff --git a/filter/source/graphicfilter/epict/epict.cxx b/filter/source/graphicfilter/epict/epict.cxx
deleted file mode 100644
index 2d4248d..0000000
--- a/filter/source/graphicfilter/epict/epict.cxx
+++ /dev/null
@@ -1,2269 +0,0 @@
-/* -*- 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 incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <vcl/metaact.hxx>
-#include <vcl/graphicfilter.hxx>
-#include <svl/solar.hrc>
-#include <vcl/fltcall.hxx>
-
-#include <math.h>
-#include <vcl/bmpacc.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/gradient.hxx>
-#include <vcl/hatch.hxx>
-#include <vcl/metric.hxx>
-#include <vcl/font.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/gdimtf.hxx>
-#include <tools/bigint.hxx>
-#include <tools/fract.hxx>
-#include <o3tl/numeric.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <memory>
-
-// PictWriter
-struct PictWriterAttrStackMember {
-    struct PictWriterAttrStackMember *  pSucc;
-    Color                               aLineColor;
-    Color                               aFillColor;
-    RasterOp                            eRasterOp;
-    vcl::Font                           aFont;
-    MapMode                             aMapMode;
-    Rectangle                           aClipRect;
-};
-
-
-enum PictDrawingMethod {
-    PDM_FRAME, PDM_PAINT, PDM_ERASE, PDM_INVERT, PDM_FILL
-};
-
-
-struct PictPattern {
-    sal_uInt32 nLo, nHi;
-};
-
-class PictWriter {
-
-private:
-
-    bool bStatus;
-    sal_uLong nLastPercent; // with which number pCallback has been called the last time
-    css::uno::Reference< css::task::XStatusIndicator > xStatusIndicator;
-
-    SvStream * pPict;
-
-    // current attributes in the source-metafile:
-    Color       aLineColor;
-    Color       aFillColor;
-    RasterOp    eSrcRasterOp;
-    vcl::Font   aSrcFont;
-    MapMode     aSrcMapMode;
-    MapMode     aTargetMapMode;
-    Rectangle   aClipRect;
-    PictWriterAttrStackMember * pAttrStack;
-
-    // current attributes in the target-metafile and whether they are valid
-    bool bDstBkPatValid;
-    sal_uInt8        nDstTxFace;            bool bDstTxFaceValid;
-    RasterOp    eDstTxMode;         bool bDstTxModeValid;
-    sal_uInt16      nDstPnSize;         bool bDstPnSizeValid;
-    RasterOp    eDstPnMode;         bool bDstPnModeValid;
-    PictPattern aDstPnPat;          bool bDstPnPatValid;
-    bool bDstFillPatValid;
-    sal_uInt16      nDstTxSize;         bool bDstTxSizeValid;
-    Color       aDstFgCol;          bool bDstFgColValid;
-    Color       aDstBkCol;          bool bDstBkColValid;
-    Point       aDstPenPosition;    bool bDstPenPositionValid;
-    Point       aDstTextPosition;   bool bDstTextPositionValid;
-    OUString    aDstFontName; sal_uInt16 nDstFontNameId; bool bDstFontNameValid;
-
-    sal_uLong nNumberOfActions;  // number of actions in the GDIMetafile
-    sal_uLong nNumberOfBitmaps;  // number of bitmaps
-    sal_uLong nWrittenActions;   // number of already processed actions during writing the Opcodes
-    sal_uLong nWrittenBitmaps;   // number of already written Bitmaps
-    sal_uLong nActBitmapPercent; // what percentage of the next bitmap is already written
-
-    void MayCallback();
-        // calculates a percentage on the basis of the 5 parameters above
-        // and then does a Callback should the situation arise. Sets bStatus to sal_False
-        // if the user wants to cancel
-
-    void CountActionsAndBitmaps(const GDIMetaFile & rMTF);
-        // counts the bitmaps and actions (nNumberOfActions and nNumberOfBitmaps
-        // have to be set to 0 at the beginning, since this method is recursive)
-
-    static tools::Polygon PolyPolygonToPolygon(const tools::PolyPolygon & rPoly);
-        // generates a relatively sane polygon on the basis of a PolyPolygon
-
-    Rectangle MapRectangle( const Rectangle& rRect );
-    void WritePoint(const Point & rPoint);
-    void WriteSize(const Size & rSize);
-    void WriteRGBColor(const Color & rColor);
-    void WriteString( const OUString & rString );
-    void WriteRectangle(const Rectangle & rRect);
-    void WritePolygon(const tools::Polygon & rPoly);
-    void WriteArcAngles(const Rectangle & rRect, const Point & rStartPt, const Point & rEndPt);
-
-    static void ConvertLinePattern(PictPattern & rPat, bool bVisible);
-    static void ConvertFillPattern(PictPattern & rPat, bool bVisible);
-
-    void WriteOpcode_TxFace(const vcl::Font & rFont);
-    void WriteOpcode_TxMode(RasterOp eMode);
-    void WriteOpcode_PnSize(sal_uInt16 nSize);
-    void WriteOpcode_PnMode(RasterOp eMode);
-    void WriteOpcode_PnLinePat(bool bVisible);
-    void WriteOpcode_PnFillPat(bool bVisible);
-    void WriteOpcode_OvSize(const Size & rSize);
-    void WriteOpcode_TxSize(sal_uInt16 nSize);
-    void WriteOpcode_RGBFgCol(const Color & rColor);
-    void WriteOpcode_RGBBkCol(const Color & rColor);
-    void WriteOpcode_Line(const Point & rLocPt, const Point & rNewPt);
-    void WriteOpcode_LineFrom(const Point & rNewPt);
-    void WriteOpcode_Text(const Point & rPoint, const OUString& rString, bool bDelta);
-    void WriteOpcode_FontName(const vcl::Font & rFont);
-    void WriteOpcode_ClipRect( const Rectangle& rRect );
-    void WriteOpcode_Rect(PictDrawingMethod eMethod, const Rectangle & rRect);
-    void WriteOpcode_SameRect(PictDrawingMethod eMethod);
-    void WriteOpcode_RRect(PictDrawingMethod eMethod, const Rectangle & rRect);
-    void WriteOpcode_SameRRect(PictDrawingMethod eMethod);
-    void WriteOpcode_Oval(PictDrawingMethod eMethod, const Rectangle & rRect);
-    void WriteOpcode_SameOval(PictDrawingMethod eMethod);
-    void WriteOpcode_Arc(PictDrawingMethod eMethod, const Rectangle & rRect,
-                         const Point & rStartPt, const Point & rEndPt);
-    void WriteOpcode_SameArc(PictDrawingMethod eMethod, const Rectangle & rRect,
-                             const Point & rStartPt, const Point & rEndPt);
-    void WriteOpcode_Poly(PictDrawingMethod eMethod, const tools::Polygon & rPoly);
-    void WriteOpcode_BitsRect(const Point & rPoint, const Size & rSize, const Bitmap & rBitmap);
-    void WriteOpcode_EndOfFile();
-
-    void SetAttrForPaint();
-    void SetAttrForFrame();
-    void SetAttrForText();
-
-    void WriteTextArray(Point & rPoint, const OUString& rString, const long* pDXAry);
-
-    void HandleLineInfoPolyPolygons(const LineInfo& rInfo, const basegfx::B2DPolygon& rLinePolygon);
-    void WriteOpcodes(const GDIMetaFile & rMTF);
-
-    void WriteHeader(const GDIMetaFile & rMTF);
-    void UpdateHeader();
-
-public:
-
-    bool WritePict( const GDIMetaFile & rMTF, SvStream & rTargetStream, FilterConfigItem* pFilterConfigItem );
-};
-
-
-// Methods of PictWriter
-void PictWriter::MayCallback()
-{
-    if ( xStatusIndicator.is() )
-    {
-        sal_uLong nPercent;
-        nPercent=((nWrittenBitmaps<<14)+(nActBitmapPercent<<14)/100+nWrittenActions)
-                *100
-                /((nNumberOfBitmaps<<14)+nNumberOfActions);
-
-        if (nPercent>=nLastPercent+3)
-        {
-            nLastPercent=nPercent;
-            if( nPercent<=100 )
-                xStatusIndicator->setValue( nPercent );
-        }
-    }
-}
-
-void PictWriter::CountActionsAndBitmaps(const GDIMetaFile & rMTF)
-{
-    size_t              nAction, nActionCount;
-
-    nActionCount = rMTF.GetActionSize();
-
-    for (nAction=0; nAction < nActionCount; nAction++)
-    {
-        const MetaAction* pMA = rMTF.GetAction( nAction );
-
-        switch( pMA->GetType() )
-        {
-            case MetaActionType::BMP:
-            case MetaActionType::BMPSCALE:
-            case MetaActionType::BMPSCALEPART:
-            case MetaActionType::BMPEX:
-            case MetaActionType::BMPEXSCALE:
-            case MetaActionType::BMPEXSCALEPART:
-                nNumberOfBitmaps++;
-            break;
-            default: break;
-        }
-
-        nNumberOfActions++;
-    }
-}
-
-
-tools::Polygon PictWriter::PolyPolygonToPolygon(const tools::PolyPolygon & rPolyPoly)
-{
-    sal_uInt16 nCount,nSize1,nSize2,np,i1,i2,i3,nBestIdx1,nBestIdx2;
-    long nDistSqr;
-    Point aP1,aPRel;
-    tools::Polygon aPoly1, aPoly2, aPoly3;
-
-    nCount=rPolyPoly.Count();
-    if (nCount==0) return tools::Polygon(0);
-
-    aPoly1=rPolyPoly.GetObject(0);
-    for (np=1; np<nCount; np++) {
-        aPoly2=rPolyPoly.GetObject(np);
-
-        // The following code merges aPoly1 and aPoly2 to aPoly1
-        nSize1=aPoly1.GetSize();
-        nSize2=aPoly2.GetSize();
-
-        // At first we look for a point in aPoly1 (referenced by nBestIdx1) and a
-        // point in aPoly2 (referenced by nBestid2), which are as close together as
-        // possible. Because this is following square complexity and therefore some
-        // pictures would need infinite time to export, we limit the number of test
-        // by the number of 1000 and cancel the search if necessary preliminarily.
-        // The result of this will not be wrong but rather not so beautiful.
-        long nCountdownTests = 1000;
-        long nBestDistSqr = 0x7fffffff;
-        nBestIdx1=0;
-        nBestIdx2=0;
-        for (i1=0; i1<nSize1; i1++) {
-            aP1=aPoly1.GetPoint(i1);
-            for (i2=0; i2<nSize2; i2++) {
-                aPRel=aPoly2.GetPoint(i2); aPRel-=aP1;
-                nDistSqr=aPRel.X()*aPRel.X()+aPRel.Y()*aPRel.Y();
-                if (nDistSqr<nBestDistSqr) {
-                    nBestIdx1=i1;
-                    nBestIdx2=i2;
-                    nBestDistSqr=nDistSqr;
-                }
-                if (nCountdownTests<=0) break;
-                nCountdownTests--;
-            }
-            if (nCountdownTests<=0) break;
-        }
-
-        // Now aPoly1 and aPoly2 are being merged to a polygon aPoly3 (later aPoly1)
-        // Both polygons are being connected by two additional edges between the points found above
-        aPoly3.Clear();
-        aPoly3.SetSize(nSize1+nSize2+2);
-        i3=0;
-        for (i1=nBestIdx1; i1<nSize1;     i1++) aPoly3.SetPoint(aPoly1.GetPoint(i1),i3++);
-        for (i1=0;         i1<=nBestIdx1; i1++) aPoly3.SetPoint(aPoly1.GetPoint(i1),i3++);
-        for (i2=nBestIdx2; i2<nSize2;     i2++) aPoly3.SetPoint(aPoly2.GetPoint(i2),i3++);
-        for (i2=0;         i2<=nBestIdx2; i2++) aPoly3.SetPoint(aPoly2.GetPoint(i2),i3++);
-
-        aPoly1=aPoly3;
-    }
-    return aPoly1;
-}
-
-
-void PictWriter::WritePoint(const Point & rPoint)
-{
-    Point aPoint = OutputDevice::LogicToLogic( rPoint, aSrcMapMode, aTargetMapMode );
-    pPict->WriteInt16( aPoint.Y() ).WriteInt16( aPoint.X() );
-}
-
-
-void PictWriter::WriteSize(const Size & rSize)
-{
-    OutputDevice::LogicToLogic( rSize, aSrcMapMode, aTargetMapMode ); // -Wall is this needed.
-    pPict->WriteInt16( rSize.Height() ).WriteInt16( rSize.Width() );
-}
-
-
-void PictWriter::WriteRGBColor(const Color & rColor)
-{
-    const sal_uInt16 nR = ( (sal_uInt16) rColor.GetRed() << 8 ) | (sal_uInt16) rColor.GetRed();
-    const sal_uInt16 nG = ( (sal_uInt16) rColor.GetGreen() << 8 ) | (sal_uInt16) rColor.GetGreen();
-    const sal_uInt16 nB = ( (sal_uInt16) rColor.GetBlue() << 8 ) | (sal_uInt16) rColor.GetBlue();
-
-    pPict->WriteUInt16( nR ).WriteUInt16( nG ).WriteUInt16( nB );
-}
-
-void PictWriter::WriteString( const OUString & rString )
-{
-    OString aString(OUStringToOString(rString, osl_getThreadTextEncoding()));
-    sal_Int32 nLen = aString.getLength();
-    if ( nLen > 255 )
-        nLen = 255;
-    pPict->WriteUChar( nLen  );
-    for (sal_Int32 i = 0; i < nLen; ++i)
-        pPict->WriteChar( aString[i] );
-}
-
-Rectangle PictWriter::MapRectangle( const Rectangle& rRect )
-{
-    Point   aPoint = OutputDevice::LogicToLogic( rRect.TopLeft(), aSrcMapMode, aTargetMapMode );
-    Size    aSize = OutputDevice::LogicToLogic( rRect.GetSize(), aSrcMapMode, aTargetMapMode );
-    Rectangle aRect( aPoint, aSize );
-    aRect.Justify();
-    ++aRect.Bottom();
-    ++aRect.Right();
-    return aRect;
-}
-
-void PictWriter::WriteRectangle(const Rectangle & rRect)
-{
-    Rectangle aRect( MapRectangle( rRect ) );
-    pPict ->WriteInt16( aRect.Top() ).WriteInt16( aRect.Left() )
-           .WriteInt16( aRect.Bottom() ).WriteInt16( aRect.Right() );
-}
-
-void PictWriter::WritePolygon(const tools::Polygon & rPoly)
-{
-    sal_uInt16 nDataSize,i,nSize;
-    short nMinX = 0, nMinY = 0, nMaxX = 0, nMaxY = 0;
-    tools::Polygon aPoly(rPoly);
-
-    nSize=aPoly.GetSize();
-
-    if (aPoly.GetPoint(0) != aPoly.GetPoint(nSize-1))
-    {
-        nSize++;
-        aPoly.SetSize(nSize);
-        aPoly.SetPoint(aPoly.GetPoint(0),nSize-1);
-    }
-
-    nDataSize=nSize*4+10;
-    for (i=0; i<nSize; i++)
-    {
-        Point aPoint = OutputDevice::LogicToLogic( aPoly.GetPoint( i ),
-                                                   aSrcMapMode,
-                                                   aTargetMapMode );
-
-        short nx = (short) aPoint.X();
-        short ny = (short) aPoint.Y();
-
-        if ( i==0 || nMinX>nx )
-            nMinX=nx;
-        if ( i==0 || nMinY>ny )
-            nMinY=ny;
-        if ( i==0 || nMaxX<nx )
-            nMaxX=nx;
-        if ( i==0 || nMaxY<ny )
-            nMaxY=ny;
-    }
-
-    pPict->WriteUInt16( nDataSize ).WriteInt16( nMinY ).WriteInt16( nMinX ).WriteInt16( nMaxY ).WriteInt16( nMaxX );
-
-    for (i=0; i<nSize; i++)
-        WritePoint( aPoly.GetPoint(i) );
-}
-
-
-void PictWriter::WriteArcAngles(const Rectangle & rRect, const Point & rStartPt, const Point & rEndPt)
-{
-    Point       aStartPt = OutputDevice::LogicToLogic( rStartPt,
-                                                       aSrcMapMode,
-                                                       aTargetMapMode );
-    Point       aEndPt = OutputDevice::LogicToLogic( rEndPt,
-                                                     aSrcMapMode,
-                                                     aTargetMapMode );
-    Rectangle   aRect( OutputDevice::LogicToLogic( rRect.TopLeft(),
-                                                   aSrcMapMode,
-                                                   aTargetMapMode ),
-                       OutputDevice::LogicToLogic( rRect.GetSize(),
-                                                   aSrcMapMode,
-                                                   aTargetMapMode ) );
-    Point aCenter;
-    double fAngS, fAngE, fdx, fdy;
-    short nStartAngle, nArcAngle;
-
-
-    aCenter=Point( ( aRect.Left() + aRect.Right() ) >> 1,
-                   ( aRect.Top() + aRect.Bottom() ) >> 1 );
-
-    fdx=(double)(aStartPt.X()-aCenter.X());
-    fdy=(double)(aStartPt.Y()-aCenter.Y());
-    if ( fdx==0.0 && fdy==0.0 )
-        fdx=1.0;
-    fAngE=atan2(fdx,-fdy);
-
-    fdx=(double)(aEndPt.X()-aCenter.X());
-    fdy=(double)(aEndPt.Y()-aCenter.Y());
-    if ( fdx==0.0 && fdy==0.0 )
-        fdx=1.0;
-    fAngS=atan2(fdx,-fdy);
-
-    nStartAngle=(short)(fAngS*180.0/3.14159265359);
-    nArcAngle=((short)(fAngE*180.0/3.14159265359))-nStartAngle;
-    if (nArcAngle<0)
-        nArcAngle += 360;
-    pPict->WriteInt16( nStartAngle ).WriteInt16( nArcAngle );
-}
-
-
-void PictWriter::ConvertLinePattern(PictPattern & rPat, bool bVisible)
-{
-    if( bVisible )
-    {
-        rPat.nHi=0xffffffff;
-        rPat.nLo=0xffffffff;
-    }
-    else
-    {
-        rPat.nHi=0x00000000;
-        rPat.nLo=0x00000000;
-    }
-}
-
-void PictWriter::ConvertFillPattern(PictPattern & rPat, bool bVisible)
-{
-    if( bVisible )
-    {
-        rPat.nHi=0xffffffff;
-        rPat.nLo=0xffffffff;
-    }
-    else
-    {
-        rPat.nHi=0x00000000;
-        rPat.nLo=0x00000000;
-    }
-}
-
-
-void PictWriter::WriteOpcode_TxFace(const vcl::Font & rFont)
-{
-    sal_uInt8 nFace;
-    FontWeight eWeight;
-
-    nFace=0;
-    eWeight=rFont.GetWeight();
-    if (eWeight==WEIGHT_BOLD ||
-        eWeight==WEIGHT_SEMIBOLD ||
-        eWeight==WEIGHT_ULTRABOLD ||
-        eWeight==WEIGHT_BLACK)                nFace|=0x01;
-    if (rFont.GetItalic()!=ITALIC_NONE)       nFace|=0x02;
-    if (rFont.GetUnderline()!=UNDERLINE_NONE) nFace|=0x04;
-    if (rFont.IsOutline())              nFace|=0x08;
-    if (rFont.IsShadow())               nFace|=0x10;
-
-    if (!bDstTxFaceValid || nDstTxFace!=nFace) {
-        pPict->WriteUInt16( 0x0004 ).WriteUChar( nFace ).WriteUChar( 0 );
-        nDstTxFace=nFace;
-        bDstTxFaceValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_TxMode(RasterOp eMode)
-{
-    sal_uInt16 nVal;
-
-    if (!bDstTxModeValid || eDstTxMode!=eMode) {
-        switch (eMode) {
-            case ROP_INVERT: nVal=0x000c; break;
-            case ROP_XOR:    nVal=0x000a; break;
-            default:         nVal=0x0008;
-        }
-        pPict->WriteUInt16( 0x0005 ).WriteUInt16( nVal );
-        eDstTxMode=eMode;
-        bDstTxModeValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_PnSize(sal_uInt16 nSize)
-{
-    if (nSize==0) nSize=1;
-    if (!bDstPnSizeValid || nDstPnSize!=nSize) {
-        pPict->WriteUInt16( 0x0007 ).WriteUInt16( nSize ).WriteUInt16( nSize );
-        nDstPnSize=nSize;
-        bDstPnSizeValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_PnMode(RasterOp eMode)
-{
-    sal_uInt16 nVal;
-
-    if (!bDstPnModeValid || eDstPnMode!=eMode) {
-        switch (eMode)
-        {
-            case ROP_INVERT: nVal=0x000c; break;
-            case ROP_XOR:    nVal=0x000a; break;
-            default:         nVal=0x0008;
-        }
-        pPict->WriteUInt16( 0x0008 ).WriteUInt16( nVal );
-        eDstPnMode=eMode;
-        bDstPnModeValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_PnLinePat(bool bVisible)
-{
-    PictPattern aPat;
-
-    ConvertLinePattern(aPat,bVisible);
-    if (!bDstPnPatValid || aDstPnPat.nHi!=aPat.nHi || aDstPnPat.nLo!=aPat.nLo) {
-        pPict->WriteUInt16( 0x0009 ).WriteUInt32( aPat.nHi ).WriteUInt32( aPat.nLo );
-        aDstPnPat=aPat;
-        bDstPnPatValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_PnFillPat(bool bVisible)
-{
-    PictPattern aPat;
-
-    ConvertFillPattern(aPat,bVisible);
-    if (!bDstPnPatValid || aDstPnPat.nHi!=aPat.nHi || aDstPnPat.nLo!=aPat.nLo) {
-        pPict->WriteUInt16( 0x0009 ).WriteUInt32( aPat.nHi ).WriteUInt32( aPat.nLo );
-        aDstPnPat=aPat;
-        bDstPnPatValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_OvSize(const Size & rSize)
-{
-    pPict->WriteUInt16( 0x000b );
-    WriteSize(rSize);
-}
-
-
-void PictWriter::WriteOpcode_TxSize(sal_uInt16 nSize)
-{
-    if (!bDstTxSizeValid || nDstTxSize!=nSize) {
-
-        nDstTxSize = (sal_uInt16) OutputDevice::LogicToLogic( Size( 0, nSize ),
-                                                          aSrcMapMode, aTargetMapMode ).Height();
-
-        pPict->WriteUInt16( 0x000d ).WriteUInt16( nDstTxSize );
-        bDstTxSizeValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_RGBFgCol(const Color & rColor)
-{
-    if (!bDstFgColValid || aDstFgCol!=rColor) {
-        pPict->WriteUInt16( 0x001a );
-        WriteRGBColor(rColor);
-        aDstFgCol=rColor;
-        bDstFgColValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_RGBBkCol(const Color & rColor)
-{
-    if (!bDstBkColValid || aDstBkCol!=rColor) {
-        pPict->WriteUInt16( 0x001b );
-        WriteRGBColor(rColor);
-        aDstBkCol=rColor;
-        bDstBkColValid=true;
-    }
-}
-
-
-void PictWriter::WriteOpcode_Line(const Point & rLocPt, const Point & rNewPt)
-{
-    Point aLocPt = OutputDevice::LogicToLogic( rLocPt,
-                                               aSrcMapMode,
-                                               aTargetMapMode );
-    Point aNewPt = OutputDevice::LogicToLogic( rNewPt,
-                                               aSrcMapMode,
-                                               aTargetMapMode );
-    long  dh,dv;
-
-    dh=aNewPt.X()-aLocPt.X();
-    dv=aNewPt.Y()-aLocPt.Y();
-    if (dh<=127 && dh>=-128 && dv<=127 && dv>=-128)
-    { // ShortLine
-        pPict->WriteUInt16( 0x0022 );
-        WritePoint(rLocPt);
-        pPict->WriteChar( (char)dh ).WriteChar( (char)dv );
-    }
-    else
-    {
-        pPict->WriteUInt16( 0x0020 );
-        WritePoint(rLocPt);
-        WritePoint(rNewPt);
-    }
-    aDstPenPosition=rNewPt;
-    bDstPenPositionValid=true;
-}
-
-
-void PictWriter::WriteOpcode_LineFrom(const Point & rNewPt)
-{
-    Point aNewPt = OutputDevice::LogicToLogic( rNewPt,
-                                               aSrcMapMode,
-                                               aTargetMapMode );
-    long  dh,dv;
-
-    dh = aNewPt.X()-aDstPenPosition.X();
-    dv = aNewPt.Y()-aDstPenPosition.Y();
-
-    if (dh<=127 && dh>=-128 && dv<=127 && dv>=-128)
-    { // ShortLine
-        pPict->WriteUInt16( 0x0023 );
-        pPict->WriteChar( (char)dh ).WriteChar( (char)dv );
-    }
-    else
-    {
-        pPict->WriteUInt16( 0x0021 );
-        WritePoint(rNewPt);
-    }
-    aDstPenPosition=rNewPt;
-    bDstPenPositionValid=true;
-}
-
-
-void PictWriter::WriteOpcode_Text(const Point & rPoint, const OUString& rString, bool bDelta)
-{
-    Point aPoint = OutputDevice::LogicToLogic( rPoint,
-                                               aSrcMapMode,
-                                               aTargetMapMode );
-    long  dh,dv;
-    sal_uLong nPos;
-
-    nPos = pPict->Tell();
-    dh = aPoint.X()-aDstTextPosition.X();
-    dv = aPoint.Y()-aDstTextPosition.Y();
-
-    if (!bDstTextPositionValid || dh<0 || dh>255 || dv<0 || dv>255 || !bDelta)
-    {
-        pPict->WriteUInt16( 0x0028 );
-        WritePoint(rPoint);
-    }
-    else if (dv==0)
-    {
-        pPict->WriteUInt16( 0x0029 ).WriteUChar( dh );
-    }
-    else if (dh==0)
-    {
-        pPict->WriteUInt16( 0x002a ).WriteUChar( dv );
-    }
-    else
-    {
-        pPict->WriteUInt16( 0x002b ).WriteUChar( dh ).WriteUChar( dv );
-    }
-
-    WriteString( rString );
-    if (((pPict->Tell()-nPos)&1)!=0)
-        pPict->WriteUChar( 0 );
-
-    aDstTextPosition = aPoint;
-    bDstTextPositionValid=true;
-}
-
-
-void PictWriter::WriteOpcode_FontName(const vcl::Font & rFont)
-{
-    sal_uInt16 nDataLen,nFontId;
-
-    switch (rFont.GetFamily()) {
-        case FAMILY_MODERN:     nFontId=22; break;
-        case FAMILY_ROMAN:      nFontId=20; break;
-        case FAMILY_SWISS:      nFontId=21; break;
-        default:                nFontId=1;
-    }
-
-    if (!bDstFontNameValid || nDstFontNameId!=nFontId || aDstFontName!=rFont.GetName())
-    {
-        OString aString(OUStringToOString(rFont.GetName(), osl_getThreadTextEncoding()));
-        sal_uInt16 nFontNameLen = aString.getLength();
-        if ( nFontNameLen )
-        {
-            nDataLen = 3 + nFontNameLen;
-            pPict->WriteUInt16( 0x002c ).WriteUInt16( nDataLen ).WriteUInt16( nFontId );
-            WriteString( rFont.GetName() );
-            if ( ( nFontNameLen & 1 ) == 0 )
-                pPict->WriteUChar( 0 );
-        }
-        pPict->WriteUInt16( 0x0003 ).WriteUInt16( nFontId );
-        aDstFontName=rFont.GetName();
-        nDstFontNameId=nFontId;
-        bDstFontNameValid=true;
-    }
-}
-
-void PictWriter::WriteOpcode_ClipRect( const Rectangle& rRect )
-{
-    Rectangle aRect( MapRectangle( rRect ) );
-    ++aRect.Bottom();
-    ++aRect.Right();
-    pPict ->WriteUInt16( 1 )    // opcode 1
-           .WriteUInt16( 10 )   // data size
-           .WriteInt16( aRect.Top() ).WriteInt16( aRect.Left() )
-           .WriteInt16( aRect.Bottom() ).WriteInt16( aRect.Right() );
-    aClipRect = aRect;
-}
-
-void PictWriter::WriteOpcode_Rect(PictDrawingMethod eMethod, const Rectangle & rRect)
-{
-    sal_uInt16 oc;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0030; break;
-        case PDM_PAINT:  oc=0x0031; break;
-        case PDM_ERASE:  oc=0x0032; break;
-        case PDM_INVERT: oc=0x0033; break;
-        case PDM_FILL:   oc=0x0034; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-    WriteRectangle(rRect);
-}
-
-
-void PictWriter::WriteOpcode_SameRect(PictDrawingMethod eMethod)
-{
-    sal_uInt16 oc;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0038; break;
-        case PDM_PAINT:  oc=0x0039; break;
-        case PDM_ERASE:  oc=0x003a; break;
-        case PDM_INVERT: oc=0x003b; break;
-        case PDM_FILL:   oc=0x003c; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-}
-
-
-void PictWriter::WriteOpcode_RRect(PictDrawingMethod eMethod, const Rectangle & rRect)
-{
-    sal_uInt16 oc;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0040; break;
-        case PDM_PAINT:  oc=0x0041; break;
-        case PDM_ERASE:  oc=0x0042; break;
-        case PDM_INVERT: oc=0x0043; break;
-        case PDM_FILL:   oc=0x0044; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-    WriteRectangle(rRect);
-}
-
-
-void PictWriter::WriteOpcode_SameRRect(PictDrawingMethod eMethod)
-{
-    sal_uInt16 oc;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0048; break;
-        case PDM_PAINT:  oc=0x0049; break;
-        case PDM_ERASE:  oc=0x004a; break;
-        case PDM_INVERT: oc=0x004b; break;
-        case PDM_FILL:   oc=0x004c; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-}
-
-
-void PictWriter::WriteOpcode_Oval(PictDrawingMethod eMethod, const Rectangle & rRect)
-{
-    sal_uInt16 oc;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0050; break;
-        case PDM_PAINT:  oc=0x0051; break;
-        case PDM_ERASE:  oc=0x0052; break;
-        case PDM_INVERT: oc=0x0053; break;
-        case PDM_FILL:   oc=0x0054; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-    WriteRectangle(rRect);
-}
-
-
-void PictWriter::WriteOpcode_SameOval(PictDrawingMethod eMethod)
-{
-    sal_uInt16 oc;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0058; break;
-        case PDM_PAINT:  oc=0x0059; break;
-        case PDM_ERASE:  oc=0x005a; break;
-        case PDM_INVERT: oc=0x005b; break;
-        case PDM_FILL:   oc=0x005c; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-}
-
-
-void PictWriter::WriteOpcode_Arc(PictDrawingMethod eMethod, const Rectangle & rRect,
-                                 const Point & rStartPt, const Point & rEndPt)
-{
-    sal_uInt16 oc;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0060; break;
-        case PDM_PAINT:  oc=0x0061; break;
-        case PDM_ERASE:  oc=0x0062; break;
-        case PDM_INVERT: oc=0x0063; break;
-        case PDM_FILL:   oc=0x0064; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-    WriteRectangle(rRect);
-    WriteArcAngles(rRect,rStartPt,rEndPt);
-}
-
-
-void PictWriter::WriteOpcode_SameArc(PictDrawingMethod eMethod, const Rectangle & rRect,
-                                     const Point & rStartPt, const Point & rEndPt)
-{
-    sal_uInt16 oc;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0068; break;
-        case PDM_PAINT:  oc=0x0069; break;
-        case PDM_ERASE:  oc=0x006a; break;
-        case PDM_INVERT: oc=0x006b; break;
-        case PDM_FILL:   oc=0x006c; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-    WriteArcAngles(rRect,rStartPt,rEndPt);
-}
-
-
-void PictWriter::WriteOpcode_Poly(PictDrawingMethod eMethod, const tools::Polygon & rPoly)
-{
-    sal_uInt16 oc;
-
-    if (rPoly.GetSize()<3) return;
-    switch (eMethod) {
-        case PDM_FRAME:  oc=0x0070; break;
-        case PDM_PAINT:  oc=0x0071; break;
-        case PDM_ERASE:  oc=0x0072; break;
-        case PDM_INVERT: oc=0x0073; break;
-        case PDM_FILL:   oc=0x0074; break;
-        default:         oc=0;      break;   // -Wall a default for oc...
-    }
-    pPict->WriteUInt16( oc );
-    WritePolygon(rPoly);
-}
-
-
-void PictWriter::WriteOpcode_BitsRect(const Point & rPoint, const Size & rSize, const Bitmap & rBitmap)
-{
-    BitmapReadAccess*   pAcc = nullptr;
-    Bitmap              aBitmap( rBitmap );
-
-    sal_uLong   nWidth, nHeight, nDstRowBytes, nx, nc, ny, nCount, nColTabSize, i;
-    sal_uLong   nDstRowPos, nEqu3, nPos, nDstMapPos;
-    sal_uInt16  nBitsPerPixel, nPackType;
-    sal_uInt8   *pComp[4];
-    sal_uInt8    nEquData = 0;
-    sal_uInt8    nFlagCounterByte, nRed, nGreen, nBlue;
-
-    SetAttrForPaint();
-
-    // generating a temporary Windows-BMP-File:
-    nActBitmapPercent=30;
-    MayCallback();
-
-    if ( !bStatus )
-        return;
-    if ( ( pAcc = aBitmap.AcquireReadAccess() ) == nullptr )
-        return;
-
-    nBitsPerPixel = aBitmap.GetBitCount();
-
-    // export code below only handles four discrete cases
-    nBitsPerPixel =
-        nBitsPerPixel <= 1 ? 1 : nBitsPerPixel <= 4 ? 4 : nBitsPerPixel <= 8 ? 8 : 24;
-
-    nWidth = pAcc->Width();
-    nHeight = pAcc->Height();
-
-    // If 24-Bit, then create the Opcode 'DirectBitsRect':
-    if ( nBitsPerPixel == 24 )
-    {
-        // Calculate the number of bytes of an (uncompressed) line of destination.
-        nDstRowBytes = nWidth * 4;
-
-        // writing Opcode and BaseAddr (?):
-        pPict->WriteUInt16( 0x009a ).WriteUInt32( 0x000000ff );
-
-        // Normally we want to produce packing type 4 (run length encoding
-        // for 32-bit pixels). But if RowBytes<8 is true, generally all data is
-        // unpacked even if packing type 4 is specified, which seems a little bit
-        // strange. Hence we want to specify packing type 1 (no packing) in these cases:
-
-        if ( nDstRowBytes < 8 )
-            nPackType = 1;
-        else
-            nPackType = 4;
-
-        // writing PixMap-Structure:
-        pPict->WriteUInt16( nDstRowBytes|0x8000 )   // Bytes per row and the fact that it's a 'PixMap'
-              .WriteUInt16( 0x0000 )                // Y1-position of the bitmap in the source
-              .WriteUInt16( 0x0000 )                // X1-position of the bitmap in the source
-              .WriteUInt16( nHeight )               // Y2-position of the bitmap in the source
-              .WriteUInt16( nWidth )                // X2-position of the bitmap in the source
-              .WriteUInt16( 0x0000 )                // Version
-              .WriteUInt16( nPackType )             // Packing type
-              .WriteUInt32( 0x00000000 )            // Packing size (?)
-              .WriteUInt32( 0x00480000 )            // H-Res
-              .WriteUInt32( 0x00480000 )            // V-Res
-              .WriteUInt16( 0x0010 )                // Pixel type (?)
-              .WriteUInt16( 0x0020 )                // Pixel size: 32 bit
-              .WriteUInt16( 0x0004 )                // CmpCount: 4 components
-              .WriteUInt16( 0x0008 )                // CmpSize: 8 bits
-              .WriteUInt32( 0x00000000 )            // PlaneBytes (?)
-              .WriteUInt32( 0x00000000 )            // (?)
-              .WriteUInt32( 0x00000000 );           // (?)
-
-        // Source-Rectangle schreiben:
-        pPict->WriteUInt16( 0x0000 )                // Y1-position on the bitmap
-              .WriteUInt16( 0x0000 )                // X1-position on the bitmap
-              .WriteUInt16( nHeight )               // Y2-position on the bitmap
-              .WriteUInt16( nWidth );               // X2-position on the bitmap
-
-        // writing the Destination-Rectangle:
-        WritePoint( rPoint );
-        WritePoint( Point( rPoint.X() + rSize.Width(), rPoint.Y() + rSize.Height() ) );
-
-        // writing the Transfer mode:
-        pPict->WriteUInt16( 0x0000 ); // (?)
-
-        // remember position of the Map-data in the target:
-        nDstMapPos=pPict->Tell();
-
-        if ( nPackType == 1 )               //  when 24 bits nWidth == 1 !!
-        {                                   // don't pack
-            for ( ny = 0; ny < nHeight; ny++ )
-            {
-                pPict->WriteUChar( 0 );
-                pPict->WriteUChar( pAcc->GetPixel( ny, 0 ).GetRed() );
-                pPict->WriteUChar( pAcc->GetPixel( ny, 0 ).GetGreen() );
-                pPict->WriteUChar( pAcc->GetPixel( ny, 0 ).GetBlue() );
-                // count percentages, Callback, check errors:
-                nActBitmapPercent = ( ny * 70 / nHeight ) + 30; // (30% already added up to the writing of the Win-BMP file)
-                MayCallback();
-            }
-        }
-        else    // packing ( PackType == 4 )
-        {
-            // allocate memory for lines-intermediate-data-structure
-            for ( nc = 0; nc < 4; nc++ )
-                pComp[ nc ] = new sal_uInt8[ nWidth ];
-
-            // loop through rows:
-            for ( ny = 0; ny < nHeight; ny++ )
-            {
-                // read line ny of source into the intermediate data structure
-
-                for ( nx = 0; nx < nWidth; nx++ )
-                {
-                    pComp[ 1 ][ nx ] = (sal_uInt8)pAcc->GetPixel( ny, nx ) .GetRed();
-                    pComp[ 2 ][ nx ] = (sal_uInt8)pAcc->GetPixel( ny, nx ) .GetGreen();
-                    pComp[ 3 ][ nx ] = (sal_uInt8)pAcc->GetPixel( ny, nx ) .GetBlue();
-                    pComp[ 0 ][ nx ] = 0;
-                }
-
-                // remember start of the row in the target:
-                nDstRowPos = pPict->Tell();
-
-                // ByteCount (that's the size of the packed row) is at first 0 (will be corrected later):
-                if ( nDstRowBytes > 250 )
-                    pPict->WriteUInt16( 0 );
-                else
-                    pPict->WriteUChar( 0 );
-
-                // loop through components:
-                for ( nc = 0; nc < 4; nc++ )
-                {
-                    // loop through x:
-                    nx = 0;
-                    while ( nx < nWidth )
-                    {
-                        // look up the position of 3 equal bytes and save it in nEqu3
-                        // if it's not found, set nEqu3=nWidth
-                        // if it's found save the value of the bytes in nEquData
-                        nEqu3 = nx;
-                        for (;;)
-                        {
-                            if ( nEqu3 + 2 >= nWidth )
-                            {
-                                nEqu3 = nWidth;
-                                break;
-                            }
-                            nEquData = pComp[nc][nEqu3];
-                            if ( nEquData == pComp[nc][nEqu3+1] && nEquData==pComp[nc][nEqu3+2] )
-                                break;
-                            nEqu3++;
-                        }
-
-                        // write the data from nx to nEqu3 uncompressed (into multiple records if necessarcy);
-                        while ( nEqu3 > nx )
-                        {
-                            nCount = nEqu3 - nx;
-                            if ( nCount > 128 )
-                                nCount=128;
-                            nFlagCounterByte = (sal_uInt8)(nCount-1);
-                            pPict->WriteUChar( nFlagCounterByte );
-                            do
-                            {
-                                pPict->WriteUChar( pComp[nc][nx++] );
-                                nCount--;
-                            }
-                            while ( nCount > 0 );
-                        }
-
-                        // now create a compression record (if at least 3 identical bytes were found above)
-                        if ( nx < nWidth )
-                        {               // Hint: Then one has nx==nEqu3 (hopefully)
-                            nCount=3;   // Three bytes are equal, as we found out above
-                                        // Check, whether there are further equal bytes (and pay attention to Max.-Record-Size):
-                            while ( nx + nCount < nWidth && nCount < 128 )
-                            {
-                                if ( nEquData != pComp[ nc ][ nx + nCount ] )
-                                    break;
-                                nCount++;
-                            }
-                            // nCount write equal Bytes compressed:
-                            nFlagCounterByte = (sal_uInt8)( 1 - (long)nCount );
-                            pPict->WriteUChar( nFlagCounterByte ).WriteUChar( nEquData );
-                            nx += nCount;
-                        }
-                    }
-                }
-                // correct ByteCount:
-                nPos = pPict->Tell();
-                pPict->Seek( nDstRowPos );
-                if ( nDstRowBytes > 250 )
-                    pPict->WriteUInt16( nPos - nDstRowPos - 2 );
-                else
-                    pPict->WriteUChar( nPos - nDstRowPos - 1 );
-                pPict->Seek( nPos );
-
-                // count percentages, Callback, check errors:
-                nActBitmapPercent = ( ny * 70 / nHeight ) + 30; // (30% already added up to the writing of the Win-BMP file)
-                MayCallback();
-            }
-            // clean up:
-            for ( nc = 0; nc < 4; nc++ )
-                delete pComp[ nc ];
-        }
-    }
-    else
-    {   // don't generate 24-bit i.e. Opcode 'PackBitsRect':
-
-        // Some input filters are ignoring the palette of 1-bit images and are using
-        // the foreground and the background color instead.
-        if ( nBitsPerPixel == 1 )
-        {
-            WriteOpcode_RGBBkCol( pAcc->GetPaletteColor( 0 ) );
-            WriteOpcode_RGBFgCol( pAcc->GetPaletteColor( 1 ) );
-        }
-        else
-        {
-            WriteOpcode_RGBBkCol( Color( COL_BLACK ) );
-            WriteOpcode_RGBFgCol( Color( COL_WHITE ) );
-        }
-
-        // Calculate the number of bytes of an (unpacked) line of source an destination.
-        nDstRowBytes = ( nWidth * nBitsPerPixel + 7 ) >> 3;
-        sal_uLong nSrcRowBytes = ( nDstRowBytes + 3 ) & 0xfffffffc;
-
-        // writing Opcode:
-        pPict->WriteUInt16( 0x0098 );
-
-        // Normally we want to produce packing type 0 (default packing).
-        // But if RowBytes<8 is true, generally all data is unpacked even if packing
-        // type 0 is specified, which seems a little bit strange. Hence we want to
-        // specify packing type 1 (no packing) in these cases.
-        if ( nDstRowBytes < 8 )
-            nPackType = 1;
-        else
-            nPackType = 0;
-
-        // write PixMap-Structure:
-        pPict->WriteUInt16( nDstRowBytes|0x8000 )   // Bytes per row and the fact that it's a 'PixMap'
-              .WriteUInt16( 0x0000 )                // Y1-position of the bitmap in the source
-              .WriteUInt16( 0x0000 )                // X1-position of the bitmap in the source
-              .WriteUInt16( nHeight )               // Y2-position of the bitmap in the source
-              .WriteUInt16( nWidth )                // X2-position of the bitmap in the source
-              .WriteUInt16( 0x0000 )                // Version
-              .WriteUInt16( nPackType )             // Packing type
-              .WriteUInt32( 0x00000000 )            // Packing size (?)
-              .WriteUInt32( 0x00480000 )            // H-Res
-              .WriteUInt32( 0x00480000 )            // V-Res
-              .WriteUInt16( 0x0000 )                // Pixel type (?)
-              .WriteUInt16( nBitsPerPixel )         // Pixel size
-              .WriteUInt16( 0x0001 )                // CmpCount: 1 component
-              .WriteUInt16( nBitsPerPixel )         // CmpSize
-              .WriteUInt32( 0x00000000 )            // PlaneBytes (?)
-              .WriteUInt32( 0x00000000 )            // (?)
-              .WriteUInt32( 0x00000000 );           // (?)
-
-        // writing and reading the palette:
-        nColTabSize = pAcc->GetPaletteEntryCount();
-        pPict->WriteUInt32( 0 ).WriteUInt16( 0x8000 ).WriteUInt16( nColTabSize - 1 );
-
-        for ( i = 0; i < nColTabSize; i++ )
-        {
-            nRed = (sal_uInt8)pAcc->GetPaletteColor( (sal_uInt16)i ).GetRed();
-            nGreen = (sal_uInt8)pAcc->GetPaletteColor( (sal_uInt16)i ).GetGreen();
-            nBlue = (sal_uInt8)pAcc->GetPaletteColor( (sal_uInt16)i ).GetBlue();
-            pPict->WriteUInt16( 0 ).WriteUChar( nRed ).WriteUChar( nRed ).WriteUChar( nGreen ).WriteUChar( nGreen ).WriteUChar( nBlue ).WriteUChar( nBlue );
-        }
-
-        // writing Source-Rectangle:
-        pPict->WriteUInt16( 0 ).WriteUInt16( 0 ).WriteUInt16( nHeight ).WriteUInt16( nWidth );
-
-        // writing Destination-Rectangle:
-        WritePoint( rPoint );
-        WritePoint( Point( rPoint.X() + rSize.Width(), rPoint.Y() + rSize.Height() ) );
-
-        // writing Transfer mode:
-        pPict->WriteUInt16( 0 );            // (?)
-
-        // allocate memory for a row:
-        std::unique_ptr<sal_uInt8[]> pPix(new sal_uInt8[ nSrcRowBytes ]);
-
-        // remember position of the map-data in the target:
-        nDstMapPos=pPict->Tell();
-
-        // loop through rows:
-        for ( ny = 0; ny < nHeight; ny++ )
-        {
-            sal_uInt8* pTemp;
-            // read line ny of source into the buffer:
-            switch ( nBitsPerPixel )
-            {
-                case 1 :
-                    for ( pTemp = pPix.get(), i = 0; i < nSrcRowBytes; i++ )
-                        *pTemp++ = (sal_uInt8)0;
-                    for ( i = 0; i < nWidth; i++ )
-                        pPix[ ( i >> 3 ) ] |= (pAcc->GetPixelIndex( ny, i ) & 1) << ((i & 7) ^ 7);
-                    break;
-                case 4 :
-                    for ( pTemp = pPix.get(), i = 0; i < nSrcRowBytes; i++ )
-                        *pTemp++ = (sal_uInt8)0;
-                    for ( i = 0; i < nWidth; i++ )
-                        pPix[ ( i >> 1 ) ] |= (pAcc->GetPixelIndex( ny, i ) & 15) << ((i & 1) << 2);
-                    break;
-                case 8 :
-                    for ( i = 0; i < nWidth; i++ )
-                        pPix[ i ] = pAcc->GetPixelIndex( ny, i );
-                    break;
-            }
-
-            if ( nPackType == 1 )
-            {   // don't pack
-                pPict->Write( pPix.get(), nDstRowBytes );
-            }
-            else
-            {   // Ppacking (nPackType==0)
-
-                // remember start of the row in the target:
-                nDstRowPos = pPict->Tell();
-
-                // ByteCount (this is the size of the packed line) initialized with 0 (will be corrected later):
-                if ( nDstRowBytes > 250 )
-                    pPict->WriteUInt16( 0 );
-                else
-                    pPict->WriteUChar( 0 );
-
-                // loop through bytes of the row:
-                nx=0;
-                while ( nx < nDstRowBytes && bStatus )
-                {
-                    // Look for the position of three identical bytes and remember it in nEqu3.
-                    // Set nEqu3=nDstRowBytes if not found.
-                    // Else remember the value of these bytes in nEquData.
-                    nEqu3 = nx;
-                    for (;;)
-                    {
-                        if ( nEqu3 + 2 >= nDstRowBytes )
-                        {
-                            nEqu3 = nDstRowBytes;
-                            break;
-                        }
-                        nEquData = pPix[ nEqu3 ];
-                        if ( nEquData == pPix[ nEqu3 + 1 ] && nEquData == pPix[ nEqu3 + 2 ] )
-                            break;
-                        nEqu3++;
-                    }
-
-                    // Write the data unpacked from nx to nEqu3 (in multiple records if necessary):
-                    while ( nEqu3 > nx )
-                    {
-                        nCount = nEqu3 - nx;
-                        if ( nCount > 128 )
-                            nCount = 128;
-                        nFlagCounterByte = (sal_uInt8)( nCount - 1 );
-                        pPict->WriteUChar( nFlagCounterByte );
-                        do
-                        {
-                            pPict->WriteUChar( pPix[ nx++ ] );
-                            nCount--;
-                        } while ( nCount > 0 );
-                    }
-
-                    // Now create a compression record (if at least 3 identical bytes were found above):
-                    if ( nx < nDstRowBytes )
-                    {   // Note: it is imperative nx==nEqu3 (hopefully)
-                        nCount = 3; // three bytes are identically, as identified above
-                        // Check if more identical bytes exist. (in doing so, consider max record size):
-                        while ( nx + nCount < nDstRowBytes && nCount < 128 )
-                        {
-                            if ( nEquData != pPix[ nx + nCount ] )
-                                break;
-                            nCount++;
-                        }
-                        // write nCount identical bytes unpacked:
-                        nFlagCounterByte = (sal_uInt8)( 1 - (long)nCount );
-                        pPict->WriteUChar( nFlagCounterByte ).WriteUChar( nEquData );
-                        nx += nCount;
-                    }
-                }
-
-                // correct ByteCount:
-                nPos = pPict->Tell();
-                pPict->Seek( nDstRowPos );
-                if ( nDstRowBytes > 250 )
-                    pPict->WriteUInt16( nPos - nDstRowPos - 2 );
-                else
-                    pPict->WriteUChar( nPos - nDstRowPos - 1 );
-                pPict->Seek( nPos );
-            }
-
-            // count percentages, Callback, check errors:
-            nActBitmapPercent =( ny * 70 / nHeight ) + 30; // (30% already added up to the writing of the Win-BMP file)
-            MayCallback();
-            if ( pPict->GetError() )
-                bStatus = false;
-        }
-    }
-
-    // Map-Data has to be an even number of bytes:
-    if ( ( ( pPict->Tell() - nDstMapPos ) & 1 ) != 0 )
-        pPict->WriteUChar( 0 );
-
-    // counting Bitmaps:
-    nWrittenBitmaps++;
-    nActBitmapPercent = 0;
-    if ( pAcc )
-        Bitmap::ReleaseAccess( pAcc );
-}
-
-void PictWriter::WriteOpcode_EndOfFile()
-{
-    pPict->WriteUInt16( 0x00ff );
-}
-
-
-void PictWriter::SetAttrForPaint()
-{
-    WriteOpcode_PnMode(eSrcRasterOp);
-    WriteOpcode_RGBFgCol(aFillColor);
-    WriteOpcode_RGBBkCol(aFillColor);
-    WriteOpcode_PnFillPat(aFillColor!=Color( COL_TRANSPARENT ));
-}
-
-
-void PictWriter::SetAttrForFrame()
-{
-    WriteOpcode_PnMode(eSrcRasterOp);
-    WriteOpcode_PnSize(0);
-    WriteOpcode_RGBFgCol(aLineColor);
-    WriteOpcode_PnLinePat(aLineColor!=Color( COL_TRANSPARENT ));
-}
-
-
-void PictWriter::SetAttrForText()
-{
-    WriteOpcode_RGBFgCol(aSrcFont.GetColor());
-    WriteOpcode_RGBBkCol(aSrcFont.GetFillColor());
-    WriteOpcode_PnLinePat(true);
-    WriteOpcode_FontName(aSrcFont);
-    WriteOpcode_TxSize((sal_uInt16)(aSrcFont.GetSize().Height()));
-    WriteOpcode_TxMode(eSrcRasterOp);
-    WriteOpcode_TxFace(aSrcFont);
-}
-
-
-void PictWriter::WriteTextArray(Point & rPoint, const OUString& rString, const long* pDXAry)
-{
-    if ( pDXAry == nullptr )
-        WriteOpcode_Text( rPoint, rString, false );
-    else
-    {
-        bool bDelta = false;
-        sal_Int32 nLen = rString.getLength();
-        for ( sal_Int32 i = 0; i < nLen; i++ )
-        {
-            sal_Unicode c = rString[ i ];
-            if ( c && ( c != 0x20 ) )
-            {
-                Point aPt = rPoint;
-                if ( i > 0 )
-                    aPt.X() += pDXAry[ i - 1 ];
-
-                WriteOpcode_Text( aPt, OUString( c ), bDelta );
-                bDelta = true;
-            }
-        }
-    }
-}
-
-void PictWriter::HandleLineInfoPolyPolygons(const LineInfo& rInfo, const basegfx::B2DPolygon& rLinePolygon)
-{
-    if(rLinePolygon.count())
-    {
-        basegfx::B2DPolyPolygon aLinePolyPolygon(rLinePolygon);
-        basegfx::B2DPolyPolygon aFillPolyPolygon;
-
-        rInfo.applyToB2DPolyPolygon(aLinePolyPolygon, aFillPolyPolygon);
-
-        if(aLinePolyPolygon.count())
-        {
-            aLinePolyPolygon = aLinePolyPolygon.getDefaultAdaptiveSubdivision();
-            const sal_uInt32 nPolyCount(aLinePolyPolygon.count());
-            SetAttrForFrame();
-
-            for(sal_uInt32 a(0); a < nPolyCount; a++)
-            {
-                const basegfx::B2DPolygon aCandidate(aLinePolyPolygon.getB2DPolygon(a));
-                const sal_uInt32 nPointCount(aCandidate.count());
-
-                if(nPointCount)
-                {
-                    const sal_uInt32 nEdgeCount(aCandidate.isClosed() ? nPointCount + 1 : nPointCount);
-                    const basegfx::B2DPoint aCurr(aCandidate.getB2DPoint(0));
-                    Point nCurr(basegfx::fround(aCurr.getX()), basegfx::fround(aCurr.getY()));
-
-                    for(sal_uInt32 b(0); b < nEdgeCount; b++)
-                    {
-                        const sal_uInt32 nNextIndex((b + 1) % nPointCount);
-                        const basegfx::B2DPoint aNext(aCandidate.getB2DPoint(nNextIndex));
-                        const Point nNext(basegfx::fround(aNext.getX()), basegfx::fround(aNext.getY()));
-
-                        WriteOpcode_Line(nCurr, nNext);
-                        nCurr = nNext;
-                    }
-                }
-            }
-        }
-
-        if(aFillPolyPolygon.count())
-        {
-            const Color aOldLineColor(aLineColor);
-            const Color aOldFillColor(aFillColor);
-
-            aLineColor = Color( COL_TRANSPARENT );
-            aFillColor = aOldLineColor;
-            SetAttrForPaint();
-
-            for(sal_uInt32 a(0); a < aFillPolyPolygon.count(); a++)
-            {
-                const tools::Polygon aPolygon(aFillPolyPolygon.getB2DPolygon(a).getDefaultAdaptiveSubdivision());
-                WriteOpcode_Poly(PDM_PAINT, aPolygon);
-            }
-
-            aLineColor = aOldLineColor;
-            aFillColor = aOldFillColor;
-        }
-    }
-}
-
-void PictWriter::WriteOpcodes( const GDIMetaFile & rMTF )
-{
-    size_t nA, nACount;
-
-    if( !bStatus)
-        return;
-
-    nACount = rMTF.GetActionSize();
-
-    for (nA=0; nA < nACount; nA++)
-    {
-        const MetaAction* pMA = rMTF.GetAction(nA);
-
-        switch (pMA->GetType())
-        {
-            case MetaActionType::PIXEL:
-            {
-                const MetaPixelAction* pA = static_cast<const MetaPixelAction*>(pMA);
-                WriteOpcode_PnMode(eSrcRasterOp);
-                WriteOpcode_PnSize(1);
-                WriteOpcode_RGBFgCol(pA->GetColor());
-                WriteOpcode_PnLinePat(true);
-                WriteOpcode_Line(pA->GetPoint(),pA->GetPoint());
-            }
-            break;
-
-            case MetaActionType::POINT:
-            {
-                const MetaPointAction* pA = static_cast<const MetaPointAction*>(pMA);
-
-                if( aLineColor != Color( COL_TRANSPARENT ) )
-                {
-                    SetAttrForFrame();
-                    WriteOpcode_Line( pA->GetPoint(),pA->GetPoint() );
-                }
-            }
-            break;
-
-            case MetaActionType::LINE:
-            {
-                const MetaLineAction* pA = static_cast<const MetaLineAction*>(pMA);
-
-                if( aLineColor != Color( COL_TRANSPARENT ) )
-                {
-                    if(pA->GetLineInfo().IsDefault())
-                    {
-                        SetAttrForFrame();
-                        WriteOpcode_Line( pA->GetStartPoint(),pA->GetEndPoint() );
-                    }
-                    else
-                    {
-                        // LineInfo used; handle Dash/Dot and fat lines
-                        basegfx::B2DPolygon aPolygon;
-                        aPolygon.append(basegfx::B2DPoint(pA->GetStartPoint().X(), pA->GetStartPoint().Y()));
-                        aPolygon.append(basegfx::B2DPoint(pA->GetEndPoint().X(), pA->GetEndPoint().Y()));
-                        HandleLineInfoPolyPolygons(pA->GetLineInfo(), aPolygon);
-                    }
-                }
-                break;
-            }
-
-            case MetaActionType::RECT:
-            {
-                const MetaRectAction* pA = static_cast<const MetaRectAction*>(pMA);
-
-                if (aFillColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForPaint();
-                    WriteOpcode_Rect(PDM_PAINT,pA->GetRect());
-                    if (aLineColor!=Color( COL_TRANSPARENT ))
-                    {
-                        SetAttrForFrame();
-                        WriteOpcode_SameRect(PDM_FRAME);
-                    }
-                }
-                else if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForFrame();
-                    WriteOpcode_Rect(PDM_FRAME,pA->GetRect());
-                }
-            }
-            break;
-
-            case MetaActionType::ROUNDRECT:
-            {
-                const MetaRoundRectAction* pA = static_cast<const MetaRoundRectAction*>(pMA);
-
-                WriteOpcode_OvSize( Size( pA->GetHorzRound(), pA->GetVertRound() ) );
-
-                if (aFillColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForPaint();
-                    WriteOpcode_RRect(PDM_PAINT,pA->GetRect());
-                    if (aLineColor!=Color( COL_TRANSPARENT ))
-                    {
-                        SetAttrForFrame();
-                        WriteOpcode_SameRRect(PDM_FRAME);
-                    }
-                }
-                else if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForFrame();
-                    WriteOpcode_RRect(PDM_FRAME,pA->GetRect());
-                }
-            }
-            break;
-
-            case MetaActionType::ELLIPSE:
-            {
-                const MetaEllipseAction* pA = static_cast<const MetaEllipseAction*>(pMA);
-
-                if (aFillColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForPaint();
-                    WriteOpcode_Oval(PDM_PAINT,pA->GetRect());
-                    if (aLineColor!=Color( COL_TRANSPARENT ))
-                    {
-                        SetAttrForFrame();
-                        WriteOpcode_SameOval(PDM_FRAME);
-                    }
-                }
-                else if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForFrame();
-                    WriteOpcode_Oval(PDM_FRAME,pA->GetRect());
-                }
-            }
-            break;
-
-            case MetaActionType::ARC:
-            {
-                const MetaArcAction* pA = static_cast<const MetaArcAction*>(pMA);
-
-                if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForFrame();
-                    WriteOpcode_Arc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
-                }
-            }
-            break;
-
-            case MetaActionType::PIE:
-            {
-                const MetaPieAction* pA = static_cast<const MetaPieAction *>(pMA);
-
-                if (aFillColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForPaint();
-                    WriteOpcode_Arc(PDM_PAINT,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
-
-                    if (aLineColor!=Color( COL_TRANSPARENT ))
-                    {
-                        SetAttrForFrame();
-                        WriteOpcode_SameArc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
-                    }
-                }
-                else if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForFrame();
-                    WriteOpcode_Arc(PDM_FRAME,pA->GetRect(),pA->GetStartPoint(),pA->GetEndPoint());
-                }
-
-                if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    double fxc,fyc,fxr,fyr,fx1,fy1,fx2,fy2,l1,l2;
-
-                    fxc=((double)(pA->GetRect().Left()+pA->GetRect().Right()))/2.0;
-                    fyc=((double)(pA->GetRect().Top()+pA->GetRect().Bottom()))/2.0;
-                    fxr=((double)pA->GetRect().GetWidth())/2.0;
-                    fyr=((double)pA->GetRect().GetHeight())/2.0;
-                    fx1=((double)pA->GetStartPoint().X())-fxc;
-                    fy1=((double)pA->GetStartPoint().Y())-fyc;
-                    fx2=((double)pA->GetEndPoint().X())-fxc;
-                    fy2=((double)pA->GetEndPoint().Y())-fyc;
-                    l1=sqrt(fx1*fx1+fy1*fy1);
-                    l2=sqrt(fx2*fx2+fy2*fy2);
-
-                    if (l1>0)
-                    {
-                        fx1=fx1/l1*fxr;
-                        fy1=fy1/l1*fyr;
-                    }
-
-                    if (l2>0)
-                    {
-                        fx2=fx2/l2*fxr;
-                        fy2=fy2/l2*fyr;
-                    }
-                    fx1+=fxc; fy1+=fyc; fx2+=fxc; fy2+=fyc;
-                    WriteOpcode_Line(Point((long)(fx1+0.5),(long)(fy1+0.5)), Point((long)(fxc+0.5),(long)(fyc+0.5)));
-                    WriteOpcode_LineFrom(Point((long)(fx2+0.5),(long)(fy2+0.5)));
-                }
-            }
-            break;
-
-            case MetaActionType::CHORD:
-            {
-                // OSL_FAIL( "Unsupported PICT-Action: MetaActionType::CHORD!" );
-            }
-            break;
-
-            case MetaActionType::POLYLINE:
-            {
-                const MetaPolyLineAction* pA = static_cast<const MetaPolyLineAction*>(pMA);
-
-                if( aLineColor!=Color( COL_TRANSPARENT ) )
-                {
-                    const tools::Polygon&  rPoly = pA->GetPolygon();
-
-                    if( rPoly.GetSize() )
-                    {
-                        if(pA->GetLineInfo().IsDefault())
-                        {
-                            tools::Polygon aSimplePoly;
-                            if ( rPoly.HasFlags() )
-                                rPoly.AdaptiveSubdivide( aSimplePoly );
-                            else
-                                aSimplePoly = rPoly;
-
-                            const sal_uInt16    nSize = aSimplePoly.GetSize();
-                            Point           aLast;
-
-                            if ( nSize )
-                            {
-                                SetAttrForFrame();
-                                aLast = aSimplePoly[0];
-
-                                for ( sal_uInt16 i = 1; i < nSize; i++ )
-                                {
-                                    WriteOpcode_Line( aLast, aSimplePoly[i] );
-                                    aLast = aSimplePoly[i];
-                                }
-                            }
-                        }
-                        else
-                        {
-                            // LineInfo used; handle Dash/Dot and fat lines
-                            HandleLineInfoPolyPolygons(pA->GetLineInfo(), rPoly.getB2DPolygon());
-                        }
-                    }
-                }
-            }
-            break;
-
-            case MetaActionType::POLYGON:
-            {
-                const MetaPolygonAction* pA = static_cast<const MetaPolygonAction*>(pMA);
-
-                const tools::Polygon& rPoly = pA->GetPolygon();
-
-                tools::Polygon aSimplePoly;
-                if ( rPoly.HasFlags() )
-                    rPoly.AdaptiveSubdivide( aSimplePoly );
-                else
-                    aSimplePoly = rPoly;
-
-                if (aFillColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForPaint();
-                    WriteOpcode_Poly( PDM_PAINT, aSimplePoly );
-                }
-                if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForFrame();
-                    WriteOpcode_Poly( PDM_FRAME, aSimplePoly );
-                }
-            }
-            break;
-
-            case MetaActionType::POLYPOLYGON:
-            {
-                const MetaPolyPolygonAction* pA = static_cast<const MetaPolyPolygonAction*>(pMA);
-
-                const tools::PolyPolygon& rPolyPoly = pA->GetPolyPolygon();
-                sal_uInt16 nPolyCount = rPolyPoly.Count();
-                tools::PolyPolygon aSimplePolyPoly( rPolyPoly );
-                for ( sal_uInt16 i = 0; i < nPolyCount; i++ )
-                {
-                    if ( aSimplePolyPoly[ i ].HasFlags() )
-                    {
-                        tools::Polygon aSimplePoly;
-                        aSimplePolyPoly[ i ].AdaptiveSubdivide( aSimplePoly );
-                        aSimplePolyPoly[ i ] = aSimplePoly;
-                    }
-                }
-                if (aFillColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForPaint();
-                    WriteOpcode_Poly( PDM_PAINT, PolyPolygonToPolygon( aSimplePolyPoly ));
-                }
-
-                if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    sal_uInt16 nCount,i;
-                    SetAttrForFrame();
-                    nCount = aSimplePolyPoly.Count();
-                    for ( i = 0; i < nCount; i++ )
-                        WriteOpcode_Poly( PDM_FRAME, aSimplePolyPoly.GetObject( i ) );
-                }
-            }
-            break;
-
-            case MetaActionType::TEXT:
-            {
-                const MetaTextAction*   pA = static_cast<const MetaTextAction*>(pMA);
-                Point                   aPt( pA->GetPoint() );
-
-                if ( aSrcFont.GetAlign() != ALIGN_BASELINE )
-                {
-                    ScopedVclPtrInstance< VirtualDevice > pVirDev;
-                    if (aSrcFont.GetAlign()==ALIGN_TOP)
-                        aPt.Y()+=(long)pVirDev->GetFontMetric(aSrcFont).GetAscent();
-                    else
-                        aPt.Y()-=(long)pVirDev->GetFontMetric(aSrcFont).GetDescent();
-                }
-
-                SetAttrForText();
-                OUString aStr = pA->GetText().copy( pA->GetIndex(),pA->GetLen() );
-                WriteOpcode_Text( aPt, aStr, false );
-            }
-            break;
-
-            case MetaActionType::TEXTARRAY:
-            {
-                const MetaTextArrayAction*  pA = static_cast<const MetaTextArrayAction*>(pMA);
-                Point                       aPt( pA->GetPoint() );
-
-                if (aSrcFont.GetAlign()!=ALIGN_BASELINE)
-                {
-                    ScopedVclPtrInstance< VirtualDevice > pVirDev;
-
-                    if (aSrcFont.GetAlign()==ALIGN_TOP)
-                        aPt.Y()+=(long)pVirDev->GetFontMetric(aSrcFont).GetAscent();
-                    else
-                        aPt.Y()-=(long)pVirDev->GetFontMetric(aSrcFont).GetDescent();
-                }
-                SetAttrForText();
-                OUString aStr = pA->GetText().copy( pA->GetIndex(),pA->GetLen() );
-                WriteTextArray( aPt, aStr, pA->GetDXArray() );
-                break;
-            }
-
-            case MetaActionType::STRETCHTEXT:
-            {
-                const MetaStretchTextAction*    pA = static_cast<const MetaStretchTextAction*>(pMA);
-                Point                           aPt( pA->GetPoint() );
-                OUString                        aStr = pA->GetText().copy( pA->GetIndex(),pA->GetLen() );
-                ScopedVclPtrInstance< VirtualDevice > pVirDev;
-                std::unique_ptr<long[]>       pDXAry(new long[ aStr.getLength() ]);
-                sal_Int32                       nNormSize( pVirDev->GetTextArray( aStr,pDXAry.get() ) );
-
-                if (aSrcFont.GetAlign()!=ALIGN_BASELINE)
-                {
-                    if (aSrcFont.GetAlign()==ALIGN_TOP)
-                        aPt.Y()+=(long)pVirDev->GetFontMetric(aSrcFont).GetAscent();
-                    else
-                        aPt.Y()-=(long)pVirDev->GetFontMetric(aSrcFont).GetDescent();
-                }
-
-                sal_Int32 nLength = aStr.getLength() - 1;
-                if (nLength > 0)
-                {
-                    if (nNormSize == 0)
-                        throw o3tl::divide_by_zero();
-                    for (sal_Int32 i = 0; i < nLength; ++i)
-                        pDXAry[ i ] = pDXAry[ i ] * ( (long)pA->GetWidth() ) / nNormSize;
-                }
-
-                SetAttrForText();
-                WriteTextArray( aPt, aStr, pDXAry.get() );
-            }
-            break;
-
-            case MetaActionType::TEXTRECT:
-            {
-                // OSL_FAIL( "Unsupported PICT-Action: MetaActionType::TEXTRECT!" );
-            }
-            break;
-
-            case MetaActionType::BMP:
-            {
-                const MetaBmpAction*    pA = static_cast<const MetaBmpAction*>(pMA);
-                const Bitmap            aBmp( pA->GetBitmap() );
-                ScopedVclPtrInstance< VirtualDevice > pVirDev;
-
-                WriteOpcode_BitsRect( pA->GetPoint(), pVirDev->PixelToLogic( aBmp.GetSizePixel(), aSrcMapMode ), aBmp );
-            }
-            break;
-
-            case MetaActionType::BMPSCALE:
-            {
-                const MetaBmpScaleAction* pA = static_cast<const MetaBmpScaleAction*>(pMA);
-                WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), pA->GetBitmap() );
-            }
-            break;
-
-            case MetaActionType::BMPSCALEPART:
-            {
-                const MetaBmpScalePartAction*   pA = static_cast<const MetaBmpScalePartAction*>(pMA);
-                Bitmap                          aBmp( pA->GetBitmap() );
-
-                aBmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
-                WriteOpcode_BitsRect( pA->GetDestPoint(), pA->GetDestSize(), aBmp );
-            }
-            break;
-
-            case MetaActionType::BMPEX:
-            {
-                const MetaBmpExAction*  pA = static_cast<const MetaBmpExAction*>(pMA);
-                const Bitmap            aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-                ScopedVclPtrInstance< VirtualDevice > pVirDev;
-
-                WriteOpcode_BitsRect( pA->GetPoint(), pVirDev->PixelToLogic( aBmp.GetSizePixel(), aSrcMapMode ), aBmp );
-            }
-            break;
-
-            case MetaActionType::BMPEXSCALE:
-            {
-                const MetaBmpExScaleAction* pA = static_cast<const MetaBmpExScaleAction*>(pMA);
-                const Bitmap                aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-
-                WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), aBmp );
-            }
-            break;
-
-            case MetaActionType::BMPEXSCALEPART:
-            {
-                const MetaBmpExScalePartAction* pA = static_cast<const MetaBmpExScalePartAction*>(pMA);
-                Bitmap                          aBmp( Graphic( pA->GetBitmapEx() ).GetBitmap() );
-
-                aBmp.Crop( Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) );
-                WriteOpcode_BitsRect( pA->GetDestPoint(), pA->GetDestSize(), aBmp );
-            }
-            break;
-
-            case MetaActionType::EPS :
-            {
-                const MetaEPSAction* pA = static_cast<const MetaEPSAction*>(pMA);
-                const GDIMetaFile aGDIMetaFile( pA->GetSubstitute() );
-
-                size_t nCount = aGDIMetaFile.GetActionSize();
-                for ( size_t i = 0; i < nCount; i++ )
-                {
-                    const MetaAction* pMetaAct = aGDIMetaFile.GetAction( i );
-                    if ( pMetaAct->GetType() == MetaActionType::BMPSCALE )
-                    {
-                        const MetaBmpScaleAction* pBmpScaleAction = static_cast<const MetaBmpScaleAction*>(pMetaAct);
-                        WriteOpcode_BitsRect( pA->GetPoint(), pA->GetSize(), pBmpScaleAction->GetBitmap() );
-                        break;
-                    }
-                }
-            }
-            break;
-
-            case MetaActionType::MASK:
-            case MetaActionType::MASKSCALE:
-            case MetaActionType::MASKSCALEPART:
-            {
-                // OSL_FAIL( "Unsupported PICT-Action: META_MASK..._ACTION!" );
-            }
-            break;
-
-            case MetaActionType::GRADIENT:
-            {
-                ScopedVclPtrInstance<VirtualDevice> aVDev;
-                GDIMetaFile                 aTmpMtf;
-                const MetaGradientAction*   pA = static_cast<const MetaGradientAction*>(pMA);
-
-                aVDev->SetMapMode( aTargetMapMode );
-                aVDev->AddGradientActions( pA->GetRect(), pA->GetGradient(), aTmpMtf );
-                WriteOpcodes( aTmpMtf );
-            }
-            break;
-
-            case MetaActionType::HATCH:
-            {
-                ScopedVclPtrInstance<VirtualDevice> aVDev;
-                GDIMetaFile             aTmpMtf;
-                const MetaHatchAction*  pA = static_cast<const MetaHatchAction*>(pMA);
-
-                aVDev->SetMapMode( aTargetMapMode );
-                aVDev->AddHatchActions( pA->GetPolyPolygon(), pA->GetHatch(), aTmpMtf );
-                WriteOpcodes( aTmpMtf );
-            }
-            break;
-
-            case MetaActionType::WALLPAPER:
-            {
-                // OSL_FAIL( "Unsupported PICT-Action: MetaActionType::WALLPAPER!" );
-            }
-            break;
-
-            case MetaActionType::CLIPREGION:
-            {
-                // OSL_FAIL( "Unsupported PICT-Action: MetaActionType::CLIPREGION!" );
-            }
-            break;
-
-            case MetaActionType::ISECTRECTCLIPREGION:
-            {
-                const MetaISectRectClipRegionAction* pA = static_cast<const MetaISectRectClipRegionAction*>(pMA);
-                WriteOpcode_ClipRect( pA->GetRect() );
-            }
-            break;
-
-            case MetaActionType::ISECTREGIONCLIPREGION:
-            {
-                // OSL_FAIL( "Unsupported PICT-Action: MetaActionType::ISECTREGIONCLIPREGION!" );
-            }
-            break;
-
-            case MetaActionType::MOVECLIPREGION:
-            {
-                // OSL_FAIL( "Unsupported PICT-Action: MetaActionType::MOVECLIPREGION!" );
-            }
-            break;
-
-            case MetaActionType::LINECOLOR:
-            {
-                const MetaLineColorAction* pA = static_cast<const MetaLineColorAction*>(pMA);
-
-                if( pA->IsSetting() )
-                    aLineColor = pA->GetColor();
-                else
-                    aLineColor = Color( COL_TRANSPARENT );
-            }
-            break;
-
-            case MetaActionType::FILLCOLOR:
-            {
-                const MetaFillColorAction* pA = static_cast<const MetaFillColorAction*>(pMA);
-
-                if( pA->IsSetting() )
-                    aFillColor = pA->GetColor();
-                else
-                    aFillColor = Color( COL_TRANSPARENT );
-            }
-            break;
-
-            case MetaActionType::TEXTCOLOR:
-            {
-                const MetaTextColorAction* pA = static_cast<const MetaTextColorAction*>(pMA);
-                aSrcFont.SetColor( pA->GetColor() );
-            }
-            break;
-
-            case MetaActionType::TEXTFILLCOLOR:
-            {
-                const MetaTextFillColorAction* pA = static_cast<const MetaTextFillColorAction*>(pMA);
-
-                if( pA->IsSetting() )
-                    aSrcFont.SetFillColor( pA->GetColor() );
-                else
-                    aSrcFont.SetFillColor( Color( COL_TRANSPARENT ) );
-            }
-            break;
-
-            case MetaActionType::TEXTALIGN:
-            {
-                // OSL_FAIL( "Unsupported PICT-Action: MetaActionType::TEXTALIGN!" );
-            }
-            break;
-
-            case MetaActionType::MAPMODE:
-            {
-                const MetaMapModeAction* pA = static_cast<const MetaMapModeAction*>(pMA);
-
-                if (aSrcMapMode!=pA->GetMapMode())
-                {
-                    if( pA->GetMapMode().GetMapUnit() == MAP_RELATIVE )
-                    {
-                        MapMode aMM = pA->GetMapMode();
-                        Fraction aScaleX = aMM.GetScaleX();
-                        Fraction aScaleY = aMM.GetScaleY();
-
-                        Point aOrigin = aSrcMapMode.GetOrigin();
-                        BigInt aX( aOrigin.X() );
-                        aX *= BigInt( aScaleX.GetDenominator() );
-                        if( aOrigin.X() >= 0 )
-                        {
-                            if( aScaleX.GetNumerator() >= 0 )
-                                aX += BigInt( aScaleX.GetNumerator()/2 );
-                            else
-                                aX -= BigInt( (aScaleX.GetNumerator()+1)/2 );
-                        }
-                        else
-                        {
-                            if( aScaleX.GetNumerator() >= 0 )
-                                aX -= BigInt( (aScaleX.GetNumerator()-1)/2 );
-                            else
-                                aX += BigInt( aScaleX.GetNumerator()/2 );
-                        }
-
-                        aX /= BigInt( aScaleX.GetNumerator() );
-                        aOrigin.X() = (long)aX + aMM.GetOrigin().X();
-                        BigInt aY( aOrigin.Y() );
-                        aY *= BigInt( aScaleY.GetDenominator() );
-
-                        if( aOrigin.Y() >= 0 )
-                        {
-                            if( aScaleY.GetNumerator() >= 0 )
-                                aY += BigInt( aScaleY.GetNumerator()/2 );
-                            else
-                                aY -= BigInt( (aScaleY.GetNumerator()+1)/2 );
-                        }
-                        else
-                        {
-                            if( aScaleY.GetNumerator() >= 0 )
-                                aY -= BigInt( (aScaleY.GetNumerator()-1)/2 );
-                            else
-                                aY += BigInt( aScaleY.GetNumerator()/2 );
-                        }
-
-                        aY /= BigInt( aScaleY.GetNumerator() );
-                        aOrigin.Y() = (long)aY + aMM.GetOrigin().Y();
-                        aSrcMapMode.SetOrigin( aOrigin );
-
-                        aScaleX *= aSrcMapMode.GetScaleX();
-                        aScaleY *= aSrcMapMode.GetScaleY();
-                        aSrcMapMode.SetScaleX( aScaleX );
-                        aSrcMapMode.SetScaleY( aScaleY );
-                    }
-                    else
-                        aSrcMapMode = pA->GetMapMode();
-                }
-            }
-            break;
-
-            case MetaActionType::FONT:
-            {
-                const MetaFontAction* pA = static_cast<const MetaFontAction*>(pMA);
-                aSrcFont=pA->GetFont();
-            }
-            break;
-
-            case MetaActionType::PUSH:
-            {
-                PictWriterAttrStackMember * pAt = new PictWriterAttrStackMember;
-                pAt->aLineColor=aLineColor;
-                pAt->aFillColor=aFillColor;
-                pAt->eRasterOp=eSrcRasterOp;
-                pAt->aFont=aSrcFont;
-                pAt->aMapMode=aSrcMapMode;
-                pAt->aClipRect=aClipRect;
-                pAt->pSucc=pAttrStack;
-                pAttrStack=pAt;
-            }
-            break;
-
-            case MetaActionType::POP:
-            {
-                PictWriterAttrStackMember* pAt=pAttrStack;
-
-                if( pAt )
-                {
-                    aLineColor=pAt->aLineColor;
-                    aFillColor=pAt->aFillColor;
-                    eSrcRasterOp=pAt->eRasterOp;
-                    aSrcFont=pAt->aFont;
-                    aSrcMapMode=pAt->aMapMode;
-                    if ( pAt->aClipRect != aClipRect )
-                    {
-                        Rectangle aRect( pAt->aClipRect );
-                        pPict ->WriteUInt16( 1 )    // opcode 1
-                               .WriteUInt16( 10 )   // data size
-                               .WriteInt16( aRect.Top() ).WriteInt16( aRect.Left() )
-                               .WriteInt16( aRect.Bottom() ).WriteInt16( aRect.Right() );
-                    }
-                    aClipRect=pAt->aClipRect;
-                    pAttrStack=pAt->pSucc;
-                    delete pAt;
-                }
-            }
-            break;
-
-            case MetaActionType::RASTEROP:
-            {
-                const MetaRasterOpAction* pA = static_cast<const MetaRasterOpAction*>(pMA);
-                eSrcRasterOp=pA->GetRasterOp();
-            }
-            break;
-
-            case MetaActionType::Transparent:
-            {
-                const tools::PolyPolygon& rPolyPoly = static_cast<const MetaTransparentAction*>(pMA)->GetPolyPolygon();
-
-                if (aFillColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForPaint();
-                    WriteOpcode_Poly( PDM_PAINT, PolyPolygonToPolygon( rPolyPoly ) );
-                }
-
-                if (aLineColor!=Color( COL_TRANSPARENT ))
-                {
-                    SetAttrForFrame();
-                    for( sal_uInt16 i = 0, nCount = rPolyPoly.Count(); i < nCount; i++ )
-                        WriteOpcode_Poly( PDM_FRAME, rPolyPoly.GetObject( i ) );
-                }
-            }
-            break;
-
-            case MetaActionType::FLOATTRANSPARENT:
-            {
-                const MetaFloatTransparentAction* pA = static_cast<const MetaFloatTransparentAction*>(pMA);
-
-                GDIMetaFile     aTmpMtf( pA->GetGDIMetaFile() );
-                Point           aSrcPt( aTmpMtf.GetPrefMapMode().GetOrigin() );
-                const Size      aSrcSize( aTmpMtf.GetPrefSize() );
-                const Point     aDestPt( pA->GetPoint() );
-                const Size      aDestSize( pA->GetSize() );
-                const double    fScaleX = aSrcSize.Width() ? (double) aDestSize.Width() / aSrcSize.Width() : 1.0;
-                const double    fScaleY = aSrcSize.Height() ? (double) aDestSize.Height() / aSrcSize.Height() : 1.0;
-                long            nMoveX, nMoveY;
-
-                if( fScaleX != 1.0 || fScaleY != 1.0 )
-                {
-                    aTmpMtf.Scale( fScaleX, fScaleY );
-                    aSrcPt.X() = FRound( aSrcPt.X() * fScaleX ), aSrcPt.Y() = FRound( aSrcPt.Y() * fScaleY );
-                }
-
-                nMoveX = aDestPt.X() - aSrcPt.X(), nMoveY = aDestPt.Y() - aSrcPt.Y();
-
-                if( nMoveX || nMoveY )
-                    aTmpMtf.Move( nMoveX, nMoveY );
-
-                WriteOpcodes( aTmpMtf );
-            }
-            break;
-            default: break;
-        }
-
-        nWrittenActions++;
-        MayCallback();
-
-        if (pPict->GetError())
-            bStatus=false;
-
-        if (!bStatus)
-            break;
-    }
-}
-
-
-void PictWriter::WriteHeader(const GDIMetaFile & rMTF)
-{
-    sal_uInt16  i;
-    Size aSize( rMTF.GetPrefSize() );
-    Point aPoint;
-    Rectangle   aRect( aPoint, aSize );
-
-    // 512 Bytes "trash" at the beginning:
-    for (i=0;i<128;i++) pPict->WriteUInt32( 0 );
-
-    // Lo-16-Bits of the file size without the 512 bytes trash:
-    pPict->WriteUInt16( 0 ); // gets corrected later on by UpdateHeader()
-
-    // The Bounding-Rectangle (y1,x1,y2,x2 !):
-    WriteRectangle( aRect );
-
-    // Version 2:
-    pPict->WriteUInt32( 0x001102ff );
-
-    // Extended-Version-2-Header:
-    pPict->WriteUInt16( 0x0c00 )                            // Opcode
-          .WriteUInt16( 0xfffe )                            // Version (?)
-          .WriteUInt16( 0x0000 )                            // Reserved
-          .WriteUInt32( 0x00480000 )                        // hRes
-          .WriteUInt32( 0x00480000 );
-    WriteRectangle( aRect );
-    pPict->WriteUInt32( 0x00000000 );                        // Reserved
-
-    // many import filters demand the declaration
-    // of a clipping area at the beginning
-
-    WriteOpcode_ClipRect( aRect );
-}
-
-
-void PictWriter::UpdateHeader()
-{
-    sal_uLong nPos;
-
-    // correct the Lo-16-Bits of the file size without the 512 bytes trash:
-    nPos=pPict->Tell();
-    pPict->Seek(512);
-    pPict->WriteUInt16( (nPos-512) & 0xffff );
-    pPict->Seek(nPos);
-}
-
-
-bool PictWriter::WritePict(const GDIMetaFile & rMTF, SvStream & rTargetStream, FilterConfigItem* pFilterConfigItem )
-{
-    PictWriterAttrStackMember*  pAt;
-    MapMode                     aMap72( MAP_INCH );
-    Fraction                    aDPIFrac( 1, 72 );
-
-    bStatus=true;
-    nLastPercent=0;
-
-    if ( pFilterConfigItem )
-    {
-        xStatusIndicator = pFilterConfigItem->GetStatusIndicator();
-        if ( xStatusIndicator.is() )
-        {
-            OUString aMsg;
-            xStatusIndicator->start( aMsg, 100 );
-        }
-    }
-
-    pPict=&rTargetStream;
-    pPict->SetEndian(SvStreamEndian::BIG);
-
-    aLineColor=Color( COL_BLACK );
-    aFillColor=Color( COL_WHITE );
-    eSrcRasterOp=ROP_OVERPAINT;
-    aSrcFont=vcl::Font();
-    aSrcMapMode = rMTF.GetPrefMapMode();
-
-    aMap72.SetScaleX( aDPIFrac );
-    aMap72.SetScaleY( aDPIFrac );
-    aTargetMapMode = aMap72;
-
-    pAttrStack=nullptr;
-
-    bDstBkPatValid=false;
-    bDstTxFaceValid=false;
-    bDstTxModeValid=false;
-    bDstPnSizeValid=false;
-    bDstPnModeValid=false;
-    bDstPnPatValid=false;
-    bDstFillPatValid=false;
-    bDstTxSizeValid=false;
-    bDstFgColValid=false;
-    bDstBkColValid=false;
-    bDstPenPositionValid=false;
-    bDstTextPositionValid=false;
-    bDstFontNameValid=false;
-
-    nNumberOfActions=0;
-    nNumberOfBitmaps=0;
-    nWrittenActions=0;
-    nWrittenBitmaps=0;
-    nActBitmapPercent=0;
-
-    CountActionsAndBitmaps(rMTF);
-
-    WriteHeader(rMTF);
-    WriteOpcodes(rMTF);
-    WriteOpcode_EndOfFile();
-    UpdateHeader();
-
-    while (pAttrStack!=nullptr) {
-        pAt=pAttrStack;
-        pAttrStack=pAt->pSucc;
-        delete pAt;
-    }
-
-    if ( xStatusIndicator.is() )
-        xStatusIndicator->end();
-
-    return bStatus;
-}
-
-// GraphicExport - the exported Function
-
-extern "C" SAL_DLLPUBLIC_EXPORT bool SAL_CALL
-eptGraphicExport( SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pFilterConfigItem )
-{
-    PictWriter      aPictWriter;
-
-    // #i119735# just use GetGDIMetaFile, it will create a bufferd version of contained bitmap now automatically
-    GDIMetaFile aScaledMtf( rGraphic.GetGDIMetaFile() );
-
-    return aPictWriter.WritePict( aScaledMtf, rStream, pFilterConfigItem );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svtools/source/filter/exportdialog.cxx b/svtools/source/filter/exportdialog.cxx
index ebe0d29..c48f509 100644
--- a/svtools/source/filter/exportdialog.cxx
+++ b/svtools/source/filter/exportdialog.cxx
@@ -51,7 +51,6 @@
 #define FORMAT_PBM      5
 #define FORMAT_PGM      6
 #define FORMAT_PPM      7
-#define FORMAT_PCT      8
 #define FORMAT_RAS      9
 #define FORMAT_TIF      10
 #define FORMAT_XPM      11
@@ -89,8 +88,6 @@ static sal_Int16 GetFilterFormat(const OUString& rExt)
         nFormat = FORMAT_PGM;
     else if ( rExt == "PPM" )
         nFormat = FORMAT_PPM;
-    else if ( rExt == "PCT" )
-        nFormat = FORMAT_PCT;
     else if ( rExt == "RAS" )
         nFormat = FORMAT_RAS;
     else if ( rExt == "TIF" )


More information about the Libreoffice-commits mailing list