/src/libreoffice/include/oox/drawingml/shape.hxx
Line | Count | Source |
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 | | |
20 | | #pragma once |
21 | | |
22 | | #include <map> |
23 | | #include <memory> |
24 | | #include <string_view> |
25 | | #include <vector> |
26 | | |
27 | | #include <com/sun/star/awt/Point.hpp> |
28 | | #include <com/sun/star/awt/Size.hpp> |
29 | | #include <com/sun/star/beans/PropertyValue.hpp> |
30 | | #include <com/sun/star/uno/Reference.hxx> |
31 | | #include <com/sun/star/uno/Sequence.hxx> |
32 | | |
33 | | #include <oox/core/xmlfilterbase.hxx> |
34 | | #include <oox/dllapi.h> |
35 | | #include <oox/drawingml/color.hxx> |
36 | | #include <oox/drawingml/connectorshapecontext.hxx> |
37 | | #include <oox/drawingml/drawingmltypes.hxx> |
38 | | #include <oox/helper/propertymap.hxx> |
39 | | #include <rtl/ustring.hxx> |
40 | | #include <sal/types.h> |
41 | | |
42 | | namespace basegfx { class B2DHomMatrix; } |
43 | | |
44 | | namespace com::sun::star { |
45 | | namespace awt { struct Rectangle; } |
46 | | namespace drawing { class XShape; } |
47 | | namespace drawing { class XShapes; } |
48 | | namespace uno { class Any; } |
49 | | } |
50 | | |
51 | | namespace oox::core { |
52 | | class XmlFilterBase; |
53 | | } |
54 | | |
55 | | namespace oox::vml { |
56 | | struct OleObjectInfo; |
57 | | } |
58 | | |
59 | | namespace oox::drawingml { |
60 | | |
61 | | class Theme; |
62 | | struct EffectProperties; |
63 | | struct FillProperties; |
64 | | struct GraphicProperties; |
65 | | struct LineProperties; |
66 | | struct Shape3DProperties; |
67 | | class DiagramHelper_oox; |
68 | | class CustomShapeProperties; |
69 | | typedef std::shared_ptr< CustomShapeProperties > CustomShapePropertiesPtr; |
70 | | |
71 | | typedef ::std::map< OUString, ShapePtr > ShapeIdMap; |
72 | | |
73 | | typedef std::vector<ConnectorShapeProperties> ConnectorShapePropertiesList; |
74 | | |
75 | | struct ShapeStyleRef |
76 | | { |
77 | | Color maPhClr; |
78 | | sal_Int32 mnThemedIdx; |
79 | 50.4k | ShapeStyleRef() : mnThemedIdx(0) {} |
80 | | }; |
81 | | |
82 | | typedef ::std::map< sal_Int32, ShapeStyleRef > ShapeStyleRefMap; |
83 | | |
84 | | /** Additional information for a chart embedded in a drawing shape. */ |
85 | | struct ChartShapeInfo |
86 | | { |
87 | | OUString maFragmentPath; ///< Path to related XML stream, e.g. for charts. |
88 | | bool mbEmbedShapes; ///< True = load chart shapes into chart, false = load into parent drawpage. |
89 | | |
90 | 425 | explicit ChartShapeInfo( bool bEmbedShapes ) : mbEmbedShapes( bEmbedShapes ) {} |
91 | | }; |
92 | | |
93 | | /// Attributes for a linked textbox. |
94 | | struct LinkedTxbxAttr |
95 | | { |
96 | | sal_Int32 id; |
97 | | sal_Int32 seq; |
98 | 175k | LinkedTxbxAttr(): id(0),seq(0){}; |
99 | | }; |
100 | | |
101 | | class SmartArtDiagram; |
102 | | |
103 | | class OOX_DLLPUBLIC Shape |
104 | | : public std::enable_shared_from_this< Shape > |
105 | | { |
106 | | public: |
107 | | |
108 | | Shape(); |
109 | | explicit Shape( const OUString& rServiceType, bool bDefaultHeight = true ); |
110 | | SAL_DLLPRIVATE explicit Shape( const ShapePtr& pSourceShape ); |
111 | 0 | Shape(Shape const &) = default; |
112 | | virtual ~Shape(); |
113 | | Shape & operator =(Shape const &) = default; |
114 | | |
115 | 932 | const OUString& getServiceName() const { return msServiceName; } |
116 | 196 | void setServiceName( const OUString& rServiceName ) { msServiceName = rServiceName; } |
117 | | |
118 | 66.0k | const OUString& getDiagramDataModelID() const { return msDiagramDataModelID; } |
119 | 90.7k | void setDiagramDataModelID( const OUString& rDiagramDataModelID ) { msDiagramDataModelID = rDiagramDataModelID; } |
120 | | |
121 | 263k | PropertyMap& getShapeProperties(){ return maShapeProperties; } |
122 | | |
123 | 15.2k | LineProperties& getLineProperties() { return *mpLinePropertiesPtr; } |
124 | 86.9k | const LineProperties& getLineProperties() const { return *mpLinePropertiesPtr; } |
125 | | |
126 | 253k | FillProperties& getFillProperties() { return *mpFillPropertiesPtr; } |
127 | 164k | const FillProperties& getFillProperties() const { return *mpFillPropertiesPtr; } |
128 | | |
129 | 3.54k | GraphicProperties& getGraphicProperties() { return *mpGraphicPropertiesPtr; } |
130 | 0 | const GraphicProperties& getGraphicProperties() const { return *mpGraphicPropertiesPtr; } |
131 | | |
132 | 218k | CustomShapePropertiesPtr& getCustomShapeProperties(){ return mpCustomShapePropertiesPtr; } |
133 | | |
134 | 816 | OUString& getConnectorName() { return msConnectorName; } |
135 | 0 | std::vector<OUString>& getConnectorAdjustments() { return maConnectorAdjustmentList; }; |
136 | 2.29k | ConnectorShapePropertiesList& getConnectorShapeProperties() { return maConnectorShapePropertiesList; } |
137 | 2.02k | void setConnectorShape(bool bConnector) { mbConnector = bConnector; } |
138 | 56.5k | bool isConnectorShape() const { return mbConnector; } |
139 | | |
140 | 195k | Shape3DProperties& get3DProperties() { return *mp3DPropertiesPtr; } |
141 | 0 | const Shape3DProperties& get3DProperties() const { return *mp3DPropertiesPtr; } |
142 | | |
143 | | SAL_DLLPRIVATE table::TablePropertiesPtr const & getTableProperties(); |
144 | | |
145 | 90.9k | EffectProperties& getEffectProperties() const { return *mpEffectPropertiesPtr; } |
146 | | |
147 | 21.8k | void setChildPosition( css::awt::Point nPosition ){ maChPosition = nPosition; } |
148 | 22.2k | void setChildSize( css::awt::Size aSize ){ maChSize = aSize; } |
149 | | |
150 | 132k | void setPosition( css::awt::Point nPosition ){ maPosition = nPosition; } |
151 | 991 | const css::awt::Point& getPosition() const { return maPosition; } |
152 | | |
153 | 131k | void setSize( css::awt::Size aSize ){ maSize = aSize; } |
154 | 48.3k | const css::awt::Size& getSize() const { return maSize; } |
155 | | |
156 | 127k | void setRotation( sal_Int32 nRotation ) { mnRotation = nRotation; } |
157 | 222k | sal_Int32 getRotation() const { return mnRotation; } |
158 | 75.0k | sal_Int32 getDiagramRotation() const { return mnDiagramRotation; } |
159 | 2.25k | void setDiagramRotation( sal_Int32 nRotation ) { mnDiagramRotation = nRotation; } |
160 | 105k | void setFlip( bool bFlipH, bool bFlipV ) { mbFlipH = bFlipH; mbFlipV = bFlipV; } |
161 | 21.7k | void setFlipH(bool bFlipH) { mbFlipH = bFlipH;} |
162 | 21.7k | void setFlipV(bool bFlipV) { mbFlipV = bFlipV;} |
163 | 196k | bool getFlipH() const { return mbFlipH; } |
164 | 195k | bool getFlipV() const { return mbFlipV; } |
165 | 115k | void addChild( const ShapePtr& rChildPtr ) { maChildren.push_back( rChildPtr ); } |
166 | 766k | std::vector< ShapePtr >& getChildren() { return maChildren; } |
167 | | |
168 | 210k | void setName( const OUString& rName ) { msName = rName; } |
169 | 21.7k | const OUString& getName( ) const { return msName; } |
170 | 588 | void setInternalName( const OUString& rInternalName ) { msInternalName = rInternalName; } |
171 | 3.80k | const OUString& getInternalName() const { return msInternalName; } |
172 | 120k | void setId( const OUString& rId ) { msId = rId; } |
173 | 207k | const OUString& getId() const { return msId; } |
174 | 96.4k | void setDescription( const OUString& rDescr ) { msDescription = rDescr; } |
175 | 0 | void setDecorative(bool const isDecorative) { m_isDecorative = isDecorative; } |
176 | 0 | void setMacro(const OUString& rMacro) { msMacro = rMacro; } |
177 | 0 | void setMacroExtUrl(const OUString& rUrl) { msMacroExtUrl = rUrl; } |
178 | 2.16k | void setTextLinkAttr(const OUString& rTextLink) { msTextLink = rTextLink; } |
179 | 2.16k | void setFLocksText(bool bFLocksText) { mbFLocksText = bFLocksText; } |
180 | 2.16k | void setFPublished(bool bFPublished) { mbFPublished = bFPublished; } |
181 | 96.4k | void setTitle(const OUString& rTitle) { msTitle = rTitle; } |
182 | 86.9k | bool getHidden() const { return mbHidden; } |
183 | 228k | void setHidden( bool bHidden ) { mbHidden = bHidden; } |
184 | 64.0k | bool getHiddenMasterShape() const { return mbHiddenMasterShape; } |
185 | 0 | void setHiddenMasterShape( bool bHiddenMasterShape ) { mbHiddenMasterShape = bHiddenMasterShape; } |
186 | 86.9k | bool getLocked() const { return mbLocked; } |
187 | 21.7k | void setLocked( bool bLocked ) { mbLocked = bLocked; } |
188 | 149k | void setSubType( sal_Int32 nSubType ) { mnSubType = nSubType; } |
189 | 399k | sal_Int32 getSubType() const { return mnSubType; } |
190 | 69.2k | void setSubTypeIndex( sal_Int32 nSubTypeIndex ) { moSubTypeIndex = nSubTypeIndex; } |
191 | 733k | const std::optional< sal_Int32 >& getSubTypeIndex() const { return moSubTypeIndex; } |
192 | | |
193 | 85.6k | bool getIsTextBox() const { return mbTextBox; } |
194 | | |
195 | | // setDefaults has to be called if styles are imported (OfficeXML is not storing properties having the default value) |
196 | | SAL_DLLPRIVATE void setDefaults(bool bHeight); |
197 | | |
198 | | SAL_DLLPRIVATE ::oox::vml::OleObjectInfo& setOleObjectType(); |
199 | | SAL_DLLPRIVATE ChartShapeInfo& setChartType( bool bEmbedShapes ); |
200 | | SAL_DLLPRIVATE void setDiagramType(); |
201 | | SAL_DLLPRIVATE void setTableType(); |
202 | | |
203 | | SAL_DLLPRIVATE void setTextBody(const TextBodyPtr & pTextBody); |
204 | 1.28M | const TextBodyPtr& getTextBody() const { return mpTextBody;} |
205 | | SAL_DLLPRIVATE void setMasterTextListStyle( const TextListStylePtr& pMasterTextListStyle ); |
206 | 820 | const TextListStylePtr& getMasterTextListStyle() const { return mpMasterTextListStyle; } |
207 | | |
208 | 15.6k | SAL_DLLPRIVATE ShapeStyleRefMap& getShapeStyleRefs() { return maShapeStyleRefs; } |
209 | 0 | const ShapeStyleRefMap& getShapeStyleRefs() const { return maShapeStyleRefs; } |
210 | | const ShapeStyleRef* getShapeStyleRef( sal_Int32 nRefType ) const; |
211 | 13 | bool hasShapeStyleRefs() const { return !maShapeStyleRefs.empty(); } |
212 | | |
213 | | // addShape is creating and inserting the corresponding XShape. |
214 | | void addShape( |
215 | | ::oox::core::XmlFilterBase& rFilterBase, |
216 | | const Theme* pTheme, |
217 | | const css::uno::Reference< css::drawing::XShapes >& rxShapes, |
218 | | const basegfx::B2DHomMatrix& aTransformation, |
219 | | const FillProperties& rShapeOrParentShapeFillProps, |
220 | | ShapeIdMap* pShapeMap = nullptr, |
221 | | const oox::drawingml::ShapePtr& pParentGroupShape = nullptr); |
222 | | |
223 | | const css::uno::Reference< css::drawing::XShape > & |
224 | 6.78k | getXShape() const { return mxShape; } |
225 | | |
226 | | SAL_DLLPRIVATE void applyShapeReference( const Shape& rReferencedShape, bool bUseText = true ); |
227 | | const ::std::vector<OUString>& |
228 | 676 | getExtDrawings() const { return maExtDrawings; } |
229 | 140 | void addExtDrawingRelId( const OUString &rRelId ) { maExtDrawings.push_back( rRelId ); } |
230 | | // Set font color only for extdrawings. |
231 | 0 | void setFontRefColorForNodes(const Color& rColor) { maFontRefColorForNodes = rColor; } |
232 | 4.25k | const Color& getFontRefColorForNodes() const { return maFontRefColorForNodes; } |
233 | | SAL_DLLPRIVATE void setLockedCanvas(bool bLockedCanvas); |
234 | 66.7k | bool getLockedCanvas() const { return mbLockedCanvas;} |
235 | | SAL_DLLPRIVATE void setWordprocessingCanvas(bool bWordprocessingCanvas); |
236 | 77.3k | bool isInWordprocessingCanvas() const {return mbWordprocessingCanvas;} |
237 | | SAL_DLLPRIVATE void setWPGChild(bool bWPG); |
238 | 10.3k | bool isWPGChild() const { return mbWPGChild;} |
239 | | SAL_DLLPRIVATE void setWps(bool bWps); |
240 | 268k | bool getWps() const { return mbWps;} |
241 | | SAL_DLLPRIVATE void setTextBox(bool bTextBox); |
242 | | |
243 | | // access to DiagramHelper |
244 | 4.59k | DiagramHelper_oox* getDiagramHelper() const { return mpDiagramHelper; } |
245 | | SAL_DLLPRIVATE css::uno::Sequence< css::uno::Sequence< css::uno::Any > >resolveRelationshipsOfTypeFromOfficeDoc( |
246 | | core::XmlFilterBase& rFilter, const OUString& sFragment, std::u16string_view sType ); |
247 | 0 | void setLinkedTxbxAttributes(const LinkedTxbxAttr& rhs){ maLinkedTxbxAttr = rhs; }; |
248 | 0 | void setTxbxHasLinkedTxtBox( const bool rhs){ mbHasLinkedTxbx = rhs; }; |
249 | 0 | const LinkedTxbxAttr& getLinkedTxbxAttributes() const { return maLinkedTxbxAttr; }; |
250 | 64.5k | bool isLinkedTxbx() const { return mbHasLinkedTxbx; }; |
251 | 0 | void setCustomPrompt( bool bValue ) { mbHasCustomPrompt = bValue; } |
252 | 108k | bool getCustomPrompt() const { return mbHasCustomPrompt; } |
253 | | |
254 | 432 | void setZOrder(sal_Int32 nZOrder) { mnZOrder = nZOrder; } |
255 | | |
256 | 554 | sal_Int32 getZOrder() const { return mnZOrder; } |
257 | | |
258 | 2.25k | void setZOrderOff(sal_Int32 nZOrderOff) { mnZOrderOff = nZOrderOff; } |
259 | | |
260 | 432 | sal_Int32 getZOrderOff() const { return mnZOrderOff; } |
261 | | |
262 | 402 | void setDataNodeType(sal_Int32 nDataNodeType) { mnDataNodeType = nDataNodeType; } |
263 | | |
264 | 0 | sal_Int32 getDataNodeType() const { return mnDataNodeType; } |
265 | | |
266 | 588 | void setAspectRatio(double fAspectRatio) { mfAspectRatio = fAspectRatio; } |
267 | | |
268 | 0 | double getAspectRatio() const { return mfAspectRatio; } |
269 | | |
270 | 588 | void setVerticalShapesCount(sal_Int32 nVerticalShapesCount) { mnVerticalShapesCount = nVerticalShapesCount; } |
271 | 530 | sal_Int32 getVerticalShapesCount() const { return mnVerticalShapesCount; } |
272 | | |
273 | | /// Changes reference semantics to value semantics for fill properties. |
274 | | SAL_DLLPRIVATE void cloneFillProperties(); |
275 | | |
276 | | void keepDiagramDrawing(::oox::core::XmlFilterBase& rFilterBase, const OUString& rFragmentPath); |
277 | | |
278 | | // Allows preparation of a local Diagram helper && propagate an eventually |
279 | | // existing one to the data holder object later |
280 | | SAL_DLLPRIVATE void prepareDiagramHelper( |
281 | | const std::shared_ptr< SmartArtDiagram >& rDiagramPtr, |
282 | | const std::shared_ptr<::oox::drawingml::Theme>& rTheme); |
283 | | SAL_DLLPRIVATE void propagateDiagramHelper(); |
284 | | |
285 | | // for Writer it is necessary to migrate an existing helper to a new Shape |
286 | | SAL_DLLPRIVATE void migrateDiagramHelperToNewShape(const ShapePtr& pTarget); |
287 | | |
288 | | protected: |
289 | | |
290 | | enum FrameType |
291 | | { |
292 | | FRAMETYPE_GENERIC, ///< Generic shape, no special type. |
293 | | FRAMETYPE_OLEOBJECT, ///< OLE object embedded in a shape. |
294 | | FRAMETYPE_CHART, ///< Chart embedded in a shape. |
295 | | FRAMETYPE_DIAGRAM, ///< Complex diagram drawing shape. |
296 | | FRAMETYPE_TABLE ///< A table embedded in a shape. |
297 | | }; |
298 | | |
299 | | SAL_DLLPRIVATE css::uno::Reference< css::drawing::XShape > const & |
300 | | createAndInsert( |
301 | | ::oox::core::XmlFilterBase& rFilterBase, |
302 | | const OUString& rServiceName, |
303 | | const Theme* pTheme, |
304 | | const css::uno::Reference< css::drawing::XShapes >& rxShapes, |
305 | | bool bClearText, |
306 | | const oox::drawingml::ShapePtr& pPlaceholder, |
307 | | basegfx::B2DHomMatrix& aTransformation, |
308 | | const FillProperties& rShapeOrParentShapeFillProps, |
309 | | const oox::drawingml::ShapePtr& pParentGroupShape = nullptr |
310 | | ); |
311 | | |
312 | | SAL_DLLPRIVATE void addChildren( |
313 | | ::oox::core::XmlFilterBase& rFilterBase, |
314 | | Shape& rMaster, |
315 | | const Theme* pTheme, |
316 | | const css::uno::Reference< css::drawing::XShapes >& rxShapes, |
317 | | ShapeIdMap* pShapeMap, |
318 | | const basegfx::B2DHomMatrix& aTransformation ); |
319 | | |
320 | | SAL_DLLPRIVATE void convertSmartArtToMetafile( ::oox::core::XmlFilterBase const& rFilterBase ); |
321 | | |
322 | | SAL_DLLPRIVATE css::uno::Reference< css::drawing::XShape > |
323 | | renderDiagramToGraphic( ::oox::core::XmlFilterBase const & rFilterBase ); |
324 | | |
325 | | SAL_DLLPRIVATE OUString finalizeServiceName( |
326 | | ::oox::core::XmlFilterBase& rFilter, |
327 | | const OUString& rServiceName, |
328 | | const css::awt::Rectangle& rShapeRect ); |
329 | | |
330 | | virtual void finalizeXShape( |
331 | | ::oox::core::XmlFilterBase& rFilter, |
332 | | const css::uno::Reference< css::drawing::XShapes >& rxShapes ); |
333 | | |
334 | | SAL_DLLPRIVATE void putPropertyToGrabBag( |
335 | | const OUString& sPropertyName, const css::uno::Any& aPropertyValue ); |
336 | | SAL_DLLPRIVATE void putPropertyToGrabBag( |
337 | | const css::beans::PropertyValue& pProperty ); |
338 | | SAL_DLLPRIVATE void putPropertiesToGrabBag( |
339 | | const css::uno::Sequence< css::beans::PropertyValue >& aProperties ); |
340 | | |
341 | | SAL_DLLPRIVATE FillProperties getActualFillProperties(const Theme* pTheme, const FillProperties* pParentShapeFillProps) const; |
342 | | SAL_DLLPRIVATE LineProperties getActualLineProperties(const Theme* pTheme) const; |
343 | | SAL_DLLPRIVATE EffectProperties getActualEffectProperties(const Theme* pTheme) const; |
344 | | |
345 | | std::vector< ShapePtr > maChildren; // only used for group shapes |
346 | | css::awt::Size maChSize; // only used for group shapes |
347 | | css::awt::Point maChPosition; // only used for group shapes |
348 | | |
349 | | std::vector<OUString> maConnectorAdjustmentList; // only used for connector shapes |
350 | | |
351 | | TextBodyPtr mpTextBody; |
352 | | LinePropertiesPtr mpLinePropertiesPtr; |
353 | | LinePropertiesPtr mpShapeRefLinePropPtr; |
354 | | FillPropertiesPtr mpFillPropertiesPtr; |
355 | | FillPropertiesPtr mpShapeRefFillPropPtr; |
356 | | GraphicPropertiesPtr mpGraphicPropertiesPtr; |
357 | | CustomShapePropertiesPtr mpCustomShapePropertiesPtr; |
358 | | table::TablePropertiesPtr mpTablePropertiesPtr; |
359 | | Shape3DPropertiesPtr mp3DPropertiesPtr; |
360 | | EffectPropertiesPtr mpEffectPropertiesPtr; |
361 | | EffectPropertiesPtr mpShapeRefEffectPropPtr; |
362 | | PropertyMap maShapeProperties; |
363 | | PropertyMap maDefaultShapeProperties; |
364 | | TextListStylePtr mpMasterTextListStyle; |
365 | | css::uno::Reference< css::drawing::XShape > mxShape; |
366 | | ConnectorShapePropertiesList maConnectorShapePropertiesList; |
367 | | |
368 | | OUString msConnectorName; |
369 | | OUString msServiceName; |
370 | | OUString msName; |
371 | | OUString msInternalName; // used by diagram; not displayed in UI |
372 | | OUString msId; |
373 | | OUString msDescription; |
374 | | OUString msTitle; |
375 | | bool m_isDecorative = false; |
376 | | |
377 | | /* <sp> (Shape) : This element specifies the existence of a single shape. |
378 | | |
379 | | Attributes: |
380 | | - macro (Reference to Custom Function) |
381 | | - textlink (Text Link) |
382 | | - fLocksText (Lock Text Flag) |
383 | | - fPublished (Publish to Server Flag) |
384 | | |
385 | | <sp> element can exist as a namespace format like <xdr:sp>, <cdr:sp> etc... |
386 | | */ |
387 | | |
388 | | /* specifies the custom function associated with the object. |
389 | | "macro" attribute for <sp> element */ |
390 | | OUString msMacro; |
391 | | /* If msMacro is an external reference this stores the absolute URL of the external workbook */ |
392 | | OUString msMacroExtUrl; |
393 | | /* specifies a formula linking to spreadsheet cell data. |
394 | | "textlink" attribute for <sp> element */ |
395 | | OUString msTextLink; |
396 | | /* indicates whether to allow text editing within this drawing object when the parent worksheet is protected. |
397 | | "fLocksText" attribute for <sp> element */ |
398 | | bool mbFLocksText = true; // default="true" |
399 | | /* indicates whether the shape shall be published with the worksheet when sent to the server. |
400 | | "fPublished" attribute for <sp> element */ |
401 | | bool mbFPublished = false; |
402 | | |
403 | | sal_Int32 mnSubType; // if this type is not zero, then the shape is a placeholder |
404 | | std::optional< sal_Int32 > moSubTypeIndex; |
405 | | |
406 | | ShapeStyleRefMap maShapeStyleRefs; |
407 | | |
408 | | css::awt::Size maSize; |
409 | | css::awt::Point maPosition; |
410 | | ::std::vector<OUString> maExtDrawings; |
411 | | Color maFontRefColorForNodes; |
412 | | |
413 | | FrameType meFrameType; ///< Type for graphic frame shapes. |
414 | | |
415 | | private: |
416 | | |
417 | | typedef std::shared_ptr< ::oox::vml::OleObjectInfo > OleObjectInfoRef; |
418 | | typedef std::shared_ptr< ChartShapeInfo > ChartShapeInfoRef; |
419 | | |
420 | | OleObjectInfoRef mxOleObjectInfo; ///< Additional data for OLE objects. |
421 | | ChartShapeInfoRef mxChartShapeInfo; ///< Additional data for chart shapes. |
422 | | |
423 | | sal_Int32 mnRotation; |
424 | | sal_Int32 mnDiagramRotation; // rotates shape prior to sizing, does not affect text rotation |
425 | | bool mbFlipH; |
426 | | bool mbFlipV; |
427 | | bool mbHidden; |
428 | | bool mbHiddenMasterShape; // master shapes can be hidden in layout slides |
429 | | // we need separate flag because we don't want |
430 | | // to propagate it when applying reference shape |
431 | | bool mbLocked; |
432 | | bool mbWPGChild; // Is this shape a child of a WPG shape? |
433 | | bool mbLockedCanvas; ///< Is this shape part of a locked canvas? |
434 | | bool mbWordprocessingCanvas; ///< Is this shape part of a wordprocessing canvas? |
435 | | bool mbWps; ///< Is this a wps shape? |
436 | | bool mbTextBox; ///< This shape has a textbox. |
437 | | LinkedTxbxAttr maLinkedTxbxAttr; |
438 | | bool mbHasLinkedTxbx; // this text box has linked text box ? |
439 | | bool mbHasCustomPrompt; // indicates that it's not a generic placeholder |
440 | | |
441 | | /// Z-Order. |
442 | | sal_Int32 mnZOrder = 0; |
443 | | |
444 | | /// Z-Order offset. |
445 | | sal_Int32 mnZOrderOff = 0; |
446 | | |
447 | | /// Type of data node for an in-diagram shape. |
448 | | sal_Int32 mnDataNodeType = 0; |
449 | | |
450 | | /// Aspect ratio for an in-diagram shape. |
451 | | double mfAspectRatio = 0; |
452 | | |
453 | | /// Number of child shapes to be layouted vertically inside org chart in-diagram shape. |
454 | | sal_Int32 mnVerticalShapesCount = 0; |
455 | | |
456 | | // Is this a connector shape? |
457 | | bool mbConnector = false; |
458 | | |
459 | | // temporary space for DiagramHelper in preparation for collecting data |
460 | | // Note: I tried to use a unique_ptr here, but existing constructor func does not allow that |
461 | | DiagramHelper_oox* mpDiagramHelper; |
462 | | |
463 | | // association-ID to identify the Diagram ModelData |
464 | | OUString msDiagramDataModelID; |
465 | | }; |
466 | | |
467 | | } |
468 | | |
469 | | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |