/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * 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 * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef _NDOLE_HXX #define _NDOLE_HXX #include #include class SwGrfFmtColl; class SwDoc; class SwOLENode; class SwOLEListener_Impl; class SwEmbedObjectLink; class SW_DLLPUBLIC SwOLEObj { friend class SwOLENode; const SwOLENode* pOLENd; SwOLEListener_Impl* pListener; /** Either ref or name are known. If only name is known, ref is obtained on demand by GetOleRef() from Sfx. */ svt::EmbeddedObjectRef xOLERef; String aName; SwOLEObj( const SwOLEObj& rObj ); /// Not allowed. SwOLEObj(); void SetNode( SwOLENode* pNode ); public: SwOLEObj( const svt::EmbeddedObjectRef& pObj ); SwOLEObj( const String &rName, sal_Int64 nAspect ); ~SwOLEObj(); sal_Bool UnloadObject(); static sal_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 const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > GetOleRef(); svt::EmbeddedObjectRef& GetObject(); const String& GetCurrentPersistName() const { return aName; } sal_Bool IsOleRef() const; ///< To avoid unneccessary loading of object. #endif }; // SwOLENode class SW_DLLPUBLIC SwOLENode: public SwNoTxtNode { friend class SwNodes; mutable SwOLEObj aOLEObj; Graphic* pGraphic; String sChartTblName; ///< with chart objects: name of referenced table. sal_Bool bOLESizeInvalid; /**< Should be considered at SwDoc::PrtOLENotify (e.g. copied). Is not 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 has a private Copy-Ctor. We need one too: SwOLENode( const SwOLENode & ); using SwNoTxtNode::GetGraphic; public: const SwOLEObj& GetOLEObj() const { return aOLEObj; } SwOLEObj& GetOLEObj() { return aOLEObj; } ~SwOLENode(); virtual SwCntntNode *SplitCntntNode( const SwPosition & ); /// Is in ndcopy.cxx. virtual SwCntntNode* MakeCopy( SwDoc*, const SwNodeIndex& ) const; virtual Size GetTwipSize() const; Graphic* GetGraphic(); void GetNewReplacement(); virtual sal_Bool SavePersistentData(); virtual sal_Bool RestorePersistentData(); sal_Bool IsInGlobalDocSection() const; sal_Bool IsOLEObjectDeleted() const; sal_Bool IsOLESizeInvalid() const { return bOLESizeInvalid; } void SetOLESizeInvalid( sal_Bool b ){ bOLESizeInvalid = b; } sal_Int64 GetAspect() const { return aOLEObj.GetObject().GetViewAspect(); } void SetAspect( sal_Int64 nAspect) { aOLEObj.GetObject().SetViewAspect( nAspect ); } /** Remove OLE-object from "memory". inline void Unload() { aOLEObj.Unload(); } */ String GetDescription() const { return aOLEObj.GetDescription(); } sal_Bool UpdateLinkURL_Impl(); void BreakFileLink_Impl(); void DisconnectFileLink_Impl(); void CheckFileLink_Impl(); // #i99665# bool IsChart() const; #ifndef _FESHVIEW_ONLY_INLINE_NEEDED const String& GetChartTblName() const { return sChartTblName; } void SetChartTblName( const String& rNm ) { sChartTblName = rNm; } #endif }; /// Inline methods from Node.hxx 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 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */