summaryrefslogtreecommitdiff
path: root/svx/inc/svx/msdffimp.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/inc/svx/msdffimp.hxx')
-rw-r--r--svx/inc/svx/msdffimp.hxx773
1 files changed, 0 insertions, 773 deletions
diff --git a/svx/inc/svx/msdffimp.hxx b/svx/inc/svx/msdffimp.hxx
deleted file mode 100644
index 4c7c991546..0000000000
--- a/svx/inc/svx/msdffimp.hxx
+++ /dev/null
@@ -1,773 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: msdffimp.hxx,v $
- * $Revision: 1.4.214.1 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _MSDFFIMP_HXX
-#define _MSDFFIMP_HXX
-
-#include <com/sun/star/uno/Reference.h>
-#include <com/sun/star/embed/XEmbeddedObject.hpp>
-#include <tools/solar.h> // UINTXX
-#include <svtools/svarray.hxx>
-
-#include <tools/color.hxx>
-#include <tools/gen.hxx>
-#include <tools/table.hxx>
-#include <svx/msdffdef.hxx>
-#include <svx/msfiltertracer.hxx>
-#include <vcl/graph.hxx>
-#include <string.h>
-
-#include <map>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <svx/svxdllapi.h>
-
-#include <sot/storage.hxx>
-
-class Graphic;
-class SvStream;
-class SdrObject;
-class SdrOle2Obj;
-class SotStorageRef;
-class Polygon;
-class PolyPolygon;
-class FmFormModel;
-class SdrModel;
-class DffRecordHeader;
-
-class SwFlyFrmFmt;
-
-struct SvxMSDffBLIPInfo;
-struct SvxMSDffShapeInfo;
-struct SvxMSDffShapeOrder;
-
-#define COL_DEFAULT RGB_COLORDATA( 0xFA, 0xFB, 0xFC )
-
-typedef SvxMSDffBLIPInfo* SvxMSDffBLIPInfo_Ptr;
-
-typedef SvxMSDffShapeInfo* SvxMSDffShapeInfo_Ptr;
-
-typedef SvxMSDffShapeOrder* SvxMSDffShapeOrder_Ptr;
-
-typedef ::std::map< sal_Int32, SdrObject* > SvxMSDffShapeIdContainer;
-
-#define SVEXT_PERSIST_STREAM "\002OlePres000"
-
-// nach der Reihenfolge des Auftretens sortiert werden:
-//
-SV_DECL_PTRARR_DEL(SvxMSDffBLIPInfos, SvxMSDffBLIPInfo_Ptr, 16,16)
-
-SV_DECL_PTRARR_DEL(SvxMSDffShapeOrders, SvxMSDffShapeOrder_Ptr, 16,16)
-
-// explizit sortiert werden:
-//
-SV_DECL_PTRARR_SORT_DEL_VISIBILITY(SvxMSDffShapeInfos, SvxMSDffShapeInfo_Ptr, 16,16, SVX_DLLPUBLIC)
-
-SV_DECL_PTRARR_SORT_VISIBILITY(SvxMSDffShapeTxBxSort, SvxMSDffShapeOrder_Ptr, 16,16, SVX_DLLPUBLIC)
-
-#define SVXMSDFF_SETTINGS_CROP_BITMAPS 1
-#define SVXMSDFF_SETTINGS_IMPORT_PPT 2
-#define SVXMSDFF_SETTINGS_IMPORT_EXCEL 4
-
-#define SP_FGROUP 0x001 // This shape is a group shape
-#define SP_FCHILD 0x002 // Not a top-level shape
-#define SP_FPATRIARCH 0x004 // This is the topmost group shape.
- // Exactly one of these per drawing.
-#define SP_FDELETED 0x008 // The shape has been deleted
-#define SP_FOLESHAPE 0x010 // The shape is an OLE object
-#define SP_FHAVEMASTER 0x020 // Shape has a hspMaster property
-#define SP_FFLIPH 0x040 // Shape is flipped horizontally
-#define SP_FFLIPV 0x080 // Shape is flipped vertically
-#define SP_FCONNECTOR 0x100 // Connector type of shape
-#define SP_FHAVEANCHOR 0x200 // Shape has an anchor of some kind
-#define SP_FBACKGROUND 0x400 // Background shape
-#define SP_FHAVESPT 0x800 // Shape has a shape type property
-
-// for the CreateSdrOLEFromStorage we need the information, how we handle
-// convert able OLE-Objects - this ist stored in
-#define OLE_MATHTYPE_2_STARMATH 0x0001
-#define OLE_WINWORD_2_STARWRITER 0x0002
-#define OLE_EXCEL_2_STARCALC 0x0004
-#define OLE_POWERPOINT_2_STARIMPRESS 0x0008
-
-struct SvxMSDffConnectorRule
-{
- sal_uInt32 nRuleId;
- sal_uInt32 nShapeA; // SPID of shape A
-
- sal_uInt32 nShapeB; // SPID of shape B
- sal_uInt32 nShapeC; // SPID of connector shape
- sal_uInt32 ncptiA; // Connection site Index of shape A
- sal_uInt32 ncptiB; // Connection site Index of shape B
- sal_uInt32 nSpFlagsA; // SpFlags of shape A ( the original mirror flags must be known when solving the Solver Container )
- sal_uInt32 nSpFlagsB; // SpFlags of shape A
-
- SdrObject* pAObj; // pPtr of object ( corresponding to shape A )
- SdrObject* pBObj; // "
- SdrObject* pCObj; // " of connector object
-
- SvxMSDffConnectorRule() : nSpFlagsA( 0 ), nSpFlagsB( 0 ), pAObj( NULL ), pBObj( NULL ), pCObj( NULL ) {};
-
- friend SvStream& operator>>( SvStream& rIn, SvxMSDffConnectorRule& rAtom );
-};
-struct SVX_DLLPUBLIC SvxMSDffSolverContainer
-{
- List aCList;
-
- SvxMSDffSolverContainer();
- ~SvxMSDffSolverContainer();
-
- SVX_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, SvxMSDffSolverContainer& rAtom );
-};
-
-struct FIDCL
-{
- UINT32 dgid; // DG owning the SPIDs in this cluster
- UINT32 cspidCur; // number of SPIDs used so far
-};
-
-//---------------------------------------------------------------------------
-// von SvxMSDffManager fuer jedes in der Gruppe enthaltene Shape geliefert
-//---------------------------------------------------------------------------
-struct MSDffTxId
-{
- USHORT nTxBxS;
- USHORT nSequence;
- MSDffTxId(USHORT nTxBxS_, USHORT nSequence_ )
- : nTxBxS( nTxBxS_ ),
- nSequence( nSequence_ ){}
- MSDffTxId(const MSDffTxId& rCopy)
- : nTxBxS( rCopy.nTxBxS ),
- nSequence( rCopy.nSequence ){}
-};
-
-struct SVX_DLLPUBLIC SvxMSDffImportRec
-{
- SdrObject* pObj;
- Polygon* pWrapPolygon;
- char* pClientAnchorBuffer;
- UINT32 nClientAnchorLen;
- char* pClientDataBuffer;
- UINT32 nClientDataLen;
- UINT32 nXAlign;
- UINT32 nXRelTo;
- UINT32 nYAlign;
- UINT32 nYRelTo;
- UINT32 nLayoutInTableCell;
- UINT32 nFlags;
- long nTextRotationAngle;
- long nDxTextLeft; // Abstand der Textbox vom umgebenden Shape
- long nDyTextTop;
- long nDxTextRight;
- long nDyTextBottom;
- long nDxWrapDistLeft;
- long nDyWrapDistTop;
- long nDxWrapDistRight;
- long nDyWrapDistBottom;
- long nCropFromTop;
- long nCropFromBottom;
- long nCropFromLeft;
- long nCropFromRight;
- MSDffTxId aTextId; // Kennungen fuer Textboxen
- ULONG nNextShapeId; // fuer verlinkte Textboxen
- ULONG nShapeId;
- MSO_SPT eShapeType;
- MSO_LineStyle eLineStyle; // Umrandungs-Arten
- BOOL bDrawHell :1;
- BOOL bHidden :1;
- BOOL bReplaceByFly :1;
- BOOL bLastBoxInChain :1;
- BOOL bHasUDefProp :1;
- BOOL bVFlip :1;
- BOOL bHFlip :1;
- BOOL bAutoWidth :1;
-
- SvxMSDffImportRec();
- SvxMSDffImportRec(const SvxMSDffImportRec& rCopy);
- ~SvxMSDffImportRec();
- BOOL operator==( const SvxMSDffImportRec& rEntry ) const
- { return nShapeId == rEntry.nShapeId; }
- BOOL operator<( const SvxMSDffImportRec& rEntry ) const
- { return nShapeId < rEntry.nShapeId; }
-};
-typedef SvxMSDffImportRec* MSDffImportRec_Ptr;
-
-// Liste aller SvxMSDffImportRec fuer eine Gruppe
-SV_DECL_PTRARR_SORT_DEL_VISIBILITY(MSDffImportRecords, MSDffImportRec_Ptr, 16,16, SVX_DLLPUBLIC)
-
-//---------------------------------------------------------------------------
-// Import-/Export-Parameterblock fuer 1 x ImportObjAtCurrentStreamPos()
-//---------------------------------------------------------------------------
-struct SvxMSDffImportData
-{
- MSDffImportRecords aRecords; // Shape-Pointer, -Ids und private Daten
- Rectangle aParentRect;// Rectangle der umgebenden Gruppe
- // bzw. von aussen reingegebenes Rect
- Rectangle aNewRect; // mit diesem Shape definiertes Rectangle
-
- SvxMSDffImportData()
- {}
- SvxMSDffImportData(const Rectangle& rParentRect)
- :aParentRect( rParentRect )
- {}
- void SetNewRect(INT32 l, INT32 o,
- INT32 r, INT32 u ){ aNewRect = Rectangle(l,o, r,u); }
- BOOL HasParRect() const { return aParentRect.IsEmpty(); }
- BOOL HasNewRect() const { return aNewRect.IsEmpty() ; }
- BOOL HasRecords() const { return 0 != aRecords.Count(); }
- USHORT GetRecCount() const { return aRecords.Count(); }
- SvxMSDffImportRec* GetRecord(USHORT iRecord) const
- { return aRecords.GetObject( iRecord ); }
-};
-
-struct DffObjData
-{
- const DffRecordHeader& rSpHd;
-
- Rectangle aBoundRect;
- Rectangle aChildAnchor;
-
- UINT32 nShapeId;
- UINT32 nSpFlags;
- MSO_SPT eShapeType;
-
- BOOL bShapeType : 1;
- BOOL bClientAnchor : 1;
- BOOL bClientData : 1;
- BOOL bChildAnchor : 1;
- BOOL bOpt : 1;
- BOOL bIsAutoText : 1;
-
- int nCalledByGroup;
-
- DffObjData( const DffRecordHeader& rObjHd,
- const Rectangle& rBoundRect,
- int nClByGroup ) :
- rSpHd( rObjHd ),
- aBoundRect( rBoundRect ),
- nShapeId( 0 ),
- nSpFlags( 0 ),
- eShapeType( mso_sptNil ),
- bShapeType( FALSE ),
- bClientAnchor( FALSE ),
- bClientData( FALSE ),
- bChildAnchor( FALSE ),
- bOpt( FALSE ),
- bIsAutoText( FALSE ),
- nCalledByGroup( nClByGroup ){}
-};
-
-#define DFF_RECORD_MANAGER_BUF_SIZE 64
-
-struct DffRecordList
-{
- UINT32 nCount;
- UINT32 nCurrent;
- DffRecordList* pPrev;
- DffRecordList* pNext;
-
- DffRecordHeader mHd[ DFF_RECORD_MANAGER_BUF_SIZE ];
-
- DffRecordList( DffRecordList* pList );
- ~DffRecordList();
-};
-
-enum DffSeekToContentMode
-{
- SEEK_FROM_BEGINNING,
- SEEK_FROM_CURRENT,
- SEEK_FROM_CURRENT_AND_RESTART
-};
-
-class SVX_DLLPUBLIC DffRecordManager : public DffRecordList
-{
- public :
-
- DffRecordList* pCList;
-
- void Clear();
- void Consume( SvStream& rIn, BOOL bAppend = FALSE, UINT32 nStOfs = 0 );
-
- BOOL SeekToContent( SvStream& rIn, UINT16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING );
- DffRecordHeader* GetRecordHeader( UINT16 nRecType, DffSeekToContentMode eMode = SEEK_FROM_BEGINNING );
-
- DffRecordManager();
- DffRecordManager( SvStream& rIn );
- ~DffRecordManager();
-
- DffRecordHeader* Current();
- DffRecordHeader* First();
- DffRecordHeader* Next();
- DffRecordHeader* Prev();
- DffRecordHeader* Last();
-};
-
-/*
- SvxMSDffManager - abstrakte Basis-Klasse fuer Escher-Import
- ===============
- Zweck: Zugriff auf Objekte im Drawing File Format
- Stand: Zugriff nur auf BLIPs (wird spaeter erweitert)
-
- Beachte: in der zwecks PowerPoint-, ODER Word- ODER Excel-Import
- ======== abgeleiteten Klasse
- MUSS jeweils die Methode ProcessUserDefinedRecord()
- implementiert werden!
-*/
-class SVX_DLLPUBLIC SvxMSDffManager : public DffPropertyReader
-{
- FmFormModel* pFormModel;
- SvxMSDffBLIPInfos* pBLIPInfos;
- SvxMSDffShapeInfos* pShapeInfos;
- SvxMSDffShapeOrders* pShapeOrders;
- ULONG nDefaultFontHeight;
- long nOffsDgg;
- USHORT nBLIPCount;
- USHORT nShapeCount;
- sal_uInt32 nGroupShapeFlags;
-
- void CheckTxBxStoryChain();
- void GetFidclData( long nOffsDgg );
-
-protected :
-
- String maBaseURL;
- UINT32 mnCurMaxShapeId; // we need this information to
- UINT32 mnDrawingsSaved; // access the right drawing
- UINT32 mnIdClusters; // while only knowing the shapeid
- FIDCL* mpFidcls;
- Table maDgOffsetTable; // array of fileoffsets
-
- friend class DffPropertyReader;
-
- SvStream& rStCtrl;
- SvStream* pStData;
- SvStream* pStData2;
- SdrModel* pSdrModel;
-
- long nMapMul;
- long nMapDiv;
- long nMapXOfs;
- long nMapYOfs;
- long nEmuMul;
- long nEmuDiv;
- long nPntMul;
- long nPntDiv;
- FASTBOOL bNeedMap;
- UINT32 nSvxMSDffSettings;
- UINT32 nSvxMSDffOLEConvFlags;
-
- /** stores a reference to an imported SdrObject with its shape id if
- it has one
- */
- SvxMSDffShapeIdContainer maShapeIdContainer;
-
- void GetCtrlData( long nOffsDgg );
- void GetDrawingGroupContainerData( SvStream& rSt,
- ULONG nLenDgg );
- // --> OD 2008-08-01 #156763#
- // Add internal drawing container id as parameter to the sub methods of
- // reading the control information about the drawing objects.
- // The drawing container id is used to distinguish the text ids of drawing
- // objects in different drawing containers.
- void GetDrawingContainerData( SvStream& rSt,
- ULONG nLenDg,
- const unsigned long nDrawingContainerId );
- BOOL GetShapeGroupContainerData( SvStream& rSt,
- ULONG nLenShapeGroupCont,
- BOOL bPatriarch,
- const unsigned long nDrawingContainerId );
- BOOL GetShapeContainerData( SvStream& rSt,
- ULONG nLenShapeCont,
- ULONG nPosGroup,
- const unsigned long nDrawingContainerId );
- // <--
-
- FASTBOOL ReadGraphic( SvStream& rSt, ULONG nIndex, Graphic& rGraphic ) const;
- SdrObject* ImportFontWork( SvStream&, SfxItemSet&, Rectangle& rBoundRect ) const;
- SdrObject* ImportGraphic( SvStream&, SfxItemSet&, const DffObjData& ) const;
- // --> OD 2004-12-14 #i32596# - pass <nCalledByGroup> to method
- // Needed in the Writer Microsoft Word import to avoid import of OLE objects
- // inside groups. Instead a graphic object is created.
- virtual SdrObject* ImportOLE( long nOLEId,
- const Graphic& rGraf,
- const Rectangle& rBoundRect,
- const Rectangle& rVisArea,
- const int _nCalledByGroup,
- sal_Int64 nAspect ) const;
- // <--
- SdrObject* GetAutoForm( MSO_SPT eTyp ) const;
- static const GDIMetaFile* lcl_GetMetaFileFromGrf_Impl( const Graphic& rGrf, GDIMetaFile& rMtf );
-#ifndef SVX_LIGHT
- static com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > CheckForConvertToSOObj(
- UINT32 nConvertFlags, SotStorage& rSrcStg,
- const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg,
- const Graphic& rGrf,
- const Rectangle& rVisArea );
-#endif
-
-/*
- folgende Methoden sind zum Excel-Import zu ueberschreiben:
-*/
- virtual BOOL ProcessClientAnchor(SvStream& rStData, ULONG nDatLen, char*& rpBuff, UINT32& rBuffLen ) const;
- virtual void ProcessClientAnchor2( SvStream& rStData, DffRecordHeader& rHd, void* pData, DffObjData& );
- virtual BOOL ProcessClientData( SvStream& rStData, ULONG nDatLen, char*& rpBuff, UINT32& rBuffLen ) const;
- virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj = NULL);
- virtual ULONG Calc_nBLIPPos( ULONG nOrgVal, ULONG nStreamPos ) const;
- virtual FASTBOOL GetColorFromPalette(USHORT nNum, Color& rColor) const;
-
- // -----------------------------------------------------------------------
-
- FASTBOOL ReadDffString(SvStream& rSt, String& rTxt) const;
- FASTBOOL ReadObjText(SvStream& rSt, SdrObject* pObj) const;
-
- // SJ: New implementation of ReadObjText is used by Fontwork objects, because
- // the old one does not properly import multiple paragraphs
- void ReadObjText( const String& rText, SdrObject* pObj ) const;
- // -----------------------------------------------------------------------
-
- /*
- folgende Methode ist von allen zu ueberschreiben, die OLE-Objecte
- importieren moechten:
- */
- virtual BOOL GetOLEStorageName( long nOLEId, String& rStorageName,
- SotStorageRef& rSrcStorage,
- com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg
- ) const;
-
- /*
- folgende Methode ist von allen zu ueberschreiben, die verhindern
- moechten, dass (abgerundete) Rechtecke mit umgebrochenem Text
- immer in SdrRectObj( OBJ_TEXT ) umgewandelt werden:
- TRUE bedeutet umwandeln.
- */
- virtual BOOL ShapeHasText(ULONG nShapeId, ULONG nFilePos) const;
-
-public:
-
- void* pSvxMSDffDummy1;
- void* pSvxMSDffDummy2;
- void* pSvxMSDffDummy3;
- List* pEscherBlipCache;
-
- DffRecordManager maShapeRecords;
- ColorData mnDefaultColor;
-
- MSFilterTracer* mpTracer;
- sal_Bool mbTracing;
-
- Color MSO_TEXT_CLR_ToColor( sal_uInt32 nColorCode ) const;
- Color MSO_CLR_ToColor( sal_uInt32 nColorCode, sal_uInt16 nContextProperty = DFF_Prop_lineColor ) const;
- virtual BOOL SeekToShape( SvStream& rSt, void* pClientData, UINT32 nId ) const;
- FASTBOOL SeekToRec( SvStream& rSt, USHORT nRecId, ULONG nMaxFilePos, DffRecordHeader* pRecHd = NULL, ULONG nSkipCount = 0 ) const;
- FASTBOOL SeekToRec2( USHORT nRecId1, USHORT nRecId2, ULONG nMaxFilePos, DffRecordHeader* pRecHd = NULL, ULONG nSkipCount = 0 ) const;
-
- // -----------------------------------------------------------------------
- static void MSDFFReadZString( SvStream& rIn, String& rStr, ULONG nMaxLen, FASTBOOL bUniCode = FALSE );
-
- static BOOL ReadCommonRecordHeader( DffRecordHeader& rRec, SvStream& rIn );
- static BOOL ReadCommonRecordHeader( SvStream& rSt,
- BYTE& rVer,
- USHORT& rInst,
- USHORT& rFbt,
- UINT32& rLength );
-/*
- Konstruktor
- ===========
- Input: rStCtrl - Verwaltungsstream mit Containern,
- FBSE Objekten und Shapes
- ( muss immer uebergeben werden;
- Stream muss bereits offen sein )
-
- nOffsDgg - Offset im rStCtrl: Beginn des Drawing Group Containers
-
- pStData - Datenstream, in dem die BLIPs gespeichert sind
- ( falls Null, wird angenommen, dass die
- BLIPs ebenfalls im rStCtrl gespeichert sind;
- dieser Stream muss ebenfalls bereits offen sein )
- pSdrModel_ kann beim Ctor-Aufruf leer bleiben, muss dann aber
- spaeter ueber SetModel() gesetzt werden!
-
- setzt nBLIPCount
-*/
- SvxMSDffManager( SvStream& rStCtrl,
- const String& rBaseURL,
- long nOffsDgg,
- SvStream* pStData,
- SdrModel* pSdrModel_ = 0,
- long nApplicationScale = 0,
- ColorData mnDefaultColor_ = COL_DEFAULT,
- ULONG nDefaultFontHeight_ = 24,
- SvStream* pStData2_ = 0,
- MSFilterTracer* pTracer = NULL );
-
- // in PPT werden die Parameter DGGContainerOffset und PicStream
- // mit Hilfe einer Init Routine Uebergeben.
- SvxMSDffManager( SvStream& rStCtrl, const String& rBaseURL, MSFilterTracer* pTracer );
- void InitSvxMSDffManager( long nOffsDgg_, SvStream* pStData_, sal_uInt32 nSvxMSDffOLEConvFlags );
- void SetDgContainer( SvStream& rSt );
-
- virtual ~SvxMSDffManager();
-
- UINT32 GetSvxMSDffSettings() const { return nSvxMSDffSettings; };
- void SetSvxMSDffSettings( UINT32 nSettings ) { nSvxMSDffSettings = nSettings; };
-
- static BOOL MakeContentStream( SotStorage * pStor, const GDIMetaFile & );
- static BOOL ConvertToOle2( SvStream& rStm, UINT32 nLen, const GDIMetaFile*,
- const SotStorageRef & rDest );
-
- void SetModel(SdrModel* pModel, long nApplicationScale);
- SdrModel* GetModel() const { return pSdrModel; }
- void Scale(sal_Int32& rVal) const;
- void Scale(Point& rPos) const;
- void Scale(Size& rSiz) const;
- void Scale(Rectangle& rRect) const;
- void Scale(Polygon& rPoly) const;
- void Scale(PolyPolygon& rPoly) const;
- void ScaleEmu(sal_Int32& rVal) const;
- UINT32 ScalePt( UINT32 nPt ) const;
- INT32 ScalePoint( INT32 nVal ) const;
-
-/*
- GetBLIP() - Anforderung eines bestimmten BLIP
- =========
- Input: nIdx - Nummer des angeforderten BLIP
- ( muss immer uebergeben werden )
-
- Output: rData - bereits fertig konvertierte Daten
- ( direkt als Grafik in unsere Dokumente einzusetzen )
-
- Rueckgabewert: TRUE, im Erfolgsfalls, FALSE bei Fehler
-*/
- BOOL GetBLIP( ULONG nIdx, Graphic& rData, Rectangle* pVisArea = NULL ) const;
-
-/*
- GetBLIPDirect() -Einlesen eines BLIP aus schon positioniertem Stream
- ===============
- Input: rBLIPStream -bereits korrekt positionierter Stream
- ( muss immer uebergeben werden )
-
- Output: rData -bereits fertig konvertierte Daten
- ( direkt als Grafik in unsere Dokumente einzusetzen )
-
- Rueckgabewert: TRUE, im Erfolgsfalls, FALSE bei Fehler
-*/
- BOOL GetBLIPDirect(SvStream& rBLIPStream, Graphic& rData, Rectangle* pVisArea = NULL ) const;
-
- BOOL GetShape(ULONG nId,
- SdrObject*& rpData, SvxMSDffImportData& rData);
-
-/*
- GetBLIPCount() - Abfrage der verwalteten BLIP Anzahl
- ==============
- Input: ./.
- Output: ./.
- Rueckgabewert: nBLIPCount - Anzahl der im pStData (bzw. rStCtrl) enthaltenen BLIPs
- ( sprich: Anzahl der FBSEs im Drawing Group Container )
-
- Werte: 0 - Struktur Ok, jedoch keine BLIPs vorhanden
- 1.. - Anzahl der BLIPs
- USHRT_MAX - Fehler: kein korrektes Drawing File Format
-*/
- USHORT GetBLIPCount() const{ return nBLIPCount; }
-
-/*
- ZCodecDecompressed() - Dekomprimierung eines komp. WMF oder Enhanced WMF
- ====================
- Input: rIn -bereits korrekt positionierter Stream,
- der das komprimierte Bild enthaelt
- rOut -bereits korrekt positionierter Ausgabe-Stream,
-
- bLookForEnd -Flag, ob das komp. Bild bis zum Stream-Ende reicht.
- Falls TRUE, wird jeweils geprueft, ob das gelesene noch
- zum Bild gehoert.
- Falls FALSE, wird bis zum Stream-Ende gelesen.
-
- Output: rIn -Der Stream steht hinter dem Ende des komp. Bildes.
- (es kann aber noch eine Ende-Kennung und CRC-Sum folgen)
- rOut -Der Stream enthaelt das dekomprimierte Bild.
- Der Stream wird auf den Anfang des Bildes positioniert.
- (also dorthin, wo der Stream vor der Verarbeitung stand)
-
- Rueckgabewert: TRUE, im Erfolgsfall
- FALSE bei Fehler oder Null Bytes geschrieben
-*/
-// static BOOL ZCodecDecompressed( SvStream& rIn,
-// SvStream& rOut,
-// BOOL bLookForEnd );
-//
- SdrObject* ImportObj(SvStream& rSt, void* pData,
- Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL);
-
- SdrObject* ImportGroup( const DffRecordHeader& rHd, SvStream& rSt, void* pData,
- Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL );
-
- SdrObject* ImportShape( const DffRecordHeader& rHd, SvStream& rSt, void* pData,
- Rectangle& rClientRect, const Rectangle& rGlobalChildRect, int nCalledByGroup = 0, sal_Int32* pShapeId = NULL);
-
- Rectangle GetGlobalChildAnchor( const DffRecordHeader& rHd, SvStream& rSt, Rectangle& aClientRect );
- void GetGroupAnchors( const DffRecordHeader& rHd, SvStream& rSt,
- Rectangle& rGroupClientAnchor, Rectangle& rGroupChildAnchor,
- const Rectangle& rClientRect, const Rectangle& rGlobalChildRect );
-
- inline const SvxMSDffShapeInfos* GetShapeInfos( void ) const
- {
- return pShapeInfos;
- }
-
- inline const SvxMSDffShapeOrders* GetShapeOrders( void ) const
- {
- return pShapeOrders;
- }
-
- void StoreShapeOrder(ULONG nId,
- ULONG nTxBx,
- SdrObject* pObject,
- SwFlyFrmFmt* pFly = 0,
- short nHdFtSection = 0) const;
-
- void ExchangeInShapeOrder(SdrObject* pOldObject,
- ULONG nTxBx,
- SwFlyFrmFmt* pFly,
- SdrObject* pObject) const;
-
- void RemoveFromShapeOrder( SdrObject* pObject ) const;
-
- UINT32 GetConvertFlags() const { return nSvxMSDffOLEConvFlags; }
-
- static SdrOle2Obj* CreateSdrOLEFromStorage( const String& rStorageName,
- SotStorageRef& rSrcStorage,
- const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xDestStg,
- const Graphic& rGraf,
- const Rectangle& rBoundRect,
- const Rectangle& rVisArea,
- SvStream* pDataStrrm,
- ErrCode& rError,
- UINT32 nConvertFlags,
- sal_Int64 nAspect );
-
- /* the method SolveSolver will create connections between shapes, it should be called after a page is imported.
- The SvxMSDffSolverContainer is containing necessary data data that is collected during the import of each shape
- */
- void SolveSolver( const SvxMSDffSolverContainer& rSolver );
-
- static sal_Bool SetPropValue(
- const ::com::sun::star::uno::Any& rAny,
- const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
- const String& rPropertyName,
- sal_Bool bTestPropertyAvailability = sal_False );
-
- void insertShapeId( sal_Int32 nShapeId, SdrObject* pShape );
- void removeShapeId( SdrObject* pShape );
- SdrObject* getShapeForId( sal_Int32 nShapeId );
-};
-
-struct SvxMSDffBLIPInfo
-{
- USHORT nBLIPType; // Art des BLIP: z.B. 6 fuer PNG
- ULONG nFilePos; // Offset des BLIP im Daten-Stream
- ULONG nBLIPSize; // Anzahl Bytes, die der BLIP im Stream einnimmt
- SvxMSDffBLIPInfo(USHORT nBType, ULONG nFPos, ULONG nBSize):
- nBLIPType( nBType ), nFilePos( nFPos ), nBLIPSize( nBSize ){}
-};
-
-struct SvxMSDffShapeInfo
-{
- sal_uInt32 nShapeId; // Shape Id, verwendet im PLCF SPA und im mso_fbtSp (FSP)
- ULONG nFilePos; // Offset des Shape im Kontroll-Stream fuer eventuelle
- // erneute Zugriffe auf dieses Shape
- sal_uInt32 nTxBxComp;
-
- BOOL bReplaceByFly :1; // Shape darf im Writer durch Rahmen ersetzt werden.
- BOOL bSortByShapeId :1;
- BOOL bLastBoxInChain:1;
-
- SvxMSDffShapeInfo(ULONG nFPos, sal_uInt32 nId=0, // ULONG nBIdx=0,
- USHORT nSeqId=0, USHORT nBoxId=0):
- nShapeId( nId ),
- nFilePos( nFPos ),
- nTxBxComp( (nSeqId << 16) + nBoxId )
- {
- bReplaceByFly = FALSE;
- bSortByShapeId = FALSE;
- bLastBoxInChain = TRUE;
- }
- SvxMSDffShapeInfo(SvxMSDffShapeInfo& rInfo):
- nShapeId( rInfo.nShapeId ),
- nFilePos( rInfo.nFilePos ),
- nTxBxComp( rInfo.nTxBxComp )
- {
- bReplaceByFly = rInfo.bReplaceByFly;
- bSortByShapeId = rInfo.bSortByShapeId;
- bLastBoxInChain = rInfo.bLastBoxInChain;
- }
- BOOL operator==( const SvxMSDffShapeInfo& rEntry ) const
- {
- return bSortByShapeId ? (nShapeId == rEntry.nShapeId)
- : (nTxBxComp == rEntry.nTxBxComp && this == &rEntry);
- }
- BOOL operator<( const SvxMSDffShapeInfo& rEntry ) const
- {
- return bSortByShapeId ? (nShapeId < rEntry.nShapeId)
- : (nTxBxComp < rEntry.nTxBxComp);
- }
-};
-
-struct SvxMSDffShapeOrder
-{
- ULONG nShapeId; // Shape Id, verwendet im PLCF SPA und im mso_fbtSp (FSP)
-
- ULONG nTxBxComp; // Ketten- und Boxnummer in der Text-Box-Story (bzw. Null)
-
- SwFlyFrmFmt* pFly; // Frame-Format eines statt des Sdr-Text-Objektes im
- // Writer eingefuegten Rahmens: zur Verkettung benoetigt!
-
- short nHdFtSection; // used by Writer to find out if linked frames are in the
- // same header or footer of the same section
-
- SdrObject* pObj; // Zeiger auf das Draw-Objekt (bzw. Null, falls nicht verwendet)
-
- // Vorgehensweise: im Ctor des SvxMSDffManager werden im der Shape-Order-Array
- // nur die Shape-Ids vermerkt,
- // Text-Box-Nummer und der Objekt-Pointer werden nur dann
- // gespeichert, wenn das Shape tatsaechlich importiert wird!
- SvxMSDffShapeOrder( ULONG nId ):
- nShapeId( nId ), nTxBxComp( 0 ), pFly( 0 ), nHdFtSection( 0 ), pObj( 0 ){}
-
- BOOL operator==( const SvxMSDffShapeOrder& rEntry ) const
- {
- return (nTxBxComp == rEntry.nTxBxComp);
- }
- BOOL operator<( const SvxMSDffShapeOrder& rEntry ) const
- {
- return (nTxBxComp < rEntry.nTxBxComp);
- }
-};
-
-#endif
-