Skip to content

Commit c232b4f

Browse files
committedJan 9, 2018
[layout] connect converted to loader code
1 parent e477879 commit c232b4f

File tree

15 files changed

+17
-34
lines changed

15 files changed

+17
-34
lines changed
 

‎src/core/layout/qgscompositionconverter.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include "qgsproject.h"
3131
#include "qgsmaplayerstylemanager.h"
3232

33+
#include "qgslayoutpagecollection.h"
3334
#include "qgslayoutitemregistry.h"
3435
#include "qgslayoutitemlabel.h"
3536
#include "qgslayoutitemshape.h"
@@ -860,6 +861,7 @@ bool QgsCompositionConverter::readMapXml( QgsLayoutItemMap *layoutItem, const QD
860861

861862
bool QgsCompositionConverter::readScaleBarXml( QgsLayoutItemScaleBar *layoutItem, const QDomElement &itemElem, const QgsProject *project )
862863
{
864+
Q_UNUSED( project );
863865
restoreGeneralComposeItemProperties( layoutItem, itemElem );
864866

865867
layoutItem->setHeight( itemElem.attribute( QStringLiteral( "height" ), QStringLiteral( "5.0" ) ).toDouble() );

‎src/core/layout/qgslayoutmanager.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "qgslayoutundostack.h"
2121
#include "qgsprintlayout.h"
2222
#include "qgsreport.h"
23+
#include "qgscompositionconverter.h"
2324

2425
QgsLayoutManager::QgsLayoutManager( QgsProject *project )
2526
: QObject( project )
@@ -188,6 +189,17 @@ bool QgsLayoutManager::readXml( const QDomElement &element, const QDomDocument &
188189
QDomNodeList composerNodes = element.elementsByTagName( QStringLiteral( "Composer" ) );
189190
for ( int i = 0; i < composerNodes.size(); ++i )
190191
{
192+
// Convert compositions to layouts
193+
QDomNodeList compositionNodes = composerNodes.at( i ).toElement().elementsByTagName( QStringLiteral( "Composition" ) );
194+
for ( int j = 0; j < compositionNodes.size(); ++j )
195+
{
196+
QgsLayout *l = nullptr;
197+
l = QgsCompositionConverter::createLayoutFromCompositionXml( compositionNodes.at( j ).toElement(), mProject );
198+
if ( l )
199+
addLayout( l );
200+
}
201+
202+
// legacy import
191203
QString legacyTitle = composerNodes.at( i ).toElement().attribute( QStringLiteral( "title" ) );
192204
QgsComposition *c = createCompositionFromXml( composerNodes.at( i ).toElement(), doc );
193205
if ( !c )

‎src/core/qgsmultirenderchecker.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,8 @@ bool QgsLayoutChecker::testLayout( QString &checkedReport, int page, int pixelDi
207207
_outputImage.setDotsPerMeterX( 96 / 25.4 * 1000 );
208208
_outputImage.setDotsPerMeterY( 96 / 25.4 * 1000 );
209209
QPainter _p( &_outputImage );
210-
mLayout->exporter().renderPage( &_p, page );
210+
QgsLayoutExporter _exporter( mLayout );
211+
_exporter.renderPage( &_p, page );
211212
_p.end();
212213

213214
if ( ! QDir( controlImagePath() ).exists() )

‎tests/src/core/testqgscompositionconverter.cpp

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "qgssettings.h"
2828

2929

30+
#include "qgslayoutpagecollection.h"
3031
#include "qgslayoutitemlabel.h"
3132
#include "qgslayoutitemshape.h"
3233
#include "qgslayoutitempicture.h"
@@ -100,11 +101,8 @@ class TestQgsCompositionConverter: public QObject
100101

101102
private:
102103

103-
104104
void checkRenderedImage( QgsLayout *layout, const QString testName, const int pageNumber = 0 );
105105

106-
void exportLayout( QgsLayout *layout, const QString testName );
107-
108106
QDomElement loadComposition( const QString name );
109107

110108
QString mReport;
@@ -405,36 +403,6 @@ void TestQgsCompositionConverter::checkRenderedImage( QgsLayout *layout, const Q
405403
QVERIFY( checker.testLayout( mReport, pageNumber ) );
406404
}
407405

408-
void TestQgsCompositionConverter::exportLayout( QgsLayout *layout, const QString testName )
409-
{
410-
// Save the template for inspection
411-
QTemporaryFile tmpTemplate( QString( "%1_converted-XXXXXX.qpt" ).arg( testName ) );
412-
tmpTemplate.setAutoRemove( false );
413-
tmpTemplate.open();
414-
tmpTemplate.close();
415-
QgsReadWriteContext context;
416-
layout->saveAsTemplate( tmpTemplate.fileName(), context );
417-
qDebug() << tmpTemplate.fileName();
418-
419-
for ( int i = 0; i < layout->pageCollection()->pageCount(); ++i )
420-
{
421-
QgsLayoutItemPage *page = layout->pageCollection()->pages().at( i );
422-
QSize size;
423-
QgsLayoutSize pageSize = page->sizeWithUnits();
424-
size.setHeight( pageSize.height() * 3.77 );
425-
size.setWidth( pageSize.width() * 3.77 );
426-
427-
QImage outputImage( size, QImage::Format_RGB32 );
428-
outputImage.setDotsPerMeterX( 96 / 25.4 * 1000 );
429-
outputImage.setDotsPerMeterY( 96 / 25.4 * 1000 );
430-
QPainter p( &outputImage );
431-
layout->exporter().renderPage( &p, i );
432-
p.end();
433-
434-
QString renderedFilePath = tmpTemplate.fileName() + QString( "_%1_.png" ).arg( i );
435-
outputImage.save( renderedFilePath, "PNG" );
436-
}
437-
}
438406

439407
QDomElement TestQgsCompositionConverter::loadComposition( const QString name )
440408
{

0 commit comments

Comments
 (0)
Please sign in to comment.