QGIS API Documentation  3.0.2-Girona (307d082)
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.h"
24 #include "qgis_sip.h"
25 
26 #define SIP_NO_FILE
27 
28 #include "qgspropertycollection.h"
29 
30 class QgsPrintLayout;
31 class QgsLayoutItem;
32 class QgsLayoutObject;
34 class QgsProperty;
36 
37 class QgsLayoutItemLabel;
38 class QgsLayoutItemShape;
42 class QgsLayoutItemMap;
45 class QgsLayoutItemHtml;
47 
48 
55 class CORE_EXPORT QgsCompositionConverter
56 {
57  public:
58 
63  {
64  NoProperty = 0,
67  //composer page properties
73  //general composer item properties
86  //composer map
96  //composer picture
101  //html item
103  //legend item
106  //scalebar item
111  };
112 
117  {
120  SVGMarker
121  };
122 
123 
129  static std::unique_ptr<QgsPrintLayout> createLayoutFromCompositionXml( const QDomElement &composerElement,
130  QgsProject *project );
131 
132 
142  static QList<QgsLayoutObject *> addItemsFromCompositionXml( QgsPrintLayout *layout,
143  const QDomElement &parentElement,
144  QPointF *position = nullptr,
145  bool pasteInPlace = false );
146 
152  static bool isCompositionTemplate( const QDomDocument &document );
153 
160  static QDomDocument convertCompositionTemplate( const QDomDocument
161  &document, QgsProject *project );
162 
163 
164  private:
165 
166 
168  static QgsPropertiesDefinition sPropertyDefinitions;
169 
170 
171  static bool readLabelXml( QgsLayoutItemLabel *layoutItem,
172  const QDomElement &itemElem,
173  const QgsProject *project );
174 
175  static bool readShapeXml( QgsLayoutItemShape *layoutItem,
176  const QDomElement &itemElem,
177  const QgsProject *project );
178 
179  static bool readPictureXml( QgsLayoutItemPicture *layoutItem,
180  const QDomElement &itemElem,
181  const QgsProject *project,
182  const QgsStringMap &mapId2Uuid );
183 
185  template <class T, class T2> static bool readPolyXml( T *layoutItem,
186  const QDomElement &itemElem,
187  const QgsProject *project );
188 
189  static bool readArrowXml( QgsLayoutItemPolyline *layoutItem,
190  const QDomElement &itemElem,
191  const QgsProject *project );
192 
193  static bool readMapXml( QgsLayoutItemMap *layoutItem,
194  const QDomElement &itemElem,
195  const QgsProject *project,
196  QgsStringMap &mapId2Uuid );
197 
198  static bool readScaleBarXml( QgsLayoutItemScaleBar *layoutItem,
199  const QDomElement &itemElem,
200  const QgsProject *project,
201  const QgsStringMap &mapId2Uuid );
202 
203  static bool readLegendXml( QgsLayoutItemLegend *layoutItem,
204  const QDomElement &itemElem,
205  const QgsProject *project,
206  const QgsStringMap &mapId2Uuid );
207 
208  static bool readAtlasXml( QgsLayoutAtlas *atlasItem,
209  const QDomElement &itemElem,
210  const QgsProject *project );
211 
212  static bool readHtmlXml( QgsLayoutItemHtml *layoutItem,
213  const QDomElement &itemElem,
214  const QgsProject *project );
215 
216  static bool readTableXml( QgsLayoutItemAttributeTable *layoutItem,
217  const QDomElement &itemElem,
218  const QgsProject *project );
219 
220  static bool readOldComposerObjectXml( QgsLayoutObject *layoutItem, const QDomElement &itemElem );
221 
222  static void readOldDataDefinedPropertyMap( const QDomElement &itemElem,
223  QgsPropertyCollection &dataDefinedProperties );
224 
225  static QgsProperty readOldDataDefinedProperty( const DataDefinedProperty property, const QDomElement &ddElem );
226 
227  static void initPropertyDefinitions();
228 
229  static QgsPropertiesDefinition propertyDefinitions();
230 
232  static bool readXml( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
233 
235  static void adjustPos( QgsPrintLayout *layout, QgsLayoutItem *layoutItem, QPointF *position, bool &pasteInPlace, int zOrderOffset, QPointF &pasteShiftPos, int &pageNumber );
236 
238  static void restoreGeneralComposeItemProperties( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
239 
241  static QRectF itemPosition( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
242 
244  static QPointF minPointFromXml( const QDomElement &elem );
245 
246 };
247 
248 #endif // QGSCOMPOSITIONCONVERTER_H
The class is used as a container of context for various read/write operations on other objects...
Base class for graphical items within a QgsLayout.
A layout item subclass for text labels.
Preset paper size for composition.
A layout item subclass that displays SVG files or raster format images (jpg, png, ...
Layout item for node based polygon shapes.
QMap< QString, QString > QgsStringMap
Definition: qgis.h:479
Layout graphical items for displaying a map.
Layout item for node based polyline shapes.
Layout item for basic filled shapes (e.g.
Class used to render an Atlas, iterating over geometry features.
Reads and writes project states.
Definition: qgsproject.h:82
A layout table subclass that displays attributes from a vector layer.
A store for object properties.
Definition: qgsproperty.h:229
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.
Number of pages in composition.
QgsCompositionConverter class converts a QGIS 2.x composition to a QGIS 3.x layout.
MarkerMode
The MarkerMode enum is the old QGIS 2.x arrow marker mode.
Dummy property with no effect on item.
DataDefinedProperty
Composition data defined properties for different item types.
A layout item subclass for scale bars.
A base class for objects which belong to a layout.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
Print layout, a QgsLayout subclass for static or atlas-based layouts.
A layout item subclass for map legends.
Page number for item placement.
A layout multiframe subclass for HTML content.