13334a7e6SAndrew Rist /************************************************************** 23334a7e6SAndrew Rist * 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 103334a7e6SAndrew Rist * 113334a7e6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 123334a7e6SAndrew Rist * 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. 193334a7e6SAndrew Rist * 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: 498718d260SArmin Le Grand ::std::vector< SdrObject* > maTmpList; 508718d260SArmin Le Grand VirtualDevice maVD; 518718d260SArmin Le Grand Rectangle maScaleRect; 528718d260SArmin Le Grand sal_uLong mnMapScalingOfs; // ab hier nocht nicht mit MapScaling bearbeitet 538718d260SArmin Le Grand SfxItemSet* mpLineAttr; 548718d260SArmin Le Grand SfxItemSet* mpFillAttr; 558718d260SArmin Le Grand SfxItemSet* mpTextAttr; 568718d260SArmin Le Grand SdrModel* mpModel; 578718d260SArmin Le Grand SdrLayerID mnLayer; 588718d260SArmin Le Grand Color maOldLineColor; 598718d260SArmin Le Grand sal_Int32 mnLineWidth; 60cdf0e10cSrcweir basegfx::B2DLineJoin maLineJoin; 615aaf853bSArmin Le Grand com::sun::star::drawing::LineCap maLineCap; 62cdf0e10cSrcweir XDash maDash; 63cdf0e10cSrcweir 648718d260SArmin Le Grand bool mbMov; 658718d260SArmin Le Grand bool mbSize; 668718d260SArmin Le Grand Point maOfs; 678718d260SArmin Le Grand double mfScaleX; 688718d260SArmin Le Grand double mfScaleY; 698718d260SArmin Le Grand Fraction maScaleX; 708718d260SArmin Le Grand Fraction maScaleY; 71cdf0e10cSrcweir 728718d260SArmin Le Grand bool mbFntDirty; 73cdf0e10cSrcweir 74cdf0e10cSrcweir // fuer Optimierung von (PenNULL,Brush,DrawPoly),(Pen,BrushNULL,DrawPoly) -> aus 2 mach ein 758718d260SArmin Le Grand bool mbLastObjWasPolyWithoutLine; 768718d260SArmin Le Grand bool mbNoLine; 778718d260SArmin Le Grand bool mbNoFill; 78cdf0e10cSrcweir 79cdf0e10cSrcweir // fuer Optimierung mehrerer Linien zu einer Polyline 808718d260SArmin 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)1138718d260SArmin Le Grand void DoAction(MetaFillColorAction & rAct) { rAct.Execute(&maVD); } DoAction(MetaTextColorAction & rAct)1148718d260SArmin Le Grand void DoAction(MetaTextColorAction & rAct) { rAct.Execute(&maVD); } DoAction(MetaTextFillColorAction & rAct)1158718d260SArmin Le Grand void DoAction(MetaTextFillColorAction & rAct) { rAct.Execute(&maVD); } DoAction(MetaFontAction & rAct)1168718d260SArmin Le Grand void DoAction(MetaFontAction & rAct) { rAct.Execute(&maVD); mbFntDirty = true; } DoAction(MetaTextAlignAction & rAct)1178718d260SArmin Le Grand void DoAction(MetaTextAlignAction & rAct) { rAct.Execute(&maVD); mbFntDirty = true; } DoAction(MetaClipRegionAction & rAct)1188718d260SArmin Le Grand void DoAction(MetaClipRegionAction & rAct) { rAct.Execute(&maVD); checkClip(); } DoAction(MetaRasterOpAction & rAct)1198718d260SArmin Le Grand void DoAction(MetaRasterOpAction & rAct) { rAct.Execute(&maVD); } DoAction(MetaPushAction & rAct)1208718d260SArmin Le Grand void DoAction(MetaPushAction & rAct) { rAct.Execute(&maVD); checkClip(); } DoAction(MetaPopAction & rAct)1218718d260SArmin Le Grand void DoAction(MetaPopAction & rAct) { rAct.Execute(&maVD); mbFntDirty = true; checkClip(); } DoAction(MetaMoveClipRegionAction & rAct)1228718d260SArmin Le Grand void DoAction(MetaMoveClipRegionAction & rAct) { rAct.Execute(&maVD); checkClip(); } DoAction(MetaISectRectClipRegionAction & rAct)1238718d260SArmin Le Grand void DoAction(MetaISectRectClipRegionAction& rAct) { rAct.Execute(&maVD); checkClip(); } DoAction(MetaISectRegionClipRegionAction & rAct)1248718d260SArmin Le Grand void DoAction(MetaISectRegionClipRegionAction& rAct) { rAct.Execute(&maVD); checkClip(); } 125*690281a1SArmin Le Grand 126*690281a1SArmin Le Grand // #i125211# The MetaCommentAction needs to advance (if used), thus 127*690281a1SArmin Le Grand // give current metafile and index which may be changed 128*690281a1SArmin Le Grand void DoAction(MetaCommentAction& rAct, GDIMetaFile& rMtf, sal_uLong& a); 129cdf0e10cSrcweir 1308718d260SArmin Le Grand // missing actions added 1318718d260SArmin Le Grand void DoAction(MetaTextRectAction& rAct); 1328718d260SArmin Le Grand void DoAction(MetaBmpScalePartAction& rAct); 1338718d260SArmin Le Grand void DoAction(MetaBmpExScalePartAction& rAct); 1348718d260SArmin Le Grand void DoAction(MetaMaskAction& rAct); 1358718d260SArmin Le Grand void DoAction(MetaMaskScaleAction& rAct); 1368718d260SArmin Le Grand void DoAction(MetaMaskScalePartAction& rAct); 1378718d260SArmin Le Grand void DoAction(MetaGradientAction& rAct); 1388718d260SArmin Le Grand void DoAction(MetaWallpaperAction& rAct); 1398718d260SArmin Le Grand void DoAction(MetaTransparentAction& rAct); 1408718d260SArmin Le Grand void DoAction(MetaEPSAction& rAct); DoAction(MetaRefPointAction & rAct)1418718d260SArmin Le Grand void DoAction(MetaRefPointAction& rAct) { rAct.Execute(&maVD); } DoAction(MetaTextLineColorAction & rAct)1428718d260SArmin Le Grand void DoAction(MetaTextLineColorAction& rAct) { rAct.Execute(&maVD); mbFntDirty = true; } 1438718d260SArmin Le Grand void DoAction(MetaTextLineAction& rAct); 1448718d260SArmin Le Grand void DoAction(MetaFloatTransparentAction& rAct); 1458718d260SArmin Le Grand void DoAction(MetaGradientExAction& rAct); DoAction(MetaLayoutModeAction & rAct)1468718d260SArmin Le Grand void DoAction(MetaLayoutModeAction& rAct) { rAct.Execute(&maVD); mbFntDirty = true; } DoAction(MetaTextLanguageAction & rAct)1478718d260SArmin Le Grand void DoAction(MetaTextLanguageAction& rAct) { rAct.Execute(&maVD); mbFntDirty = true; } DoAction(MetaOverlineColorAction & rAct)1488718d260SArmin Le Grand void DoAction(MetaOverlineColorAction& rAct) { rAct.Execute(&maVD); mbFntDirty = true; } 1498718d260SArmin Le Grand 1508718d260SArmin Le Grand void ImportText(const Point& rPos, const XubString& rStr, const MetaAction& rAct); 1518718d260SArmin Le Grand void SetAttributes(SdrObject* pObj, bool bForceTextAttr = false); 1528718d260SArmin Le Grand void InsertObj(SdrObject* pObj, bool bScale = true); 153cdf0e10cSrcweir void MapScaling(); 154cdf0e10cSrcweir 155cdf0e10cSrcweir // #i73407# reformulation to use new B2DPolygon classes 156cdf0e10cSrcweir bool CheckLastLineMerge(const basegfx::B2DPolygon& rSrcPoly); 157cdf0e10cSrcweir bool CheckLastPolyLineAndFillMerge(const basegfx::B2DPolyPolygon& rPolyPolygon); 1588718d260SArmin Le Grand 1598718d260SArmin Le Grand void DoLoopActions(GDIMetaFile& rMtf, SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport); 160cdf0e10cSrcweir 161cdf0e10cSrcweir public: 1628718d260SArmin Le Grand ImpSdrGDIMetaFileImport( 1638718d260SArmin Le Grand SdrModel& rModel, 1648718d260SArmin Le Grand SdrLayerID nLay, 1658718d260SArmin Le Grand const Rectangle& rRect); 166cdf0e10cSrcweir ~ImpSdrGDIMetaFileImport(); 1678718d260SArmin Le Grand 1688718d260SArmin Le Grand sal_uInt32 DoImport( 1698718d260SArmin Le Grand const GDIMetaFile& rMtf, 1708718d260SArmin Le Grand SdrObjList& rDestList, 1718718d260SArmin Le Grand sal_uInt32 nInsPos = CONTAINER_APPEND, 1728718d260SArmin Le Grand SvdProgressInfo* pProgrInfo = 0); 173cdf0e10cSrcweir }; 174cdf0e10cSrcweir 175cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 176cdf0e10cSrcweir 177cdf0e10cSrcweir #endif //_SVDFMTF_HXX 178cdf0e10cSrcweir // eof 179