Skip to content

Commit af8a229

Browse files
committedJan 9, 2018
[layout] Converter: shapes
1 parent da3636e commit af8a229

File tree

6 files changed

+144
-64
lines changed

6 files changed

+144
-64
lines changed
 

‎src/core/layout/qgscompositionconverter.cpp

Lines changed: 46 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,16 @@ void QgsCompositionConverter::initPropertyDefinitions()
4343
{
4444
{ QgsCompositionConverter::TestProperty, QgsPropertyDefinition( "dataDefinedProperty", QgsPropertyDefinition::DataTypeString, "invalid property", QString() ) },
4545
{
46-
QgsCompositionConverter::PresetPaperSize, QgsPropertyDefinition( "dataDefinedPaperSize", QgsPropertyDefinition::DataTypeString, QObject::tr( "Paper size" ), QObject::tr( "string " ) + QLatin1String( "[<b>A5</b>|<b>A4</b>|<b>A3</b>|<b>A2</b>|<b>A1</b>|<b>A0</b>"
46+
QgsCompositionConverter::PresetPaperSize, QgsPropertyDefinition( "dataDefinedPaperSize", QgsPropertyDefinition::DataTypeString, QObject::tr( "Paper size" ), QObject::tr( "string " ) + QStringLiteral( "[<b>A5</b>|<b>A4</b>|<b>A3</b>|<b>A2</b>|<b>A1</b>|<b>A0</b>"
4747
"<b>B5</b>|<b>B4</b>|<b>B3</b>|<b>B2</b>|<b>B1</b>|<b>B0</b>"
4848
"<b>Legal</b>|<b>Ansi A</b>|<b>Ansi B</b>|<b>Ansi C</b>|<b>Ansi D</b>|<b>Ansi E</b>"
4949
"<b>Arch A</b>|<b>Arch B</b>|<b>Arch C</b>|<b>Arch D</b>|<b>Arch E</b>|<b>Arch E1</b>]"
50-
) )
50+
) )
5151
},
5252
{ QgsCompositionConverter::PaperWidth, QgsPropertyDefinition( "dataDefinedPaperWidth", QObject::tr( "Page width" ), QgsPropertyDefinition::DoublePositive ) },
5353
{ QgsCompositionConverter::PaperHeight, QgsPropertyDefinition( "dataDefinedPaperHeight", QObject::tr( "Page height" ), QgsPropertyDefinition::DoublePositive ) },
5454
{ QgsCompositionConverter::NumPages, QgsPropertyDefinition( "dataDefinedNumPages", QObject::tr( "Number of pages" ), QgsPropertyDefinition::IntegerPositive ) },
55-
{ QgsCompositionConverter::PaperOrientation, QgsPropertyDefinition( "dataDefinedPaperOrientation", QgsPropertyDefinition::DataTypeString, QObject::tr( "Symbol size" ), QObject::tr( "string " ) + QLatin1String( "[<b>portrait</b>|<b>landscape</b>]" ) ) },
55+
{ QgsCompositionConverter::PaperOrientation, QgsPropertyDefinition( "dataDefinedPaperOrientation", QgsPropertyDefinition::DataTypeString, QObject::tr( "Symbol size" ), QObject::tr( "string " ) + QStringLiteral( "[<b>portrait</b>|<b>landscape</b>]" ) ) },
5656
{ QgsCompositionConverter::PageNumber, QgsPropertyDefinition( "dataDefinedPageNumber", QObject::tr( "Page number" ), QgsPropertyDefinition::IntegerPositive ) },
5757
{ QgsCompositionConverter::PositionX, QgsPropertyDefinition( "dataDefinedPositionX", QObject::tr( "Position (X)" ), QgsPropertyDefinition::Double ) },
5858
{ QgsCompositionConverter::PositionY, QgsPropertyDefinition( "dataDefinedPositionY", QObject::tr( "Position (Y)" ), QgsPropertyDefinition::Double ) },
@@ -145,6 +145,29 @@ void QgsCompositionConverter::adjustPos( QgsLayout *layout, QgsLayoutItem *layou
145145
layoutItem->setZValue( layoutItem->zValue() + zOrderOffset );
146146
}
147147

148+
void QgsCompositionConverter::restoreGeneralComposeItemProperties( QgsLayoutItem *layoutItem, const QDomElement &itemElem )
149+
{
150+
//restore general composer item properties
151+
QDomNodeList composerItemList = itemElem.elementsByTagName( QStringLiteral( "ComposerItem" ) );
152+
if ( !composerItemList.isEmpty() )
153+
{
154+
QDomElement composerItemElem = composerItemList.at( 0 ).toElement();
155+
156+
//rotation
157+
if ( !qgsDoubleNear( composerItemElem.attribute( QStringLiteral( "rotation" ), QStringLiteral( "0" ) ).toDouble(), 0.0 ) )
158+
{
159+
//check for old (pre 2.1) rotation attribute
160+
layoutItem->setItemRotation( composerItemElem.attribute( QStringLiteral( "rotation" ), QStringLiteral( "0" ) ).toDouble(), false );
161+
}
162+
163+
QgsCompositionConverter::readXml( layoutItem, composerItemElem );
164+
165+
// Frame color
166+
167+
// Background color
168+
}
169+
}
170+
148171
QList<QgsLayoutItem *> QgsCompositionConverter::addItemsFromCompositionXml( QgsLayout *layout, const QDomElement &parentElement, const QgsReadWriteContext &context, QPointF *position, bool pasteInPlace )
149172
{
150173

@@ -227,6 +250,8 @@ bool QgsCompositionConverter::readLabelXml( QgsLayoutItemLabel *label, const QDo
227250
return false;
228251
}
229252

253+
restoreGeneralComposeItemProperties( label, itemElem );
254+
230255
//restore label specific properties
231256

232257
//text
@@ -277,21 +302,6 @@ bool QgsCompositionConverter::readLabelXml( QgsLayoutItemLabel *label, const QDo
277302
label->setFontColor( QColor( 0, 0, 0 ) );
278303
}
279304

280-
//restore general composer item properties
281-
QDomNodeList composerItemList = itemElem.elementsByTagName( QStringLiteral( "ComposerItem" ) );
282-
if ( !composerItemList.isEmpty() )
283-
{
284-
QDomElement composerItemElem = composerItemList.at( 0 ).toElement();
285-
286-
//rotation
287-
if ( !qgsDoubleNear( composerItemElem.attribute( QStringLiteral( "rotation" ), QStringLiteral( "0" ) ).toDouble(), 0.0 ) )
288-
{
289-
//check for old (pre 2.1) rotation attribute
290-
label->setItemRotation( composerItemElem.attribute( QStringLiteral( "rotation" ), QStringLiteral( "0" ) ).toDouble(), false );
291-
}
292-
293-
QgsCompositionConverter::readXml( label, composerItemElem );
294-
}
295305
return true;
296306
}
297307

@@ -300,30 +310,24 @@ bool QgsCompositionConverter::readShapeXml( QgsLayoutItemShape *layoutItem, cons
300310
layoutItem->setShapeType( static_cast<QgsLayoutItemShape::Shape>( itemElem.attribute( QStringLiteral( "shapeType" ), QStringLiteral( "0" ) ).toInt() ) );
301311
layoutItem->setCornerRadius( QgsLayoutMeasurement( itemElem.attribute( QStringLiteral( "cornerRadius" ), QStringLiteral( "0" ) ).toDouble() ) );
302312

303-
//restore general composer item properties
304-
QDomNodeList composerItemList = itemElem.elementsByTagName( QStringLiteral( "ComposerItem" ) );
305-
if ( !composerItemList.isEmpty() )
306-
{
307-
QDomElement composerItemElem = composerItemList.at( 0 ).toElement();
308-
309-
//rotation
310-
if ( !qgsDoubleNear( composerItemElem.attribute( QStringLiteral( "rotation" ), QStringLiteral( "0" ) ).toDouble(), 0.0 ) )
311-
{
312-
//check for old (pre 2.1) rotation attribute
313-
layoutItem->setItemRotation( composerItemElem.attribute( QStringLiteral( "rotation" ), QStringLiteral( "0" ) ).toDouble() );
314-
}
313+
restoreGeneralComposeItemProperties( layoutItem, itemElem );
315314

316-
readXml( layoutItem, composerItemElem );
317-
}
318315

319316
QgsReadWriteContext context;
320317
context.setPathResolver( QgsProject::instance()->pathResolver() );
321318

319+
if ( itemElem.elementsByTagName( QStringLiteral( "symbol" ) ).size() )
320+
{
321+
QDomElement symbolElement = itemElem.elementsByTagName( QStringLiteral( "symbol" ) ).at( 0 ).toElement();
322+
QgsFillSymbol *shapeStyleSymbol = QgsSymbolLayerUtils::loadSymbol<QgsFillSymbol>( symbolElement, context );
323+
if ( shapeStyleSymbol )
324+
layoutItem->setSymbol( shapeStyleSymbol );
325+
} /*
322326
QDomElement shapeStyleSymbolElem = itemElem.firstChildElement( QStringLiteral( "symbol" ) );
323327
if ( !shapeStyleSymbolElem.isNull() )
324328
{
325329
layoutItem->setSymbol( QgsSymbolLayerUtils::loadSymbol<QgsFillSymbol>( shapeStyleSymbolElem, context ) );
326-
}
330+
} */
327331
else
328332
{
329333
//upgrade project file from 2.0 to use symbol styling
@@ -399,6 +403,8 @@ bool QgsCompositionConverter::readShapeXml( QgsLayoutItemShape *layoutItem, cons
399403

400404
layoutItem->setSymbol( QgsFillSymbol::createSimple( properties ) );
401405
}
406+
407+
return true;
402408
}
403409

404410

@@ -418,23 +424,23 @@ bool QgsCompositionConverter::readXml( QgsLayoutItem *layoutItem, const QDomElem
418424
layoutItem->mTemplateUuid = itemElem.attribute( QStringLiteral( "templateUuid" ) );
419425

420426
//id
421-
QString id = itemElem.attribute( QStringLiteral( "id" ), QLatin1String( "" ) );
427+
QString id = itemElem.attribute( QStringLiteral( "id" ), QStringLiteral( "" ) );
422428
layoutItem->setId( id );
423429

424430
//frame
425431
QString frame = itemElem.attribute( QStringLiteral( "frame" ) );
426-
layoutItem->setFrameEnabled( frame.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0 ) ;
432+
layoutItem->setFrameEnabled( frame.compare( QStringLiteral( "true" ), Qt::CaseInsensitive ) == 0 ) ;
427433

428434
//frame
429435
QString background = itemElem.attribute( QStringLiteral( "background" ) );
430-
layoutItem->setBackgroundEnabled( background.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0 );
436+
layoutItem->setBackgroundEnabled( background.compare( QStringLiteral( "true" ), Qt::CaseInsensitive ) == 0 );
431437

432438
//position lock for mouse moves/resizes
433439
QString positionLock = itemElem.attribute( QStringLiteral( "positionLock" ) );
434-
layoutItem->setLocked( positionLock.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0 );
440+
layoutItem->setLocked( positionLock.compare( QStringLiteral( "true" ), Qt::CaseInsensitive ) == 0 );
435441

436442
//visibility
437-
layoutItem->setVisibility( itemElem.attribute( QStringLiteral( "visibility" ), QStringLiteral( "1" ) ) != QLatin1String( "0" ) );
443+
layoutItem->setVisibility( itemElem.attribute( QStringLiteral( "visibility" ), QStringLiteral( "1" ) ) != QStringLiteral( "0" ) );
438444

439445
layoutItem->mParentGroupUuid = itemElem.attribute( QStringLiteral( "groupUuid" ) );
440446
if ( !layoutItem->mParentGroupUuid.isEmpty() )
@@ -636,7 +642,7 @@ QgsProperty QgsCompositionConverter::readOldDataDefinedProperty( const QgsCompos
636642

637643
QString active = ddElem.attribute( QStringLiteral( "active" ) );
638644
bool isActive = false;
639-
if ( active.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0 )
645+
if ( active.compare( QStringLiteral( "true" ), Qt::CaseInsensitive ) == 0 )
640646
{
641647
isActive = true;
642648
}
@@ -645,7 +651,7 @@ QgsProperty QgsCompositionConverter::readOldDataDefinedProperty( const QgsCompos
645651

646652
QString useExpr = ddElem.attribute( QStringLiteral( "useExpr" ) );
647653
bool isExpression = false;
648-
if ( useExpr.compare( QLatin1String( "true" ), Qt::CaseInsensitive ) == 0 )
654+
if ( useExpr.compare( QStringLiteral( "true" ), Qt::CaseInsensitive ) == 0 )
649655
{
650656
isExpression = true;
651657
}

‎src/core/layout/qgscompositionconverter.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,9 @@ class CORE_EXPORT QgsCompositionConverter
151151
//! Make some common import adjustments
152152
static void adjustPos( QgsLayout *layout, QgsLayoutItem *layoutItem, QDomNode &itemNode, QPointF *position, bool &pasteInPlace, int zOrderOffset, QPointF &pasteShiftPos, int &pageNumber );
153153

154+
//! Restore general composer item properties
155+
static void restoreGeneralComposeItemProperties( QgsLayoutItem *layoutItem, const QDomElement &itemElem );
156+
154157
};
155158

156159
#endif // QGSCOMPOSITIONCONVERTER_H

‎tests/src/core/testqgscompositionconverter.cpp

Lines changed: 74 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,15 @@
1919

2020
#include "qgstest.h"
2121
#include "qgslayout.h"
22-
#include "qgslayoutitemlabel.h"
2322
#include "qgscompositionconverter.h"
2423
#include "qgsproject.h"
2524
#include "qgsreadwritecontext.h"
2625
#include "qgslayoutexporter.h"
26+
#include "qgsmultirenderchecker.h"
27+
28+
29+
#include "qgslayoutitemlabel.h"
30+
#include "qgslayoutitemshape.h"
2731

2832
class TestQgsCompositionConverter: public QObject
2933
{
@@ -40,6 +44,11 @@ class TestQgsCompositionConverter: public QObject
4044
*/
4145
void importComposerTemplateLabel();
4246

47+
/**
48+
* Test import shape from a composer template
49+
*/
50+
void importComposerTemplateShape();
51+
4352
/**
4453
* Test import multiple ements from a composer template
4554
*/
@@ -94,27 +103,24 @@ void TestQgsCompositionConverter::importComposerTemplateLabel()
94103
}
95104
file.close();
96105

97-
QDomElement docElem = doc.documentElement();
106+
QDomNodeList nodes( doc.elementsByTagName( QStringLiteral( "Composition" ) ) );
107+
QVERIFY( nodes.length() > 0 );
108+
QDomElement docElem = nodes.at( 0 ).toElement();
98109

99-
QgsProject project;
100-
QgsLayout layout( &project );
101110
QgsReadWriteContext context;
102-
QDomElement parentElement = docElem.firstChild().toElement();
103-
QList<QgsLayoutItem *> items( QgsCompositionConverter::addItemsFromCompositionXml( &layout,
104-
parentElement,
105-
context ) );
111+
QgsLayout *layout = QgsCompositionConverter::createLayoutFromCompositionXml( docElem, context );
112+
113+
QVERIFY( layout );
114+
QCOMPARE( layout->pageCollection()->pageCount(), 1 );
115+
116+
QList<QgsLayoutItemLabel *> items;
117+
layout->layoutItems<QgsLayoutItemLabel>( items );
106118
QVERIFY( items.size() > 0 );
107119

108-
exportLayout( &layout, QString( "ComposerTemplateLabel" ) );
120+
exportLayout( layout, QStringLiteral( "ComposerTemplateLabel" ) );
109121

110122
// Check the label
111-
const QgsLayoutItemLabel *label = nullptr;
112-
for ( const auto &item : items )
113-
{
114-
label = qobject_cast<QgsLayoutItemLabel *>( item );
115-
if ( label )
116-
break;
117-
}
123+
const QgsLayoutItemLabel *label = items.at( 0 );
118124
QVERIFY( label );
119125
QCOMPARE( label->text(), QStringLiteral( "QGIS" ) );
120126
QCOMPARE( label->pos().x(), 55.5333 );
@@ -126,13 +132,64 @@ void TestQgsCompositionConverter::importComposerTemplateLabel()
126132
QCOMPARE( label->frameStrokeWidth().length(), 0.2 );
127133
QCOMPARE( ( int )label->rotation(), 4 );
128134

135+
/*
136+
QgsCompositionChecker checker( QStringLiteral( "ComposerTemplateLabel" ), composition );
137+
checker.setSize( QSize( 774, 641 ) );
138+
checker.setControlPathPrefix( QStringLiteral( "compositionconverter" ) );
139+
QVERIFY( checker.testComposition( mReport ) );
140+
*/
141+
142+
qDeleteAll( items );
143+
}
144+
145+
void TestQgsCompositionConverter::importComposerTemplateShape()
146+
{
147+
QString templatePath( QStringLiteral( TEST_DATA_DIR ) + "/layouts/2x_template_shape.qpt" );
148+
QDomDocument doc( "mydocument" );
149+
QFile file( templatePath );
150+
QVERIFY( file.open( QIODevice::ReadOnly ) );
151+
if ( !doc.setContent( &file ) )
152+
{
153+
file.close();
154+
return;
155+
}
156+
file.close();
157+
158+
QDomNodeList nodes( doc.elementsByTagName( QStringLiteral( "Composition" ) ) );
159+
QVERIFY( nodes.length() > 0 );
160+
QDomElement docElem = nodes.at( 0 ).toElement();
161+
162+
QgsReadWriteContext context;
163+
QgsLayout *layout = QgsCompositionConverter::createLayoutFromCompositionXml( docElem, context );
164+
165+
QVERIFY( layout );
166+
QCOMPARE( layout->pageCollection()->pageCount(), 1 );
167+
168+
QList<QgsLayoutItemShape *> items;
169+
layout->layoutItems<QgsLayoutItemShape>( items );
170+
QVERIFY( items.size() > 0 );
171+
172+
exportLayout( layout, QString( "ComposerTemplateShape" ) );
173+
174+
// Check the shape
175+
const QgsLayoutItemShape *shape = items.at( 0 );
176+
QCOMPARE( shape->pos().x(), 261.132 );
177+
QCOMPARE( shape->pos().y(), 83.1791 );
178+
QCOMPARE( shape->sizeWithUnits().width(), 12.0988 );
179+
QCOMPARE( shape->sizeWithUnits().height(), 33.2716 );
180+
QCOMPARE( shape->referencePoint(), QgsLayoutItem::ReferencePoint::MiddleRight );
181+
QCOMPARE( shape->frameStrokeColor(), QColor( 0, 0, 0, 255 ) );
182+
QCOMPARE( shape->frameStrokeWidth().length(), 0.3 );
183+
QCOMPARE( shape->backgroundColor(), QColor( 255, 255, 255, 255 ) );
184+
QCOMPARE( ( int )shape->rotation(), 0 );
185+
QCOMPARE( shape->hasFrame(), false );
129186

130187
qDeleteAll( items );
131188
}
132189

133190
void TestQgsCompositionConverter::importComposerTemplate()
134191
{
135-
QString templatePath( QStringLiteral( TEST_DATA_DIR ) + "/layouts/2x_template_portrait.qpt" );
192+
QString templatePath( QStringLiteral( TEST_DATA_DIR ) + "/layouts/2x_template.qpt" );
136193
QDomDocument doc( "mydocument" );
137194
QFile file( templatePath );
138195
QVERIFY( file.open( QIODevice::ReadOnly ) );
@@ -153,7 +210,6 @@ void TestQgsCompositionConverter::importComposerTemplate()
153210
QVERIFY( layout );
154211
QCOMPARE( layout->pageCollection()->pageCount(), 2 );
155212

156-
// Check that we have 2 labels
157213

158214
exportLayout( layout, QString( "ComposerTemplate" ) );
159215
delete layout;

‎tests/testdata/layouts/2x_template.qpt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<Composer>
2-
<Composition paperHeight="210" resizeToContentsMarginRight="0" guidesVisible="1" numPages="2" snapTolerancePixels="5" printResolution="305" snapGridOffsetX="0" showPages="1" smartGuides="1"
3-
worldFileMap="" alignmentSnap="1" name="composer title" snapGridResolution="10" snapGridOffsetY="0" generateWorldFile="0" snapping="0" gridVisible="0"
2+
<Composition paperHeight="210" resizeToContentsMarginRight="0" guidesVisible="1" numPages="2" snapTolerancePixels="5" printResolution="305"
3+
snapGridOffsetX="0" showPages="1" smartGuides="1"
4+
worldFileMap="" alignmentSnap="1" name="composer title" snapGridResolution="10" snapGridOffsetY="0" generateWorldFile="0" snapping="0"
5+
gridVisible="0"
46
paperWidth="297" resizeToContentsMarginTop="0" printAsRaster="0" resizeToContentsMarginLeft="0" resizeToContentsMarginBottom="0">
57
<symbol clip_to_extent="1" name="" alpha="1" type="fill">
68
<layer class="SimpleFill" enabled="1" locked="0" pass="0">
@@ -202,7 +204,10 @@
202204
<node x="50.9157" y="22.1811"/>
203205
<node x="64.0227" y="0"/>
204206
</nodes>
205-
<ComposerItem pagex="22.6852" positionLock="false" width="64.0227" frame="false" excludeFromExports="0" x="22.6852" background="true" positionMode="0" blendMode="0" page="2" id="" lastValidViewScaleFactor="-1" visibility="1" pagey="86.5024" height="22.1811" frameJoinStyle="miter" y="306.502" zValue="12" outlineWidth="0.3" uuid="{d5db4748-2b62-4b79-a785-46a6cb8df967}" opacity="1" itemRotation="0">
207+
<ComposerItem pagex="22.6852" positionLock="false" width="64.0227" frame="false" excludeFromExports="0" x="22.6852" background="true"
208+
positionMode="0" blendMode="0" page="2" id="" lastValidViewScaleFactor="-1" visibility="1"
209+
pagey="86.5024" height="22.1811" frameJoinStyle="miter" y="306.502" zValue="12" outlineWidth="0.3"
210+
uuid="{d5db4748-2b62-4b79-a785-46a6cb8df967}" opacity="1" itemRotation="0">
206211
<FrameColor green="0" blue="0" red="0" alpha="255"/>
207212
<BackgroundColor green="255" blue="255" red="255" alpha="255"/>
208213
<dataDefinedProperties>

‎tests/testdata/layouts/3x_template.qpt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@
2424
</data_defined_properties>
2525
</layer>
2626
</symbol>
27-
<LayoutItem excludeFromExports="0" positionOnPage="0,0,mm" frame="false" groupUuid="" uuid="{17064c28-2959-4d93-bd12-56258342e897}" background="true" opacity="1" outlineWidthM="0.3,mm" id="" type="65638" referencePoint="0" position="0,0,mm" positionLock="false" visibility="1" size="297,210,mm" templateUuid="{17064c28-2959-4d93-bd12-56258342e897}" frameJoinStyle="miter" itemRotation="0" zValue="0" blendMode="0">
27+
<LayoutItem excludeFromExports="0" positionOnPage="0,0,mm" frame="false" groupUuid="" uuid="{17064c28-2959-4d93-bd12-56258342e897}"
28+
background="true" opacity="1" outlineWidthM="0.3,mm" id="" type="65638" referencePoint="0" position="0,0,mm"
29+
positionLock="false" visibility="1" size="297,210,mm" templateUuid="{17064c28-2959-4d93-bd12-56258342e897}"
30+
frameJoinStyle="miter" itemRotation="0" zValue="0" blendMode="0">
2831
<FrameColor green="0" alpha="255" red="0" blue="0"/>
2932
<BackgroundColor green="255" alpha="255" red="255" blue="255"/>
3033
<LayoutObject>
@@ -40,7 +43,11 @@
4043
</LayoutItem>
4144
<GuideCollection visible="1"/>
4245
</PageCollection>
43-
<LayoutItem excludeFromExports="0" labelText="Lorem ipsum" positionOnPage="68.981,56.526,mm" frame="false" groupUuid="" uuid="{7fd8a6f0-6ff5-4da4-9e46-38ec3b239661}" background="false" opacity="1" outlineWidthM="0.3,mm" halign="8" id="" marginY="0" type="65641" marginX="0" referencePoint="0" position="68.981,56.526,mm" valign="32" positionLock="false" visibility="1" size="146.584,43.113,mm" templateUuid="{7fd8a6f0-6ff5-4da4-9e46-38ec3b239661}" frameJoinStyle="miter" itemRotation="0" htmlState="0" zValue="1" blendMode="0">
46+
<LayoutItem excludeFromExports="0" labelText="Lorem ipsum" positionOnPage="68.981,56.526,mm" frame="false" groupUuid=""
47+
uuid="{7fd8a6f0-6ff5-4da4-9e46-38ec3b239661}" background="false" opacity="1" outlineWidthM="0.3,mm" halign="8" id="" marginY="0"
48+
type="65641" marginX="0" referencePoint="0" position="68.981,56.526,mm" valign="32" positionLock="false" visibility="1"
49+
size="146.584,43.113,mm" templateUuid="{7fd8a6f0-6ff5-4da4-9e46-38ec3b239661}" frameJoinStyle="miter" itemRotation="0" htmlState="0"
50+
zValue="1" blendMode="0">
4451
<FrameColor green="0" alpha="255" red="0" blue="0"/>
4552
<BackgroundColor green="255" alpha="255" red="255" blue="255"/>
4653
<LayoutObject>

‎tests/testdata/layouts/3x_template_landscape_portrait.qpt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@
7070
<LabelFont description="Ubuntu,48,-1,5,25,1,0,0,0,0,Light Italic" style="Light Italic"/>
7171
<FontColor blue="43" red="201" green="240"/>
7272
</LayoutItem>
73-
<LayoutItem outlineWidthM="0.3,mm" type="65641" opacity="1" id="" size="146.584,43.113,mm" referencePoint="4" frameJoinStyle="miter" zValue="1" uuid="{8ebacd90-f769-4ffc-8369-b8248ecde556}" positionOnPage="83.6899,40.644,mm" frame="false" marginY="0" itemRotation="0" labelText="Lorem ipsum" positionLock="false" marginX="0" halign="8" templateUuid="{8ebacd90-f769-4ffc-8369-b8248ecde556}" valign="32" position="156.982,62.2005,mm" visibility="1" background="false" htmlState="0" excludeFromExports="0" blendMode="0" groupUuid="">
73+
<LayoutItem outlineWidthM="0.3,mm" type="65641" opacity="1" id="" size="146.584,43.113,mm" referencePoint="4" frameJoinStyle="miter" zValue="1"
74+
uuid="{8ebacd90-f769-4ffc-8369-b8248ecde556}" positionOnPage="83.6899,40.644,mm" frame="false" marginY="0" itemRotation="0"
75+
labelText="Lorem ipsum" positionLock="false" marginX="0" halign="8" templateUuid="{8ebacd90-f769-4ffc-8369-b8248ecde556}"
76+
valign="32" position="156.982,62.2005,mm" visibility="1" background="false" htmlState="0" excludeFromExports="0" blendMode="0" groupUuid="">
7477
<FrameColor blue="0" alpha="255" red="0" green="0"/>
7578
<BackgroundColor blue="255" alpha="255" red="255" green="255"/>
7679
<LayoutObject>

0 commit comments

Comments
 (0)
Please sign in to comment.