summaryrefslogtreecommitdiff
path: root/sw/inc/ndole.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/inc/ndole.hxx')
-rw-r--r--sw/inc/ndole.hxx171
1 files changed, 171 insertions, 0 deletions
diff --git a/sw/inc/ndole.hxx b/sw/inc/ndole.hxx
new file mode 100644
index 000000000000..d66f387eb4f3
--- /dev/null
+++ b/sw/inc/ndole.hxx
@@ -0,0 +1,171 @@
+/* -*- 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
+ * <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;
+
+ // 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 - we know TxtNode only here!!
+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: */