QGIS API Documentation 3.99.0-Master (7d2ca374f2d)
Loading...
Searching...
No Matches
qgscompositionconverter.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscompositionconverter.h - Convert a QGIS 2.x composition to a layout
3
4 ---------------------
5 begin : 13.12.2017
6 copyright : (C) 2017 by Alessandro Pasotti
7 email : elpaso at itopen dot it
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16#ifndef QGSCOMPOSITIONCONVERTER_H
17#define QGSCOMPOSITIONCONVERTER_H
18
19
20#include "qgis_sip.h"
22
23#include <QDomDocument>
24#include <QDomElement>
25
26#define SIP_NO_FILE
27
28class QgsPrintLayout;
29class QgsLayoutItem;
30class QgsLayoutObject;
32class QgsProperty;
34
46class QgsLayoutAtlas;
47class QgsProject;
48
54class CORE_EXPORT QgsCompositionConverter
55{
56 public:
57
62 {
63 NoProperty = 0,
64 AllProperties,
65 TestProperty,
66 //composer page properties
67 PresetPaperSize,
68 PaperWidth,
69 PaperHeight,
70 NumPages,
71 PaperOrientation,
72 //general composer item properties
73 PageNumber,
74 PositionX,
75 PositionY,
76 ItemWidth,
77 ItemHeight,
78 ItemRotation,
79 Transparency,
80 Opacity,
81 BlendMode,
82 ExcludeFromExports,
83 FrameColor,
84 BackgroundColor,
85 //composer map
86 MapRotation,
87 MapScale,
88 MapXMin,
89 MapYMin,
90 MapXMax,
91 MapYMax,
92 MapAtlasMargin,
93 MapLayers,
94 MapStylePreset,
95 //composer picture
96 PictureSource,
97 PictureSvgBackgroundColor,
98 PictureSvgStrokeColor,
99 PictureSvgStrokeWidth,
100 //html item
101 SourceUrl,
102 //legend item
103 LegendTitle,
104 LegendColumnCount,
105 //scalebar item
106 ScalebarFillColor,
107 ScalebarFillColor2,
108 ScalebarLineColor,
109 ScalebarLineWidth,
110 };
111
121
122
128 static std::unique_ptr<QgsPrintLayout> createLayoutFromCompositionXml( const QDomElement &composerElement,
129 QgsProject *project );
130
131
141 static QList<QgsLayoutObject *> addItemsFromCompositionXml( QgsPrintLayout *layout,
142 const QDomElement &parentElement,
143 QPointF *position = nullptr,
144 bool pasteInPlace = false );
145
150 static bool isCompositionTemplate( const QDomDocument &document );
151
158 static QDomDocument convertCompositionTemplate( const QDomDocument
159 &document, QgsProject *project );
160
161
162 private:
163
164
166 static QgsPropertiesDefinition sPropertyDefinitions;
167
168
169 static bool readLabelXml( QgsLayoutItemLabel *layoutItem,
170 const QDomElement &itemElem,
171 const QgsProject *project );
172
173 static bool readShapeXml( QgsLayoutItemShape *layoutItem,
174 const QDomElement &itemElem,
175 const QgsProject *project );
176
177 static bool readPictureXml( QgsLayoutItemPicture *layoutItem,
178 const QDomElement &itemElem,
179 const QgsProject *project,
180 const QgsStringMap &mapId2Uuid );
181
183 template <class T, class T2> static bool readPolyXml( T *layoutItem,
184 const QDomElement &itemElem,
185 const QgsProject *project );
186
187 static bool readArrowXml( QgsLayoutItemPolyline *layoutItem,
188 const QDomElement &itemElem,
189 const QgsProject *project );
190
191 static bool readMapXml( QgsLayoutItemMap *layoutItem,
192 const QDomElement &itemElem,
193 const QgsProject *project,
194 QgsStringMap &mapId2Uuid );
195
196 static bool readScaleBarXml( QgsLayoutItemScaleBar *layoutItem,
197 const QDomElement &itemElem,
198 const QgsProject *project,
199 const QgsStringMap &mapId2Uuid );
200
201 static bool readLegendXml( QgsLayoutItemLegend *layoutItem,
202 const QDomElement &itemElem,
203 const QgsProject *project,
204 const QgsStringMap &mapId2Uuid );
205
206 static bool readAtlasXml( QgsLayoutAtlas *atlasItem,
207 const QDomElement &itemElem,
208 const QgsProject *project );
209
210 static bool readHtmlXml( QgsLayoutItemHtml *layoutItem,
211 const QDomElement &itemElem,
212 const QgsProject *project );
213
214 static bool readTableXml( QgsLayoutItemAttributeTable *layoutItem,
215 const QDomElement &itemElem,
216 const QgsProject *project );
217
218 static bool readGroupXml( QgsLayoutItemGroup *layoutItem,
219 const QDomElement &itemElem,
220 const QgsProject *project,
221 const QList<QgsLayoutObject *> &items );
222
223 static bool readOldComposerObjectXml( QgsLayoutObject *layoutItem, const QDomElement &itemElem );
224
225 static void readOldDataDefinedPropertyMap( const QDomElement &itemElem,
226 QgsPropertyCollection &dataDefinedProperties );
227
228 static QgsProperty readOldDataDefinedProperty( DataDefinedProperty property, const QDomElement &ddElem );
229
230 static void initPropertyDefinitions();
231
232 static QgsPropertiesDefinition propertyDefinitions();
233
235 static bool readXml( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
236
238 static void adjustPos( QgsPrintLayout *layout, QgsLayoutItem *layoutItem, QPointF *position, bool &pasteInPlace, int zOrderOffset, QPointF &pasteShiftPos, int &pageNumber );
239
241 static void restoreGeneralComposeItemProperties( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
242
244 static QRectF itemPosition( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
245
247 static QPointF minPointFromXml( const QDomElement &elem );
248
249};
250
251#endif // QGSCOMPOSITIONCONVERTER_H
Converts a QGIS 2.x composition to a QGIS 3.x layout.
DataDefinedProperty
Composition data defined properties for different item types.
MarkerMode
The MarkerMode enum is the old QGIS 2.x arrow marker mode.
Used to render QgsLayout as an atlas, by iterating over the features from an associated vector layer.
A layout table subclass that displays attributes from a vector layer.
A container for grouping several QgsLayoutItems.
A layout multiframe subclass for HTML content.
A layout item subclass for text labels.
A layout item subclass for map legends.
Layout graphical items for displaying a map.
A layout item subclass that displays SVG files or raster format images (jpg, png, ....
Layout item for node based polygon shapes.
Layout item for node based polyline shapes.
A layout item subclass for scale bars.
Layout item for basic filled shapes (e.g.
Base class for graphical items within a QgsLayout.
A base class for objects which belong to a layout.
Print layout, a QgsLayout subclass for static or atlas-based layouts.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:113
A grouped map of multiple QgsProperty objects, each referenced by an integer key value.
A store for object properties.
A container for the context for various read/write operations on objects.
QMap< QString, QString > QgsStringMap
Definition qgis.h:7463
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.