QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
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:
61 {
62 NoProperty = 0,
63 AllProperties,
64 TestProperty,
65 //composer page properties
66 PresetPaperSize,
67 PaperWidth,
68 PaperHeight,
69 NumPages,
70 PaperOrientation,
71 //general composer item properties
72 PageNumber,
73 PositionX,
74 PositionY,
75 ItemWidth,
76 ItemHeight,
77 ItemRotation,
78 Transparency,
79 Opacity,
80 BlendMode,
81 ExcludeFromExports,
82 FrameColor,
83 BackgroundColor,
84 //composer map
85 MapRotation,
86 MapScale,
87 MapXMin,
88 MapYMin,
89 MapXMax,
90 MapYMax,
91 MapAtlasMargin,
92 MapLayers,
93 MapStylePreset,
94 //composer picture
95 PictureSource,
96 PictureSvgBackgroundColor,
97 PictureSvgStrokeColor,
98 PictureSvgStrokeWidth,
99 //html item
100 SourceUrl,
101 //legend item
102 LegendTitle,
103 LegendColumnCount,
104 //scalebar item
105 ScalebarFillColor,
106 ScalebarFillColor2,
107 ScalebarLineColor,
108 ScalebarLineWidth,
109 };
110
120
121
127 static std::unique_ptr<QgsPrintLayout> createLayoutFromCompositionXml( const QDomElement &composerElement, QgsProject *project );
128
129
139 static QList<QgsLayoutObject *> addItemsFromCompositionXml( QgsPrintLayout *layout, const QDomElement &parentElement, QPointF *position = nullptr, bool pasteInPlace = false );
140
145 static bool isCompositionTemplate( const QDomDocument &document );
146
153 static QDomDocument convertCompositionTemplate( const QDomDocument &document, QgsProject *project );
154
155
156 private:
158 static QgsPropertiesDefinition sPropertyDefinitions;
159
160
161 static bool readLabelXml( QgsLayoutItemLabel *layoutItem, const QDomElement &itemElem, const QgsProject *project );
162
163 static bool readShapeXml( QgsLayoutItemShape *layoutItem, const QDomElement &itemElem, const QgsProject *project );
164
165 static bool readPictureXml( QgsLayoutItemPicture *layoutItem, const QDomElement &itemElem, const QgsProject *project, const QgsStringMap &mapId2Uuid );
166
168 template<class T, class T2> static bool readPolyXml( T *layoutItem, const QDomElement &itemElem, const QgsProject *project );
169
170 static bool readArrowXml( QgsLayoutItemPolyline *layoutItem, const QDomElement &itemElem, const QgsProject *project );
171
172 static bool readMapXml( QgsLayoutItemMap *layoutItem, const QDomElement &itemElem, const QgsProject *project, QgsStringMap &mapId2Uuid );
173
174 static bool readScaleBarXml( QgsLayoutItemScaleBar *layoutItem, const QDomElement &itemElem, const QgsProject *project, const QgsStringMap &mapId2Uuid );
175
176 static bool readLegendXml( QgsLayoutItemLegend *layoutItem, const QDomElement &itemElem, const QgsProject *project, const QgsStringMap &mapId2Uuid );
177
178 static bool readAtlasXml( QgsLayoutAtlas *atlasItem, const QDomElement &itemElem, const QgsProject *project );
179
180 static bool readHtmlXml( QgsLayoutItemHtml *layoutItem, const QDomElement &itemElem, const QgsProject *project );
181
182 static bool readTableXml( QgsLayoutItemAttributeTable *layoutItem, const QDomElement &itemElem, const QgsProject *project );
183
184 static bool readGroupXml( QgsLayoutItemGroup *layoutItem, const QDomElement &itemElem, const QgsProject *project, const QList<QgsLayoutObject *> &items );
185
186 static bool readOldComposerObjectXml( QgsLayoutObject *layoutItem, const QDomElement &itemElem );
187
188 static void readOldDataDefinedPropertyMap( const QDomElement &itemElem, QgsPropertyCollection &dataDefinedProperties );
189
190 static QgsProperty readOldDataDefinedProperty( DataDefinedProperty property, const QDomElement &ddElem );
191
192 static void initPropertyDefinitions();
193
194 static QgsPropertiesDefinition propertyDefinitions();
195
197 static bool readXml( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
198
200 static void adjustPos( QgsPrintLayout *layout, QgsLayoutItem *layoutItem, QPointF *position, bool &pasteInPlace, int zOrderOffset, QPointF &pasteShiftPos, int &pageNumber );
201
203 static void restoreGeneralComposeItemProperties( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
204
206 static QRectF itemPosition( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
207
209 static QPointF minPointFromXml( const QDomElement &elem );
210};
211
212#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:7475
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.