13334a7e6SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 33334a7e6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 43334a7e6SAndrew Rist * or more contributor license agreements. See the NOTICE file 53334a7e6SAndrew Rist * distributed with this work for additional information 63334a7e6SAndrew Rist * regarding copyright ownership. The ASF licenses this file 73334a7e6SAndrew Rist * to you under the Apache License, Version 2.0 (the 83334a7e6SAndrew Rist * "License"); you may not use this file except in compliance 93334a7e6SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 113334a7e6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 133334a7e6SAndrew Rist * Unless required by applicable law or agreed to in writing, 143334a7e6SAndrew Rist * software distributed under the License is distributed on an 153334a7e6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 163334a7e6SAndrew Rist * KIND, either express or implied. See the License for the 173334a7e6SAndrew Rist * specific language governing permissions and limitations 183334a7e6SAndrew Rist * under the License. 19cdf0e10cSrcweir * 203334a7e6SAndrew Rist *************************************************************/ 213334a7e6SAndrew Rist 223334a7e6SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _SVDFMTF_HXX 25cdf0e10cSrcweir #define _SVDFMTF_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <vcl/metaact.hxx> 28cdf0e10cSrcweir #include <vcl/virdev.hxx> 29cdf0e10cSrcweir #include <svx/svdobj.hxx> 30cdf0e10cSrcweir 31cdf0e10cSrcweir //************************************************************ 32cdf0e10cSrcweir // Vorausdeklarationen 33cdf0e10cSrcweir //************************************************************ 34cdf0e10cSrcweir 35cdf0e10cSrcweir class SfxItemSet; 36cdf0e10cSrcweir class SdrObjList; 37cdf0e10cSrcweir class SdrModel; 38cdf0e10cSrcweir class SdrPage; 39cdf0e10cSrcweir class SdrObject; 40cdf0e10cSrcweir class SvdProgressInfo; 41cdf0e10cSrcweir 42cdf0e10cSrcweir //************************************************************ 43cdf0e10cSrcweir // Hilfsklasse ImpSdrGDIMetaFileImport 44cdf0e10cSrcweir //************************************************************ 45cdf0e10cSrcweir 46cdf0e10cSrcweir class ImpSdrGDIMetaFileImport 47cdf0e10cSrcweir { 48cdf0e10cSrcweir protected: 49*8718d260SArmin Le Grand ::std::vector< SdrObject* > maTmpList; 50*8718d260SArmin Le Grand VirtualDevice maVD; 51*8718d260SArmin Le Grand Rectangle maScaleRect; 52*8718d260SArmin Le Grand sal_uLong mnMapScalingOfs; // ab hier nocht nicht mit MapScaling bearbeitet 53*8718d260SArmin Le Grand SfxItemSet* mpLineAttr; 54*8718d260SArmin Le Grand SfxItemSet* mpFillAttr; 55*8718d260SArmin Le Grand SfxItemSet* mpTextAttr; 56*8718d260SArmin Le Grand SdrModel* mpModel; 57*8718d260SArmin Le Grand SdrLayerID mnLayer; 58*8718d260SArmin Le Grand Color maOldLineColor; 59*8718d260SArmin Le Grand sal_Int32 mnLineWidth; 60cdf0e10cSrcweir basegfx::B2DLineJoin maLineJoin; 615aaf853bSArmin Le Grand com::sun::star::drawing::LineCap maLineCap; 62cdf0e10cSrcweir XDash maDash; 63cdf0e10cSrcweir 64*8718d260SArmin Le Grand bool mbMov; 65*8718d260SArmin Le Grand bool mbSize; 66*8718d260SArmin Le Grand Point maOfs; 67*8718d260SArmin Le Grand double mfScaleX; 68*8718d260SArmin Le Grand double mfScaleY; 69*8718d260SArmin Le Grand Fraction maScaleX; 70*8718d260SArmin Le Grand Fraction maScaleY; 71cdf0e10cSrcweir 72*8718d260SArmin Le Grand bool mbFntDirty; 73cdf0e10cSrcweir 74cdf0e10cSrcweir // fuer Optimierung von (PenNULL,Brush,DrawPoly),(Pen,BrushNULL,DrawPoly) -> aus 2 mach ein 75*8718d260SArmin Le Grand bool mbLastObjWasPolyWithoutLine; 76*8718d260SArmin Le Grand bool mbNoLine; 77*8718d260SArmin Le Grand bool mbNoFill; 78cdf0e10cSrcweir 79cdf0e10cSrcweir // fuer Optimierung mehrerer Linien zu einer Polyline 80*8718d260SArmin Le Grand bool mbLastObjWasLine; 81cdf0e10cSrcweir 8247a7c0c1SArmin Le Grand // clipregion 8347a7c0c1SArmin Le Grand basegfx::B2DPolyPolygon maClip; 8447a7c0c1SArmin Le Grand 85cdf0e10cSrcweir protected: 8647a7c0c1SArmin Le Grand // ckeck for clip and evtl. fill maClip 8747a7c0c1SArmin Le Grand void checkClip(); 8847a7c0c1SArmin Le Grand bool isClip() const; 8947a7c0c1SArmin Le Grand 9047a7c0c1SArmin Le Grand // actions 91cdf0e10cSrcweir void DoAction(MetaPixelAction & rAct); 92cdf0e10cSrcweir void DoAction(MetaPointAction & rAct); 93cdf0e10cSrcweir void DoAction(MetaLineAction & rAct); 94cdf0e10cSrcweir void DoAction(MetaRectAction & rAct); 95cdf0e10cSrcweir void DoAction(MetaRoundRectAction & rAct); 96cdf0e10cSrcweir void DoAction(MetaEllipseAction & rAct); 97cdf0e10cSrcweir void DoAction(MetaArcAction & rAct); 98cdf0e10cSrcweir void DoAction(MetaPieAction & rAct); 99cdf0e10cSrcweir void DoAction(MetaChordAction & rAct); 100cdf0e10cSrcweir void DoAction(MetaPolyLineAction & rAct); 101cdf0e10cSrcweir void DoAction(MetaPolygonAction & rAct); 102cdf0e10cSrcweir void DoAction(MetaPolyPolygonAction & rAct); 103cdf0e10cSrcweir void DoAction(MetaTextAction & rAct); 104cdf0e10cSrcweir void DoAction(MetaTextArrayAction & rAct); 105cdf0e10cSrcweir void DoAction(MetaStretchTextAction & rAct); 106cdf0e10cSrcweir void DoAction(MetaBmpAction & rAct); 107cdf0e10cSrcweir void DoAction(MetaBmpScaleAction & rAct); 108cdf0e10cSrcweir void DoAction(MetaBmpExAction & rAct); 109cdf0e10cSrcweir void DoAction(MetaBmpExScaleAction & rAct); 110cdf0e10cSrcweir void DoAction(MetaHatchAction & rAct); 111cdf0e10cSrcweir void DoAction(MetaLineColorAction & rAct); 112cdf0e10cSrcweir void DoAction(MetaMapModeAction & rAct); DoAction(MetaFillColorAction & rAct)113*8718d260SArmin Le Grand void DoAction(MetaFillColorAction & rAct) { rAct.Execute(&maVD); } DoAction(MetaTextColorAction & rAct)114*8718d260SArmin Le Grand void DoAction(MetaTextColorAction & rAct) { rAct.Execute(&maVD); } DoAction(MetaTextFillColorAction & rAct)115*8718d260SArmin Le Grand void DoAction(MetaTextFillColorAction & rAct) { rAct.Execute(&maVD); } DoAction(MetaFontAction & rAct)116*8718d260SArmin Le Grand void DoAction(MetaFontAction & rAct) { rAct.Execute(&maVD); mbFntDirty = true; } DoAction(MetaTextAlignAction & rAct)117*8718d260SArmin Le Grand void DoAction(MetaTextAlignAction & rAct) { rAct.Execute(&maVD); mbFntDirty = true; } DoAction(MetaClipRegionAction & rAct)118*8718d260SArmin Le Grand void DoAction(MetaClipRegionAction & rAct) { rAct.Execute(&maVD); checkClip(); } DoAction(MetaRasterOpAction & rAct)119*8718d260SArmin Le Grand void DoAction(MetaRasterOpAction & rAct) { rAct.Execute(&maVD); } DoAction(MetaPushAction & rAct)120*8718d260SArmin Le Grand void DoAction(MetaPushAction & rAct) { rAct.Execute(&maVD); checkClip(); } DoAction(MetaPopAction & rAct)121*8718d260SArmin Le Grand void DoAction(MetaPopAction & rAct) { rAct.Execute(&maVD); mbFntDirty = true; checkClip(); } DoAction(MetaMoveClipRegionAction & rAct)122*8718d260SArmin Le Grand void DoAction(MetaMoveClipRegionAction & rAct) { rAct.Execute(&maVD); checkClip(); } DoAction(MetaISectRectClipRegionAction & rAct)123*8718d260SArmin Le Grand void DoAction(MetaISectRectClipRegionAction& rAct) { rAct.Execute(&maVD); checkClip(); } DoAction(MetaISectRegionClipRegionAction & rAct)124*8718d260SArmin Le Grand void DoAction(MetaISectRegionClipRegionAction& rAct) { rAct.Execute(&maVD); checkClip(); } 125cdf0e10cSrcweir void DoAction(MetaCommentAction& rAct, GDIMetaFile* pMtf); 126cdf0e10cSrcweir 127*8718d260SArmin Le Grand // missing actions added 128*8718d260SArmin Le Grand void DoAction(MetaTextRectAction& rAct); 129*8718d260SArmin Le Grand void DoAction(MetaBmpScalePartAction& rAct); 130*8718d260SArmin Le Grand void DoAction(MetaBmpExScalePartAction& rAct); 131*8718d260SArmin Le Grand void DoAction(MetaMaskAction& rAct); 132*8718d260SArmin Le Grand void DoAction(MetaMaskScaleAction& rAct); 133*8718d260SArmin Le Grand void DoAction(MetaMaskScalePartAction& rAct); 134*8718d260SArmin Le Grand void DoAction(MetaGradientAction& rAct); 135*8718d260SArmin Le Grand void DoAction(MetaWallpaperAction& rAct); 136*8718d260SArmin Le Grand void DoAction(MetaTransparentAction& rAct); 137*8718d260SArmin Le Grand void DoAction(MetaEPSAction& rAct); DoAction(MetaRefPointAction & rAct)138*8718d260SArmin Le Grand void DoAction(MetaRefPointAction& rAct) { rAct.Execute(&maVD); } DoAction(MetaTextLineColorAction & rAct)139*8718d260SArmin Le Grand void DoAction(MetaTextLineColorAction& rAct) { rAct.Execute(&maVD); mbFntDirty = true; } 140*8718d260SArmin Le Grand void DoAction(MetaTextLineAction& rAct); 141*8718d260SArmin Le Grand void DoAction(MetaFloatTransparentAction& rAct); 142*8718d260SArmin Le Grand void DoAction(MetaGradientExAction& rAct); DoAction(MetaLayoutModeAction & rAct)143*8718d260SArmin Le Grand void DoAction(MetaLayoutModeAction& rAct) { rAct.Execute(&maVD); mbFntDirty = true; } DoAction(MetaTextLanguageAction & rAct)144*8718d260SArmin Le Grand void DoAction(MetaTextLanguageAction& rAct) { rAct.Execute(&maVD); mbFntDirty = true; } DoAction(MetaOverlineColorAction & rAct)145*8718d260SArmin Le Grand void DoAction(MetaOverlineColorAction& rAct) { rAct.Execute(&maVD); mbFntDirty = true; } 146*8718d260SArmin Le Grand 147cdf0e10cSrcweir void ImportText(const Point& rPos, const XubString& rStr, const MetaAction& rAct); 148*8718d260SArmin Le Grand void SetAttributes(SdrObject* pObj, bool bForceTextAttr = false); 149*8718d260SArmin Le Grand void InsertObj(SdrObject* pObj, bool bScale = true); 150cdf0e10cSrcweir void MapScaling(); 151cdf0e10cSrcweir 152cdf0e10cSrcweir // #i73407# reformulation to use new B2DPolygon classes 153cdf0e10cSrcweir bool CheckLastLineMerge(const basegfx::B2DPolygon& rSrcPoly); 154cdf0e10cSrcweir bool CheckLastPolyLineAndFillMerge(const basegfx::B2DPolyPolygon& rPolyPolygon); 155cdf0e10cSrcweir 156*8718d260SArmin Le Grand void DoLoopActions(GDIMetaFile& rMtf, SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport); 157*8718d260SArmin Le Grand 158cdf0e10cSrcweir public: 159*8718d260SArmin Le Grand ImpSdrGDIMetaFileImport( 160*8718d260SArmin Le Grand SdrModel& rModel, 161*8718d260SArmin Le Grand SdrLayerID nLay, 162*8718d260SArmin Le Grand const Rectangle& rRect); 163cdf0e10cSrcweir ~ImpSdrGDIMetaFileImport(); 164*8718d260SArmin Le Grand 165*8718d260SArmin Le Grand sal_uInt32 DoImport( 166*8718d260SArmin Le Grand const GDIMetaFile& rMtf, 167*8718d260SArmin Le Grand SdrObjList& rDestList, 168*8718d260SArmin Le Grand sal_uInt32 nInsPos = CONTAINER_APPEND, 169*8718d260SArmin Le Grand SvdProgressInfo* pProgrInfo = 0); 170cdf0e10cSrcweir }; 171cdf0e10cSrcweir 172cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 173cdf0e10cSrcweir 174cdf0e10cSrcweir #endif //_SVDFMTF_HXX 175cdf0e10cSrcweir // eof 176