3030#include < QDomDocument>
3131#include < QDomElement>
3232#include < QGraphicsRectItem>
33+ #include < QPainter>
3334#include < QSettings>
3435
3536QgsComposition::QgsComposition ( QgsMapRenderer* mapRenderer ):
36- QGraphicsScene( 0 ), mMapRenderer( mapRenderer ), mPlotStyle( QgsComposition::Preview ), mPageWidth( 297 ), mPageHeight( 210 ), mPrintAsRaster( false ), mSelectionTolerance( 0.0 ),
37+ QGraphicsScene( 0 ), mMapRenderer( mapRenderer ), mPlotStyle( QgsComposition::Preview ), mPageWidth( 297 ), mPageHeight( 210 ), mSpaceBetweenPages( 10 ), mPrintAsRaster( false ), mSelectionTolerance( 0.0 ),
3738 mSnapToGrid( false ), mSnapGridResolution( 0.0 ), mSnapGridOffsetX( 0.0 ), mSnapGridOffsetY( 0.0 ), mActiveCommand( 0 )
3839{
3940 setBackgroundBrush ( Qt::gray );
@@ -44,7 +45,7 @@ QgsComposition::QgsComposition( QgsMapRenderer* mapRenderer ):
4445}
4546
4647QgsComposition::QgsComposition ():
47- QGraphicsScene( 0 ), mMapRenderer( 0 ), mPlotStyle( QgsComposition::Preview ), mPageWidth( 297 ), mPageHeight( 210 ), mPrintAsRaster( false ),
48+ QGraphicsScene( 0 ), mMapRenderer( 0 ), mPlotStyle( QgsComposition::Preview ), mPageWidth( 297 ), mPageHeight( 210 ), mSpaceBetweenPages( 10 ), mPrintAsRaster( false ),
4849 mSelectionTolerance( 0.0 ), mSnapToGrid( false ), mSnapGridResolution( 0.0 ), mSnapGridOffsetX( 0.0 ), mSnapGridOffsetY( 0.0 ), mActiveCommand( 0 )
4950{
5051 loadSettings ();
@@ -1213,7 +1214,7 @@ void QgsComposition::addPaperItem()
12131214{
12141215 double paperHeight = this ->paperHeight ();
12151216 double paperWidth = this ->paperWidth ();
1216- double currentY = paperHeight * mPages .size ();
1217+ double currentY = paperHeight * mPages .size () + mPages . size () * mSpaceBetweenPages ; // add 10mm visible space between pages
12171218 QgsPaperItem* paperItem = new QgsPaperItem ( 0 , currentY, paperWidth, paperHeight, this ); // default size A4
12181219 paperItem->setBrush ( Qt::white );
12191220 addItem ( paperItem );
@@ -1229,3 +1230,26 @@ void QgsComposition::removePaperItems()
12291230 }
12301231 mPages .clear ();
12311232}
1233+
1234+ void QgsComposition::renderPage ( QPainter* p, int page )
1235+ {
1236+ if ( mPages .size () <= page )
1237+ {
1238+ return ;
1239+ }
1240+
1241+ QgsPaperItem* paperItem = mPages [page];
1242+ if ( !paperItem )
1243+ {
1244+ return ;
1245+ }
1246+
1247+ QPaintDevice* paintDevice = p->device ();
1248+ if ( !paintDevice )
1249+ {
1250+ return ;
1251+ }
1252+
1253+ QRectF paperRect = QRectF ( paperItem->transform ().dx (), paperItem->transform ().dy (), paperItem->rect ().width (), paperItem->rect ().height () );
1254+ render ( p, QRectF ( 0 , 0 , paintDevice->width (), paintDevice->height () ), paperRect );
1255+ }
0 commit comments