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 namespace sw
172 {
173  class DocumentSettingManager;
174 }
175 
177 {
178 private:
181 public:
182  PurgeGuard(const SwDoc& rDoc);
183  ~PurgeGuard();
184 };
185 
186 #endif // _ INCLUDED_SW_INC_NDOLE_HXX
187 
188 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void SetAspect(sal_Int64 nAspect)
Definition: ndole.hxx:137
Graphic GetGraphic() const
Definition: ndnotxt.cxx:229
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:1043
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:186
Dialog to specify the properties of date form field.
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:292
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:879
svt::EmbeddedObjectRef & GetObject()
Definition: ndole.cxx:966
drawinglayer::primitive2d::Primitive2DContainer m_aPrimitive2DSequence
Definition: ndole.hxx:47
const SwOLENode * m_pOLENode
Definition: ndole.hxx:38
::sw::DocumentSettingManager & m_rManager
Definition: ndole.hxx:179
struct _xmlTextWriter * xmlTextWriterPtr
Holder for local data for a parallel-executed task to load a chart model.
Definition: ndole.cxx:679
OUString m_aName
Definition: ndole.hxx:44
OUString maLinkURL
Definition: ndole.hxx:94
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:75
SwNodeType m_nNodeType
Definition: node.hxx:84
virtual bool SavePersistentData()
Definition: ndnotxt.cxx:80
void SetChartTableName(const OUString &rNm)
Definition: ndole.hxx:153
virtual SwContentNode * MakeCopy(SwDoc &, const SwNodeIndex &, bool bNewFrames) const =0
~PurgeGuard()
Definition: ndole.cxx:991
void SetViewAspect(sal_Int64 nAspect)
bool m_bOrigPurgeOle
Definition: ndole.hxx:180
PurgeGuard(const SwDoc &rDoc)
Definition: ndole.cxx:984
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
basegfx::B2DRange m_aRange
Definition: ndole.hxx:48
sal_Int64 GetViewAspect() const
OUString GetDescription() const
Remove OLE-object from "memory".
Definition: ndole.hxx:141