@@ -86,7 +86,6 @@ void QgsComposition::init()
86
86
mPageStyleSymbol = nullptr ;
87
87
mPrintAsRaster = false ;
88
88
mGenerateWorldFile = false ;
89
- mWorldFileMap = nullptr ;
90
89
mUseAdvancedEffects = true ;
91
90
mSnapToGrid = false ;
92
91
mGridVisible = false ;
@@ -164,7 +163,6 @@ QgsComposition::QgsComposition()
164
163
, mPageStyleSymbol( 0 )
165
164
, mPrintAsRaster( false )
166
165
, mGenerateWorldFile( false )
167
- , mWorldFileMap( 0 )
168
166
, mUseAdvancedEffects( true )
169
167
, mSnapToGrid( false )
170
168
, mGridVisible( false )
@@ -851,6 +849,17 @@ void QgsComposition::setPrintResolution( const int dpi )
851
849
QgsProject::instance ()->setDirty ( true );
852
850
}
853
851
852
+ QgsComposerMap* QgsComposition::worldFileMap () const
853
+ {
854
+ return dynamic_cast < QgsComposerMap* >( const_cast < QgsComposerItem* >( getComposerItemByUuid ( mWorldFileMapId ) ) );
855
+ }
856
+
857
+ void QgsComposition::setWorldFileMap ( QgsComposerMap* map )
858
+ {
859
+ mWorldFileMapId = map ? map->uuid () : QString ();
860
+ QgsProject::instance ()->setDirty ( true );
861
+ }
862
+
854
863
void QgsComposition::setUseAdvancedEffects ( const bool effectsEnabled )
855
864
{
856
865
mUseAdvancedEffects = effectsEnabled;
@@ -933,10 +942,7 @@ bool QgsComposition::writeXML( QDomElement& composerElem, QDomDocument& doc )
933
942
compositionElem.setAttribute ( " printAsRaster" , mPrintAsRaster );
934
943
935
944
compositionElem.setAttribute ( " generateWorldFile" , mGenerateWorldFile ? 1 : 0 );
936
- if ( mGenerateWorldFile && mWorldFileMap )
937
- {
938
- compositionElem.setAttribute ( " worldFileMap" , mWorldFileMap ->id () );
939
- }
945
+ compositionElem.setAttribute ( " worldFileMap" , mWorldFileMapId );
940
946
941
947
compositionElem.setAttribute ( " alignmentSnap" , mAlignmentSnap ? 1 : 0 );
942
948
compositionElem.setAttribute ( " guidesVisible" , mGuidesVisible ? 1 : 0 );
@@ -1047,6 +1053,7 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
1047
1053
mPrintResolution = compositionElem.attribute ( " printResolution" , " 300" ).toInt ();
1048
1054
1049
1055
mGenerateWorldFile = compositionElem.attribute ( " generateWorldFile" , " 0" ).toInt () == 1 ? true : false ;
1056
+ mWorldFileMapId = compositionElem.attribute ( " worldFileMap" );
1050
1057
1051
1058
// data defined properties
1052
1059
QgsComposerUtils::readDataDefinedPropertyMap ( compositionElem, &mDataDefinedNames , &mDataDefinedProperties );
@@ -3105,12 +3112,13 @@ QGraphicsView *QgsComposition::graphicsView() const
3105
3112
3106
3113
void QgsComposition::computeWorldFileParameters ( double & a, double & b, double & c, double & d, double & e, double & f ) const
3107
3114
{
3108
- if ( !mWorldFileMap )
3115
+ const QgsComposerMap* map = worldFileMap ();
3116
+ if ( !map )
3109
3117
{
3110
3118
return ;
3111
3119
}
3112
3120
3113
- int pageNumber = mWorldFileMap ->page () - 1 ;
3121
+ int pageNumber = map ->page () - 1 ;
3114
3122
double pageY = pageNumber * ( mPageHeight + mSpaceBetweenPages );
3115
3123
QRectF pageRect ( 0 , pageY, mPageWidth , mPageHeight );
3116
3124
computeWorldFileParameters ( pageRect, a, b, c, d, e, f );
@@ -3119,19 +3127,19 @@ void QgsComposition::computeWorldFileParameters( double& a, double& b, double& c
3119
3127
void QgsComposition::computeWorldFileParameters ( const QRectF& exportRegion, double & a, double & b, double & c, double & d, double & e, double & f ) const
3120
3128
{
3121
3129
// World file parameters : affine transformation parameters from pixel coordinates to map coordinates
3122
-
3123
- if ( !mWorldFileMap )
3130
+ QgsComposerMap* map = worldFileMap ();
3131
+ if ( !map )
3124
3132
{
3125
3133
return ;
3126
3134
}
3127
3135
3128
3136
double destinationHeight = exportRegion.height ();
3129
3137
double destinationWidth = exportRegion.width ();
3130
3138
3131
- QRectF mapItemSceneRect = mWorldFileMap ->mapRectToScene ( mWorldFileMap ->rect () );
3132
- QgsRectangle mapExtent = *mWorldFileMap ->currentMapExtent ();
3139
+ QRectF mapItemSceneRect = map ->mapRectToScene ( map ->rect () );
3140
+ QgsRectangle mapExtent = *map ->currentMapExtent ();
3133
3141
3134
- double alpha = mWorldFileMap ->mapRotation () / 180 * M_PI;
3142
+ double alpha = map ->mapRotation () / 180 * M_PI;
3135
3143
3136
3144
double xRatio = mapExtent.width () / mapItemSceneRect.width ();
3137
3145
double yRatio = mapExtent.height () / mapItemSceneRect.height ();
@@ -3140,7 +3148,7 @@ void QgsComposition::computeWorldFileParameters( const QRectF& exportRegion, dou
3140
3148
double yCenter = mapExtent.center ().y ();
3141
3149
3142
3150
// get the extent (in map units) for the region
3143
- QPointF mapItemPos = mWorldFileMap ->pos ();
3151
+ QPointF mapItemPos = map ->pos ();
3144
3152
// adjust item position so it is relative to export region
3145
3153
mapItemPos.rx () -= exportRegion.left ();
3146
3154
mapItemPos.ry () -= exportRegion.top ();
0 commit comments