@@ -299,6 +299,19 @@ bool QgsComposition::writeXML( QDomElement& composerElem, QDomDocument& doc )
299
299
compositionElem.setAttribute ( " snapGridOffsetX" , QString::number ( mSnapGridOffsetX ) );
300
300
compositionElem.setAttribute ( " snapGridOffsetY" , QString::number ( mSnapGridOffsetY ) );
301
301
302
+ // custom snap lines
303
+ QList< QGraphicsLineItem* >::const_iterator snapLineIt = mSnapLines .constBegin ();
304
+ for ( ; snapLineIt != mSnapLines .constEnd (); ++snapLineIt )
305
+ {
306
+ QDomElement snapLineElem = doc.createElement ( " SnapLine" );
307
+ QLineF line = ( *snapLineIt )->line ();
308
+ snapLineElem.setAttribute ( " x1" , QString::number ( line.x1 () ) );
309
+ snapLineElem.setAttribute ( " y1" , QString::number ( line.y1 () ) );
310
+ snapLineElem.setAttribute ( " x2" , QString::number ( line.x2 () ) );
311
+ snapLineElem.setAttribute ( " y2" , QString::number ( line.y2 () ) );
312
+ compositionElem.appendChild ( snapLineElem );
313
+ }
314
+
302
315
compositionElem.setAttribute ( " printResolution" , mPrintResolution );
303
316
compositionElem.setAttribute ( " printAsRaster" , mPrintAsRaster );
304
317
@@ -368,6 +381,19 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
368
381
mSnapGridOffsetX = compositionElem.attribute ( " snapGridOffsetX" ).toDouble ();
369
382
mSnapGridOffsetY = compositionElem.attribute ( " snapGridOffsetY" ).toDouble ();
370
383
384
+ // custom snap lines
385
+ QDomNodeList snapLineNodes = compositionElem.elementsByTagName ( " SnapLine" );
386
+ for ( int i = 0 ; i < snapLineNodes.size (); ++i )
387
+ {
388
+ QDomElement snapLineElem = snapLineNodes.at ( i ).toElement ();
389
+ QGraphicsLineItem* snapItem = addSnapLine ();
390
+ double x1 = snapLineElem.attribute ( " x1" ).toDouble ();
391
+ double y1 = snapLineElem.attribute ( " y1" ).toDouble ();
392
+ double x2 = snapLineElem.attribute ( " x2" ).toDouble ();
393
+ double y2 = snapLineElem.attribute ( " y2" ).toDouble ();
394
+ snapItem->setLine ( x1, y1 , x2, y2 );
395
+ }
396
+
371
397
mAlignmentSnap = compositionElem.attribute ( " alignmentSnap" , " 1" ).toInt () == 0 ? false : true ;
372
398
mAlignmentSnapTolerance = compositionElem.attribute ( " alignmentSnapTolerance" , " 2.0" ).toDouble ();
373
399
@@ -1063,10 +1089,17 @@ QPointF QgsComposition::alignPos( const QPointF& pos, const QgsComposerItem* exc
1063
1089
return result;
1064
1090
}
1065
1091
1066
- void QgsComposition::addSnapLine ( QGraphicsLineItem* line )
1092
+ QGraphicsLineItem* QgsComposition::addSnapLine ()
1067
1093
{
1068
- addItem ( line );
1069
- mSnapLines .push_back ( line );
1094
+ QGraphicsLineItem* item = new QGraphicsLineItem ();
1095
+ QPen linePen ( Qt::SolidLine );
1096
+ linePen.setColor ( Qt::red );
1097
+ linePen.setWidthF ( 0.5 );
1098
+ item->setPen ( linePen );
1099
+ item->setZValue ( 100 );
1100
+ addItem ( item );
1101
+ mSnapLines .push_back ( item );
1102
+ return item;
1070
1103
}
1071
1104
1072
1105
void QgsComposition::removeSnapLine ( QGraphicsLineItem* line )
0 commit comments