Coverage Report

Created: 2026-02-14 09:37

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/svx/diagram/DiagramHelper_svx.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 <vector>
23
#include <svx/svxdllapi.h>
24
#include <rtl/ustring.hxx>
25
#include <svx/svdhdl.hxx>
26
#include <svx/diagram/DomMapFlag.hxx>
27
28
// Forward declarations
29
class SdrObjGroup;
30
31
namespace svx { namespace diagram {
32
33
// Helper class to visualize an imminently recognizable
34
// additional visualization for DynamicDiagrams that can also
35
// be used to show/hide the DiagramDialog by the user
36
// Note: is also used as additional drag/move handle
37
class SVXCORE_DLLPUBLIC DiagramFrameHdl final : public SdrHdl
38
{
39
    // object dimensions
40
    basegfx::B2DHomMatrix maTransformation;
41
42
    // create marker for this kind
43
    virtual void CreateB2dIAObject() override;
44
45
public:
46
    DiagramFrameHdl(const basegfx::B2DHomMatrix& rTransformation);
47
48
    static void clicked(const Point& rPnt);
49
};
50
51
class DiagramDataState;
52
53
// Helper class to allow administer advanced Diagram related
54
// data and functionality
55
class SVXCORE_DLLPUBLIC DiagramHelper_svx
56
{
57
private:
58
    // These values define behaviour to where take data from at re-creation time.
59
    // Different definitions will have different consequences for re-creation
60
    // of Diagram visualization (if needed/triggered).
61
    // The style attributes per shape e.g. can be re-stored frm either an
62
    // existing Theme, or the preserved key/value list of properties per XShape.
63
    // With the current default settings the re-creation uses the preserved
64
    // key/value pairs, but re-creation from Theme may also be desirable. It
65
    // is also good to preserve both data packages at initial import to allow
66
    // alternatively one of these two methods for re-construction
67
68
    // If true, the oox::Theme data from ::DiagramData get/set/ThemeDocument()
69
    // aka mxThemeDocument - if it exists - will be used to create the style
70
    // attributes for the to-be-created XShapes (theoretically allows re-creation
71
    // with other Theme)
72
    bool mbUseDiagramThemeData; // false
73
74
    // If true, the UNO API form of attributes per Point as Key/value list
75
    // that was secured after initial XShape creation is used to create the
76
    // style attributes for the to-be-created XShapes
77
    bool mbUseDiagramModelData; // true
78
79
    // If true and mxThemeDocument exists it will be re-imported to
80
    // a newly created oox::drawingml::Theme object
81
    bool mbForceThemePtrRecreation; // false
82
83
protected:
84
    // access associated SdrObjGroup/XShape/RootShape
85
    virtual css::uno::Reference< css::drawing::XShape >& accessRootShape() = 0;
86
87
    // Make constructor protected to signal that this anyway pure virtual class
88
    // shall not be incarnated - target to use is oox::drawingml::DiagramHelper_oox
89
    DiagramHelper_svx();
90
    explicit DiagramHelper_svx(DiagramHelper_svx const& rSource);
91
92
public:
93
    virtual ~DiagramHelper_svx();
94
95
    // re-create XShapes
96
    virtual void reLayout() = 0;
97
98
    // get text representation of data tree
99
    virtual OUString getDiagramString() const = 0;
100
101
    // get children of provided data node
102
    // use empty string for top-level nodes
103
    // returns vector of (id, text)
104
    virtual std::vector<std::pair<OUString, OUString>>
105
    getDiagramChildren(const OUString& rParentId) const = 0;
106
107
    // add/remove new top-level node to data model, returns its id
108
    virtual OUString addDiagramNode(const OUString& rText) = 0;
109
    virtual bool removeDiagramNode(const OUString& rNodeId) = 0;
110
    virtual void TextInformationChange() = 0;
111
112
    // Undo/Redo helpers for extracting/restoring Diagram-defining data
113
    virtual std::shared_ptr<svx::diagram::DiagramDataState> extractDiagramDataState() const = 0;
114
    virtual void applyDiagramDataState(const std::shared_ptr<svx::diagram::DiagramDataState>& rState) = 0;
115
116
0
    bool UseDiagramThemeData() const { return mbUseDiagramThemeData; }
117
0
    bool UseDiagramModelData() const { return mbUseDiagramModelData; }
118
0
    bool ForceThemePtrRecreation() const { return mbForceThemePtrRecreation; };
119
120
    // connect/disconnect to/from Group
121
    void connectToSdrObjGroup(css::uno::Reference< css::drawing::XShape >& rTarget);
122
    void disconnectFromSdrObjGroup();
123
124
    static void AddAdditionalVisualization(const SdrObjGroup& rTarget, SdrHdlList& rHdlList);
125
126
    // access to PropertyValues
127
    virtual css::uno::Any getOOXDomValue(svx::diagram::DomMapFlag aDomMapFlag) const = 0;
128
129
    // check if mandatory DiagramDomS exist and/or were not touched
130
    virtual bool checkMinimalDataDoms() const = 0;
131
132
    // access to RootShape - the GroupObject used to host this Diagram
133
0
    css::uno::Reference< css::drawing::XShape >& getRootShape() { return accessRootShape(); }
134
135
    // needed to create DiagramHelper_oox in svx' SdrObjGroup copy constructor
136
    virtual DiagramHelper_svx* clone() const = 0;
137
};
138
139
}} // end of namespace
140
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */