LibreOffice Module svx (master) 1
IDiagramHelper.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
20#pragma once
21
22#include <vector>
23#include <svx/svxdllapi.h>
24#include <rtl/ustring.hxx>
25#include <svx/svdhdl.hxx>
26
27// Forward declarations
28class SdrObjGroup;
29class SdrHdlList;
30
31namespace 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
38{
39 // object dimensions
41
42 // create marker for this kind
43 virtual void CreateB2dIAObject() override;
44
45public:
46 DiagramFrameHdl(const basegfx::B2DHomMatrix& rTransformation);
47
48 static void clicked(const Point& rPnt);
49};
50
52
53// Helper class to allow administer advanced Diagram related
54// data and functionality
56{
57private:
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
78
79 // If true and mxThemeDocument exists it will be re-imported to
80 // a newly created oox::drawingml::Theme object
82
83protected:
84 void anchorToSdrObjGroup(SdrObjGroup& rTarget);
85
86public:
88 virtual ~IDiagramHelper();
89
90 // re-create XShapes
91 virtual void reLayout(SdrObjGroup& rTarget) = 0;
92
93 // get text representation of data tree
94 virtual OUString getString() const = 0;
95
96 // get children of provided data node
97 // use empty string for top-level nodes
98 // returns vector of (id, text)
99 virtual std::vector<std::pair<OUString, OUString>>
100 getChildren(const OUString& rParentId) const = 0;
101
102 // add/remove new top-level node to data model, returns its id
103 virtual OUString addNode(const OUString& rText) = 0;
104 virtual bool removeNode(const OUString& rNodeId) = 0;
105
106 // Undo/Redo helpers for extracting/restoring Diagram-defining data
107 virtual std::shared_ptr<svx::diagram::DiagramDataState> extractDiagramDataState() const = 0;
108 virtual void applyDiagramDataState(const std::shared_ptr<svx::diagram::DiagramDataState>& rState) = 0;
109
110 bool UseDiagramThemeData() const { return mbUseDiagramThemeData; }
111 bool UseDiagramModelData() const { return mbUseDiagramModelData; }
112 bool ForceThemePtrRecreation() const { return mbForceThemePtrRecreation; };
113
114 static void AddAdditionalVisualization(const SdrObjGroup& rTarget, SdrHdlList& rHdlList);
115};
116
117}} // end of namespace
118/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Snippet of Diagram ModelData for Diagram-defining data undo/redo.
Definition: datamodel.hxx:160
basegfx::B2DHomMatrix maTransformation
virtual OUString addNode(const OUString &rText)=0
virtual OUString getString() const =0
virtual std::shared_ptr< svx::diagram::DiagramDataState > extractDiagramDataState() const =0
virtual void applyDiagramDataState(const std::shared_ptr< svx::diagram::DiagramDataState > &rState)=0
virtual bool removeNode(const OUString &rNodeId)=0
virtual std::vector< std::pair< OUString, OUString > > getChildren(const OUString &rParentId) const =0
virtual void reLayout(SdrObjGroup &rTarget)=0
#define SVXCORE_DLLPUBLIC
Definition: svxdllapi.h:35