Coverage Report

Created: 2026-07-10 11:04

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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: */