android: Update app-specific/MIME type icons
[LibreOffice.git] / include / svx / diagram / IDiagramHelper.hxx
blobe93056f700495c04cd2cb613b07e6d942a44dfe2
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #pragma once
22 #include <vector>
23 #include <svx/svxdllapi.h>
24 #include <rtl/ustring.hxx>
25 #include <svx/svdhdl.hxx>
27 // Forward declarations
28 class SdrObjGroup;
29 class SdrHdlList;
31 namespace svx { namespace diagram {
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
39 // object dimensions
40 basegfx::B2DHomMatrix maTransformation;
42 // create marker for this kind
43 virtual void CreateB2dIAObject() override;
45 public:
46 DiagramFrameHdl(const basegfx::B2DHomMatrix& rTransformation);
48 static void clicked(const Point& rPnt);
51 class DiagramDataState;
53 // Helper class to allow administer advanced Diagram related
54 // data and functionality
55 class SVXCORE_DLLPUBLIC IDiagramHelper
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
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
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
79 // If true and mxThemeDocument exists it will be re-imported to
80 // a newly created oox::drawingml::Theme object
81 bool mbForceThemePtrRecreation; // false
83 protected:
84 void anchorToSdrObjGroup(SdrObjGroup& rTarget);
86 public:
87 IDiagramHelper();
88 virtual ~IDiagramHelper();
90 // re-create XShapes
91 virtual void reLayout(SdrObjGroup& rTarget) = 0;
93 // get text representation of data tree
94 virtual OUString getString() const = 0;
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;
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;
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;
110 bool UseDiagramThemeData() const { return mbUseDiagramThemeData; }
111 bool UseDiagramModelData() const { return mbUseDiagramModelData; }
112 bool ForceThemePtrRecreation() const { return mbForceThemePtrRecreation; };
114 static void AddAdditionalVisualization(const SdrObjGroup& rTarget, SdrHdlList& rHdlList);
117 }} // end of namespace
118 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */