QGIS API Documentation 3.29.0-Master (8c80f25a4f)
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 <QDomDocument>
21#include <QDomElement>
22
23#include "qgis_sip.h"
24
25#define SIP_NO_FILE
26
28
29class QgsPrintLayout;
30class QgsLayoutItem;
31class QgsLayoutObject;
33class QgsProperty;
35
47class QgsLayoutAtlas;
48class QgsProject;
49
56class CORE_EXPORT QgsCompositionConverter
57{
58 public:
59
64 {
65 NoProperty = 0,
68 //composer page properties
74 //general composer item properties
87 //composer map
97 //composer picture
102 //html item
104 //legend item
107 //scalebar item
112 };
113
118 {
121 SVGMarker
122 };
123
124
130 static std::unique_ptr<QgsPrintLayout> createLayoutFromCompositionXml( const QDomElement &composerElement,
131 QgsProject *project );
132
133
143 static QList<QgsLayoutObject *> addItemsFromCompositionXml( QgsPrintLayout *layout,
144 const QDomElement &parentElement,
145 QPointF *position = nullptr,
146 bool pasteInPlace = false );
147
153 static bool isCompositionTemplate( const QDomDocument &document );
154
162 static QDomDocument convertCompositionTemplate( const QDomDocument
163 &document, QgsProject *project );
164
165
166 private:
167
168
170 static QgsPropertiesDefinition sPropertyDefinitions;
171
172
173 static bool readLabelXml( QgsLayoutItemLabel *layoutItem,
174 const QDomElement &itemElem,
175 const QgsProject *project );
176
177 static bool readShapeXml( QgsLayoutItemShape *layoutItem,
178 const QDomElement &itemElem,
179 const QgsProject *project );
180
181 static bool readPictureXml( QgsLayoutItemPicture *layoutItem,
182 const QDomElement &itemElem,
183 const QgsProject *project,
184 const QgsStringMap &mapId2Uuid );
185
187 template <class T, class T2> static bool readPolyXml( T *layoutItem,
188 const QDomElement &itemElem,
189 const QgsProject *project );
190
191 static bool readArrowXml( QgsLayoutItemPolyline *layoutItem,
192 const QDomElement &itemElem,
193 const QgsProject *project );
194
195 static bool readMapXml( QgsLayoutItemMap *layoutItem,
196 const QDomElement &itemElem,
197 const QgsProject *project,
198 QgsStringMap &mapId2Uuid );
199
200 static bool readScaleBarXml( QgsLayoutItemScaleBar *layoutItem,
201 const QDomElement &itemElem,
202 const QgsProject *project,
203 const QgsStringMap &mapId2Uuid );
204
205 static bool readLegendXml( QgsLayoutItemLegend *layoutItem,
206 const QDomElement &itemElem,
207 const QgsProject *project,
208 const QgsStringMap &mapId2Uuid );
209
210 static bool readAtlasXml( QgsLayoutAtlas *atlasItem,
211 const QDomElement &itemElem,
212 const QgsProject *project );
213
214 static bool readHtmlXml( QgsLayoutItemHtml *layoutItem,
215 const QDomElement &itemElem,
216 const QgsProject *project );
217
218 static bool readTableXml( QgsLayoutItemAttributeTable *layoutItem,
219 const QDomElement &itemElem,
220 const QgsProject *project );
221
222 static bool readGroupXml( QgsLayoutItemGroup *layoutItem,
223 const QDomElement &itemElem,
224 const QgsProject *project,
225 const QList<QgsLayoutObject *> &items );
226
227 static bool readOldComposerObjectXml( QgsLayoutObject *layoutItem, const QDomElement &itemElem );
228
229 static void readOldDataDefinedPropertyMap( const QDomElement &itemElem,
230 QgsPropertyCollection &dataDefinedProperties );
231
232 static QgsProperty readOldDataDefinedProperty( DataDefinedProperty property, const QDomElement &ddElem );
233
234 static void initPropertyDefinitions();
235
236 static QgsPropertiesDefinition propertyDefinitions();
237
239 static bool readXml( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
240
242 static void adjustPos( QgsPrintLayout *layout, QgsLayoutItem *layoutItem, QPointF *position, bool &pasteInPlace, int zOrderOffset, QPointF &pasteShiftPos, int &pageNumber );
243
245 static void restoreGeneralComposeItemProperties( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
246
248 static QRectF itemPosition( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
249
251 static QPointF minPointFromXml( const QDomElement &elem );
252
253};
254
255#endif // QGSCOMPOSITIONCONVERTER_H
QgsCompositionConverter class converts a QGIS 2.x composition to a QGIS 3.x layout.
DataDefinedProperty
Composition data defined properties for different item types.
@ PaperOrientation
Paper orientation.
@ MapYMax
Map extent y maximum.
@ MapStylePreset
Layer and style map theme.
@ MapAtlasMargin
Map atlas margin.
@ MapYMin
Map extent y minimum.
@ MapXMin
Map extent x minimum.
@ ScalebarFillColor2
Scalebar secondary fill color.
@ ExcludeFromExports
Exclude item from exports.
@ NumPages
Number of pages in composition.
@ PictureSvgBackgroundColor
SVG background color.
@ LegendColumnCount
Legend column count.
@ PictureSvgStrokeWidth
SVG stroke width.
@ ScalebarFillColor
Scalebar fill color.
@ PictureSvgStrokeColor
SVG stroke color.
@ PageNumber
Page number for item placement.
@ ScalebarLineColor
Scalebar line color.
@ Transparency
Item transparency (deprecated)
@ MapXMax
Map extent x maximum.
@ TestProperty
Dummy property with no effect on item.
@ AllProperties
All properties for item.
@ PresetPaperSize
Preset paper size for composition.
@ BackgroundColor
Item background color.
@ PositionY
Y position on page.
@ PositionX
X position on page.
@ ScalebarLineWidth
Scalebar line width.
@ PictureSource
Picture source url.
MarkerMode
The MarkerMode enum is the old QGIS 2.x arrow marker mode.
Class used to render QgsLayout as an atlas, by iterating over the features from an associated vector ...
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:105
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
A store for object properties.
Definition: qgsproperty.h:230
The class is used as a container of context for various read/write operations on other objects.
QMap< QString, QString > QgsStringMap
Definition: qgis.h:3460
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.