diff options
Diffstat (limited to 'sw/inc/ndole.hxx')
-rw-r--r-- | sw/inc/ndole.hxx | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/sw/inc/ndole.hxx b/sw/inc/ndole.hxx new file mode 100644 index 000000000000..49e0e724f10c --- /dev/null +++ b/sw/inc/ndole.hxx @@ -0,0 +1,174 @@ +/************************************************************************* + * + * 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: ndole.hxx,v $ + * $Revision: 1.19 $ + * + * 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 _NDOLE_HXX +#define _NDOLE_HXX + +#include <ndnotxt.hxx> + +#include <svtools/embedhlp.hxx> + +class SwGrfFmtColl; +class SwDoc; +class SwOLENode; + +class SwOLEListener_Impl; +class SwEmbedObjectLink; +class SW_DLLPUBLIC SwOLEObj +{ + friend class SwOLENode; + + const SwOLENode* pOLENd; + SwOLEListener_Impl* pListener; + + //Entweder Ref oder Name sind bekannt, wenn nur der Name bekannt ist, wird + //dir Ref bei Anforderung durch GetOleRef() vom Sfx besorgt. + svt::EmbeddedObjectRef xOLERef; + String aName; + + SwOLEObj( const SwOLEObj& rObj ); //nicht erlaubt. + SwOLEObj(); + + void SetNode( SwOLENode* pNode ); + +public: + SwOLEObj( const svt::EmbeddedObjectRef& pObj ); + SwOLEObj( const String &rName, sal_Int64 nAspect ); + ~SwOLEObj(); + + BOOL UnloadObject(); + static BOOL UnloadObject( ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject > xObj, + const SwDoc* pDoc, + sal_Int64 nAspect ); + + String GetDescription(); + +#ifndef _FESHVIEW_ONLY_INLINE_NEEDED + com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > GetOleRef(); + svt::EmbeddedObjectRef& GetObject(); + const String& GetCurrentPersistName() const { return aName; } + BOOL IsOleRef() const; //Damit das Objekt nicht unnoetig geladen werden muss. +#endif +}; + + +// -------------------- +// SwOLENode +// -------------------- + +class SW_DLLPUBLIC SwOLENode: public SwNoTxtNode +{ + friend class SwNodes; + mutable SwOLEObj aOLEObj; + Graphic* pGraphic; + String sChartTblName; // bei Chart Objecten: Name der ref. Tabelle + BOOL bOLESizeInvalid; //Soll beim SwDoc::PrtOLENotify beruecksichtig + //werden (zum Beispiel kopiert). Ist nicht + //Persistent. + + SwEmbedObjectLink* mpObjectLink; + String maLinkURL; + + SwOLENode( const SwNodeIndex &rWhere, + const svt::EmbeddedObjectRef&, + SwGrfFmtColl *pGrfColl, + SwAttrSet* pAutoAttr = 0 ); + + SwOLENode( const SwNodeIndex &rWhere, + const String &rName, + sal_Int64 nAspect, + SwGrfFmtColl *pGrfColl, + SwAttrSet* pAutoAttr = 0 ); + + // aOLEObj besitzt einen privaten Copy-CTOR, wir brauchen auch einen: + SwOLENode( const SwOLENode & ); + + using SwNoTxtNode::GetGraphic; + +public: + const SwOLEObj& GetOLEObj() const { return aOLEObj; } + SwOLEObj& GetOLEObj() { return aOLEObj; } + ~SwOLENode(); + + virtual SwCntntNode *SplitCntntNode( const SwPosition & ); + // steht in ndcopy.cxx + virtual SwCntntNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const; + + virtual Size GetTwipSize() const; + + Graphic* GetGraphic(); + + Graphic* GetHCGraphic(); // tries to retrieve HighContrast representation if possible + void GetNewReplacement(); + + virtual BOOL SavePersistentData(); + virtual BOOL RestorePersistentData(); + + BOOL IsInGlobalDocSection() const; + BOOL IsOLEObjectDeleted() const; + + BOOL IsOLESizeInvalid() const { return bOLESizeInvalid; } + void SetOLESizeInvalid( BOOL b ){ bOLESizeInvalid = b; } + + sal_Int64 GetAspect() const { return aOLEObj.GetObject().GetViewAspect(); } + void SetAspect( sal_Int64 nAspect) { aOLEObj.GetObject().SetViewAspect( nAspect ); } + + // OLE-Object aus dem "Speicher" entfernen + // inline void Unload() { aOLEObj.Unload(); } + String GetDescription() const { return aOLEObj.GetDescription(); } + + sal_Bool UpdateLinkURL_Impl(); + void BreakFileLink_Impl(); + void DisconnectFileLink_Impl(); + + void CheckFileLink_Impl(); + + // --> OD 2009-03-05 #i99665# + bool IsChart() const; + // <-- + +#ifndef _FESHVIEW_ONLY_INLINE_NEEDED + const String& GetChartTblName() const { return sChartTblName; } + void SetChartTblName( const String& rNm ) { sChartTblName = rNm; } +#endif +}; + + +// Inline Metoden aus Node.hxx - erst hier ist der TxtNode bekannt !! +inline SwOLENode *SwNode::GetOLENode() +{ + return ND_OLENODE == nNodeType ? (SwOLENode*)this : 0; +} +inline const SwOLENode *SwNode::GetOLENode() const +{ + return ND_OLENODE == nNodeType ? (const SwOLENode*)this : 0; +} + +#endif // _NDOLE_HXX + |