LibreOffice Module sw (master)  1
ndole.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 #ifndef INCLUDED_SW_INC_NDOLE_HXX
20 #define INCLUDED_SW_INC_NDOLE_HXX
21 
22 #include "ndnotxt.hxx"
23 #include <svtools/embedhlp.hxx>
25 #include <rtl/ref.hxx>
26 
27 class SwGrfFormatColl;
28 class SwDoc;
29 class SwOLENode;
30 class SwOLEListener_Impl;
31 class SwEmbedObjectLink;
32 class DeflateData;
33 
35 {
36  friend class SwOLENode;
37 
40 
44  OUString m_aName;
45 
46  // eventually buffered data if it is a chart OLE
49  std::unique_ptr<DeflateData> m_pDeflateData;
50 
51  SwOLEObj( const SwOLEObj& rObj ) = delete;
52 
53  void SetNode( SwOLENode* pNode );
54 
55 public:
56  SwOLEObj( const svt::EmbeddedObjectRef& pObj );
57  SwOLEObj( const OUString &rName, sal_Int64 nAspect );
58  ~SwOLEObj() COVERITY_NOEXCEPT_FALSE;
59 
60  bool UnloadObject();
61  static bool UnloadObject( css::uno::Reference< css::embed::XEmbeddedObject > const & xObj,
62  const SwDoc* pDoc,
63  sal_Int64 nAspect );
64 
65  OUString GetDescription();
66 
67  css::uno::Reference < css::embed::XEmbeddedObject > const & GetOleRef();
68  svt::EmbeddedObjectRef& GetObject();
69  const OUString& GetCurrentPersistName() const { return m_aName; }
70  OUString GetStyleString();
71  bool IsOleRef() const;
72 
73  // try to get OLE visualization in form of a Primitive2DSequence
74  // and the corresponding B2DRange. This data may be locally buffered
75  drawinglayer::primitive2d::Primitive2DContainer const & tryToGetChartContentAsPrimitive2DSequence(
76  basegfx::B2DRange& rRange,
77  bool bSynchron);
78  void resetBufferedData();
79 
80  void dumpAsXml(xmlTextWriterPtr pWriter) const;
81 };
82 
83 // SwOLENode
84 
86 {
87  friend class SwNodes;
88  mutable SwOLEObj maOLEObj;
89  OUString msChartTableName;
94  OUString maLinkURL;
95 
96  SwOLENode( const SwNodeIndex &rWhere,
98  SwGrfFormatColl *pGrfColl,
99  SwAttrSet const * pAutoAttr );
100 
101  SwOLENode( const SwNodeIndex &rWhere,
102  const OUString &rName,
103  sal_Int64 nAspect,
104  SwGrfFormatColl *pGrfColl,
105  SwAttrSet const * pAutoAttr );
106 
107  SwOLENode( const SwOLENode & ) = delete;
108 
110 
111 public:
112  const SwOLEObj& GetOLEObj() const { return maOLEObj; }
113  SwOLEObj& GetOLEObj() { return maOLEObj; }
114  virtual ~SwOLENode() override;
115 
117  virtual SwContentNode* MakeCopy(SwDoc*, const SwNodeIndex&, bool bNewFrames) const override;
118 
119  virtual Size GetTwipSize() const override;
120 
121  const Graphic* GetGraphic();
122 
123  void GetNewReplacement();
124 
125  virtual bool SavePersistentData() override;
126  virtual bool RestorePersistentData() override;
127 
128  virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
129 
130  bool IsInGlobalDocSection() const;
131  bool IsOLEObjectDeleted() const;
132 
133  bool IsOLESizeInvalid() const { return mbOLESizeInvalid; }
134  void SetOLESizeInvalid( bool b ){ mbOLESizeInvalid = b; }
135 
136  sal_Int64 GetAspect() const { return maOLEObj.GetObject().GetViewAspect(); }
137  void SetAspect( sal_Int64 nAspect) { maOLEObj.GetObject().SetViewAspect( nAspect ); }
138 
141  OUString GetDescription() const { return maOLEObj.GetDescription(); }
142 
143  bool UpdateLinkURL_Impl();
144  void BreakFileLink_Impl();
145  void DisconnectFileLink_Impl();
146 
147  void CheckFileLink_Impl();
148 
149  // #i99665#
150  bool IsChart() const;
151 
152  const OUString& GetChartTableName() const { return msChartTableName; }
153  void SetChartTableName( const OUString& rNm ) { msChartTableName = rNm; }
154 
155 
156  // react on visual change (invalidate)
157  void SetChanged();
158 };
159 
162 {
163  return SwNodeType::Ole == m_nNodeType ? static_cast<SwOLENode*>(this) : nullptr;
164 }
165 
166 inline const SwOLENode *SwNode::GetOLENode() const
167 {
168  return SwNodeType::Ole == m_nNodeType ? static_cast<const SwOLENode*>(this) : nullptr;
169 }
170 
171 #endif // _ INCLUDED_SW_INC_NDOLE_HXX
172 
173 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void SetAspect(sal_Int64 nAspect)
Definition: ndole.hxx:137
Graphic GetGraphic() const
Definition: ndnotxt.cxx:228
sal_Int64 GetAspect() const
Definition: ndole.hxx:136
SwOLEObj maOLEObj
Definition: ndole.hxx:88
SwOLENode * GetOLENode()
Inline methods from Node.hxx.
Definition: ndole.hxx:161
const SwOLEObj & GetOLEObj() const
Definition: ndole.hxx:112
OUString msChartTableName
with chart objects: name of referenced table.
Definition: ndole.hxx:89
OUString GetDescription()
Definition: ndole.cxx:1028
virtual Size GetTwipSize() const =0
const OUString & GetChartTableName() const
Definition: ndole.hxx:152
std::unique_ptr< DeflateData > m_pDeflateData
Definition: ndole.hxx:49
rtl::Reference< SwOLEListener_Impl > m_xListener
Definition: ndole.hxx:39
Definition: doc.hxx:185
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override
Dumps the node structure to the given destination (file nodes.xml in the current directory by default...
Definition: ndole.cxx:291
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const
Dumps the node structure to the given destination (file nodes.xml in the current directory by default...
Definition: node.cxx:870
svt::EmbeddedObjectRef & GetObject()
Definition: ndole.cxx:965
drawinglayer::primitive2d::Primitive2DContainer m_aPrimitive2DSequence
Definition: ndole.hxx:47
const SwOLENode * m_pOLENode
Definition: ndole.hxx:38
struct _xmlTextWriter * xmlTextWriterPtr
Holder for local data for a parallel-executed task to load a chart model.
Definition: ndole.cxx:678
OUString m_aName
Definition: ndole.hxx:44
OUString maLinkURL
Definition: ndole.hxx:94
virtual SwContentNode * MakeCopy(SwDoc *, const SwNodeIndex &, bool bNewFrames) const =0
Marks a node in the document model.
Definition: ndindex.hxx:31
SwEmbedObjectLink * mpObjectLink
Definition: ndole.hxx:93
#define SW_DLLPUBLIC
Definition: swdllapi.h:28
virtual bool RestorePersistentData()
Dummies for loading/saving of persistent data when working with graphics and OLE objects.
Definition: ndnotxt.cxx:74
virtual bool SavePersistentData()
Definition: ndnotxt.cxx:79
void SetChartTableName(const OUString &rNm)
Definition: ndole.hxx:153
void SetViewAspect(sal_Int64 nAspect)
svt::EmbeddedObjectRef m_xOLERef
Either ref or name are known.
Definition: ndole.hxx:43
bool mbOLESizeInvalid
Should be considered at SwDoc::PrtOLENotify (e.g.
Definition: ndole.hxx:90
void SetOLESizeInvalid(bool b)
Definition: ndole.hxx:134
bool IsOLESizeInvalid() const
Definition: ndole.hxx:133
SwOLEObj & GetOLEObj()
Definition: ndole.hxx:113
SwNodeType const m_nNodeType
Definition: node.hxx:84
basegfx::B2DRange m_aRange
Definition: ndole.hxx:48
sal_Int64 GetViewAspect() const
OUString GetDescription() const
Remove OLE-object from "memory".
Definition: ndole.hxx:141