@@ -31,7 +31,6 @@ QgsComposerLegend::QgsComposerLegend( QgsComposition* composition )
31
31
: QgsComposerItem( composition )
32
32
, mComposerMap( 0 )
33
33
{
34
- mLegendRenderer = new QgsLegendRenderer ( &mLegendModel );
35
34
36
35
adjustBoxSize ();
37
36
@@ -45,20 +44,18 @@ QgsComposerLegend::QgsComposerLegend(): QgsComposerItem( 0 ), mComposerMap( 0 )
45
44
46
45
QgsComposerLegend::~QgsComposerLegend ()
47
46
{
48
- delete mLegendRenderer ;
49
47
}
50
48
51
49
void QgsComposerLegend::paint ( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget )
52
50
{
53
51
Q_UNUSED ( itemStyle );
54
52
Q_UNUSED ( pWidget );
55
53
54
+
56
55
if ( mComposition )
57
- mLegendRenderer -> setUseAdvancedEffects ( mComposition ->useAdvancedEffects () );
56
+ mSettings . setUseAdvancedEffects ( mComposition ->useAdvancedEffects () );
58
57
if ( mComposerMap )
59
- mLegendRenderer ->setMmPerMapUnit ( mComposerMap ->mapUnitsToMM () );
60
-
61
- mLegendRenderer ->setLegendSize ( rect ().size () );
58
+ mSettings .setMmPerMapUnit ( mComposerMap ->mapUnitsToMM () );
62
59
63
60
if ( !painter )
64
61
return ;
@@ -69,7 +66,9 @@ void QgsComposerLegend::paint( QPainter* painter, const QStyleOptionGraphicsItem
69
66
painter->setRenderHint ( QPainter::Antialiasing, true );
70
67
painter->setPen ( QPen ( QColor ( 0 , 0 , 0 ) ) );
71
68
72
- mLegendRenderer ->drawLegend ( painter );
69
+ QgsLegendRenderer legendRenderer ( &mLegendModel , mSettings );
70
+ legendRenderer.setLegendSize ( rect ().size () );
71
+ legendRenderer.drawLegend ( painter );
73
72
74
73
painter->restore ();
75
74
@@ -83,71 +82,73 @@ void QgsComposerLegend::paint( QPainter* painter, const QStyleOptionGraphicsItem
83
82
84
83
QSizeF QgsComposerLegend::paintAndDetermineSize ( QPainter* painter )
85
84
{
86
- QSizeF size = mLegendRenderer ->minimumSize ();
85
+ QgsLegendRenderer legendRenderer ( &mLegendModel , mSettings );
86
+ QSizeF size = legendRenderer.minimumSize ();
87
87
if ( !painter )
88
- mLegendRenderer -> drawLegend ( painter );
88
+ legendRenderer. drawLegend ( painter );
89
89
return size;
90
90
}
91
91
92
92
93
93
void QgsComposerLegend::adjustBoxSize ()
94
94
{
95
- QSizeF size = mLegendRenderer ->minimumSize ();
95
+ QgsLegendRenderer legendRenderer ( &mLegendModel , mSettings );
96
+ QSizeF size = legendRenderer.minimumSize ();
96
97
QgsDebugMsg ( QString ( " width = %1 height = %2" ).arg ( size.width () ).arg ( size.height () ) );
97
98
if ( size.isValid () )
98
99
{
99
100
setSceneRect ( QRectF ( pos ().x (), pos ().y (), size.width (), size.height () ) );
100
101
}
101
102
}
102
103
103
- void QgsComposerLegend::setTitle ( const QString& t ) { mLegendRenderer -> setTitle ( t ); }
104
- QString QgsComposerLegend::title () const { return mLegendRenderer -> title (); }
104
+ void QgsComposerLegend::setTitle ( const QString& t ) { mSettings . setTitle ( t ); }
105
+ QString QgsComposerLegend::title () const { return mSettings . title (); }
105
106
106
- Qt::AlignmentFlag QgsComposerLegend::titleAlignment () const { return mLegendRenderer -> titleAlignment (); }
107
- void QgsComposerLegend::setTitleAlignment ( Qt::AlignmentFlag alignment ) { mLegendRenderer -> setTitleAlignment ( alignment ); }
107
+ Qt::AlignmentFlag QgsComposerLegend::titleAlignment () const { return mSettings . titleAlignment (); }
108
+ void QgsComposerLegend::setTitleAlignment ( Qt::AlignmentFlag alignment ) { mSettings . setTitleAlignment ( alignment ); }
108
109
109
- QgsComposerLegendStyle& QgsComposerLegend::rstyle ( QgsComposerLegendStyle::Style s ) { return mLegendRenderer -> rstyle ( s ); }
110
- QgsComposerLegendStyle QgsComposerLegend::style ( QgsComposerLegendStyle::Style s ) const { return mLegendRenderer -> style ( s ); }
111
- void QgsComposerLegend::setStyle ( QgsComposerLegendStyle::Style s, const QgsComposerLegendStyle style ) { mLegendRenderer -> setStyle ( s, style ); }
110
+ QgsComposerLegendStyle& QgsComposerLegend::rstyle ( QgsComposerLegendStyle::Style s ) { return mSettings . rstyle ( s ); }
111
+ QgsComposerLegendStyle QgsComposerLegend::style ( QgsComposerLegendStyle::Style s ) const { return mSettings . style ( s ); }
112
+ void QgsComposerLegend::setStyle ( QgsComposerLegendStyle::Style s, const QgsComposerLegendStyle style ) { mSettings . setStyle ( s, style ); }
112
113
113
- QFont QgsComposerLegend::styleFont ( QgsComposerLegendStyle::Style s ) const { return mLegendRenderer -> style ( s ).font (); }
114
+ QFont QgsComposerLegend::styleFont ( QgsComposerLegendStyle::Style s ) const { return mSettings . style ( s ).font (); }
114
115
void QgsComposerLegend::setStyleFont ( QgsComposerLegendStyle::Style s, const QFont& f ) { rstyle ( s ).setFont ( f ); }
115
116
116
117
void QgsComposerLegend::setStyleMargin ( QgsComposerLegendStyle::Style s, double margin ) { rstyle ( s ).setMargin ( margin ); }
117
118
void QgsComposerLegend::setStyleMargin ( QgsComposerLegendStyle::Style s, QgsComposerLegendStyle::Side side, double margin ) { rstyle ( s ).setMargin ( side, margin ); }
118
119
119
- double QgsComposerLegend::boxSpace () const { return mLegendRenderer -> boxSpace (); }
120
- void QgsComposerLegend::setBoxSpace ( double s ) { mLegendRenderer -> setBoxSpace ( s ); }
120
+ double QgsComposerLegend::boxSpace () const { return mSettings . boxSpace (); }
121
+ void QgsComposerLegend::setBoxSpace ( double s ) { mSettings . setBoxSpace ( s ); }
121
122
122
- double QgsComposerLegend::columnSpace () const { return mLegendRenderer -> columnSpace (); }
123
- void QgsComposerLegend::setColumnSpace ( double s ) { mLegendRenderer -> setColumnSpace ( s ); }
123
+ double QgsComposerLegend::columnSpace () const { return mSettings . columnSpace (); }
124
+ void QgsComposerLegend::setColumnSpace ( double s ) { mSettings . setColumnSpace ( s ); }
124
125
125
- QColor QgsComposerLegend::fontColor () const { return mLegendRenderer -> fontColor (); }
126
- void QgsComposerLegend::setFontColor ( const QColor& c ) { mLegendRenderer -> setFontColor ( c ); }
126
+ QColor QgsComposerLegend::fontColor () const { return mSettings . fontColor (); }
127
+ void QgsComposerLegend::setFontColor ( const QColor& c ) { mSettings . setFontColor ( c ); }
127
128
128
- double QgsComposerLegend::symbolWidth () const { return mLegendRenderer -> symbolSize ().width (); }
129
- void QgsComposerLegend::setSymbolWidth ( double w ) { mLegendRenderer -> setSymbolSize ( QSizeF ( w, mLegendRenderer -> symbolSize ().height () ) ); }
129
+ double QgsComposerLegend::symbolWidth () const { return mSettings . symbolSize ().width (); }
130
+ void QgsComposerLegend::setSymbolWidth ( double w ) { mSettings . setSymbolSize ( QSizeF ( w, mSettings . symbolSize ().height () ) ); }
130
131
131
- double QgsComposerLegend::symbolHeight () const { return mLegendRenderer -> symbolSize ().height (); }
132
- void QgsComposerLegend::setSymbolHeight ( double h ) { mLegendRenderer -> setSymbolSize ( QSizeF ( mLegendRenderer -> symbolSize ().width (), h ) ); }
132
+ double QgsComposerLegend::symbolHeight () const { return mSettings . symbolSize ().height (); }
133
+ void QgsComposerLegend::setSymbolHeight ( double h ) { mSettings . setSymbolSize ( QSizeF ( mSettings . symbolSize ().width (), h ) ); }
133
134
134
- double QgsComposerLegend::wmsLegendWidth () const { return mLegendRenderer -> wmsLegendSize ().width (); }
135
- void QgsComposerLegend::setWmsLegendWidth ( double w ) { mLegendRenderer -> setWmsLegendSize ( QSizeF ( w, mLegendRenderer -> wmsLegendSize ().height () ) ); }
135
+ double QgsComposerLegend::wmsLegendWidth () const { return mSettings . wmsLegendSize ().width (); }
136
+ void QgsComposerLegend::setWmsLegendWidth ( double w ) { mSettings . setWmsLegendSize ( QSizeF ( w, mSettings . wmsLegendSize ().height () ) ); }
136
137
137
- double QgsComposerLegend::wmsLegendHeight () const {return mLegendRenderer -> wmsLegendSize ().height (); }
138
- void QgsComposerLegend::setWmsLegendHeight ( double h ) { mLegendRenderer -> setWmsLegendSize ( QSizeF ( mLegendRenderer -> wmsLegendSize ().width (), h ) ); }
138
+ double QgsComposerLegend::wmsLegendHeight () const {return mSettings . wmsLegendSize ().height (); }
139
+ void QgsComposerLegend::setWmsLegendHeight ( double h ) { mSettings . setWmsLegendSize ( QSizeF ( mSettings . wmsLegendSize ().width (), h ) ); }
139
140
140
- void QgsComposerLegend::setWrapChar ( const QString& t ) { mLegendRenderer -> setWrapChar ( t ); }
141
- QString QgsComposerLegend::wrapChar () const {return mLegendRenderer -> wrapChar (); }
141
+ void QgsComposerLegend::setWrapChar ( const QString& t ) { mSettings . setWrapChar ( t ); }
142
+ QString QgsComposerLegend::wrapChar () const {return mSettings . wrapChar (); }
142
143
143
- int QgsComposerLegend::columnCount () const { return mLegendRenderer -> columnCount (); }
144
- void QgsComposerLegend::setColumnCount ( int c ) { mLegendRenderer -> setColumnCount ( c ); }
144
+ int QgsComposerLegend::columnCount () const { return mSettings . columnCount (); }
145
+ void QgsComposerLegend::setColumnCount ( int c ) { mSettings . setColumnCount ( c ); }
145
146
146
- int QgsComposerLegend::splitLayer () const { return mLegendRenderer -> splitLayer (); }
147
- void QgsComposerLegend::setSplitLayer ( bool s ) { mLegendRenderer -> setSplitLayer ( s ); }
147
+ int QgsComposerLegend::splitLayer () const { return mSettings . splitLayer (); }
148
+ void QgsComposerLegend::setSplitLayer ( bool s ) { mSettings . setSplitLayer ( s ); }
148
149
149
- int QgsComposerLegend::equalColumnWidth () const { return mLegendRenderer -> equalColumnWidth (); }
150
- void QgsComposerLegend::setEqualColumnWidth ( bool s ) { mLegendRenderer -> setEqualColumnWidth ( s ); }
150
+ int QgsComposerLegend::equalColumnWidth () const { return mSettings . equalColumnWidth (); }
151
+ void QgsComposerLegend::setEqualColumnWidth ( bool s ) { mSettings . setEqualColumnWidth ( s ); }
151
152
152
153
153
154
void QgsComposerLegend::synchronizeWithModel ()
@@ -176,21 +177,21 @@ bool QgsComposerLegend::writeXML( QDomElement& elem, QDomDocument & doc ) const
176
177
elem.appendChild ( composerLegendElem );
177
178
178
179
// write general properties
179
- composerLegendElem.setAttribute ( " title" , mLegendRenderer -> title () );
180
- composerLegendElem.setAttribute ( " titleAlignment" , QString::number (( int ) mLegendRenderer -> titleAlignment () ) );
181
- composerLegendElem.setAttribute ( " columnCount" , QString::number ( mLegendRenderer -> columnCount () ) );
182
- composerLegendElem.setAttribute ( " splitLayer" , QString::number ( mLegendRenderer -> splitLayer () ) );
183
- composerLegendElem.setAttribute ( " equalColumnWidth" , QString::number ( mLegendRenderer -> equalColumnWidth () ) );
184
-
185
- composerLegendElem.setAttribute ( " boxSpace" , QString::number ( mLegendRenderer -> boxSpace () ) );
186
- composerLegendElem.setAttribute ( " columnSpace" , QString::number ( mLegendRenderer -> columnSpace () ) );
187
-
188
- composerLegendElem.setAttribute ( " symbolWidth" , QString::number ( mLegendRenderer -> symbolSize ().width () ) );
189
- composerLegendElem.setAttribute ( " symbolHeight" , QString::number ( mLegendRenderer -> symbolSize ().height () ) );
190
- composerLegendElem.setAttribute ( " wmsLegendWidth" , QString::number ( mLegendRenderer -> wmsLegendSize ().width () ) );
191
- composerLegendElem.setAttribute ( " wmsLegendHeight" , QString::number ( mLegendRenderer -> wmsLegendSize ().height () ) );
192
- composerLegendElem.setAttribute ( " wrapChar" , mLegendRenderer -> wrapChar () );
193
- composerLegendElem.setAttribute ( " fontColor" , mLegendRenderer -> fontColor ().name () );
180
+ composerLegendElem.setAttribute ( " title" , mSettings . title () );
181
+ composerLegendElem.setAttribute ( " titleAlignment" , QString::number (( int ) mSettings . titleAlignment () ) );
182
+ composerLegendElem.setAttribute ( " columnCount" , QString::number ( mSettings . columnCount () ) );
183
+ composerLegendElem.setAttribute ( " splitLayer" , QString::number ( mSettings . splitLayer () ) );
184
+ composerLegendElem.setAttribute ( " equalColumnWidth" , QString::number ( mSettings . equalColumnWidth () ) );
185
+
186
+ composerLegendElem.setAttribute ( " boxSpace" , QString::number ( mSettings . boxSpace () ) );
187
+ composerLegendElem.setAttribute ( " columnSpace" , QString::number ( mSettings . columnSpace () ) );
188
+
189
+ composerLegendElem.setAttribute ( " symbolWidth" , QString::number ( mSettings . symbolSize ().width () ) );
190
+ composerLegendElem.setAttribute ( " symbolHeight" , QString::number ( mSettings . symbolSize ().height () ) );
191
+ composerLegendElem.setAttribute ( " wmsLegendWidth" , QString::number ( mSettings . wmsLegendSize ().width () ) );
192
+ composerLegendElem.setAttribute ( " wmsLegendHeight" , QString::number ( mSettings . wmsLegendSize ().height () ) );
193
+ composerLegendElem.setAttribute ( " wrapChar" , mSettings . wrapChar () );
194
+ composerLegendElem.setAttribute ( " fontColor" , mSettings . fontColor ().name () );
194
195
195
196
if ( mComposerMap )
196
197
{
@@ -220,16 +221,16 @@ bool QgsComposerLegend::readXML( const QDomElement& itemElem, const QDomDocument
220
221
}
221
222
222
223
// read general properties
223
- mLegendRenderer -> setTitle ( itemElem.attribute ( " title" ) );
224
+ mSettings . setTitle ( itemElem.attribute ( " title" ) );
224
225
if ( !itemElem.attribute ( " titleAlignment" ).isEmpty () )
225
226
{
226
- mLegendRenderer -> setTitleAlignment (( Qt::AlignmentFlag )itemElem.attribute ( " titleAlignment" ).toInt () );
227
+ mSettings . setTitleAlignment (( Qt::AlignmentFlag )itemElem.attribute ( " titleAlignment" ).toInt () );
227
228
}
228
229
int colCount = itemElem.attribute ( " columnCount" , " 1" ).toInt ();
229
230
if ( colCount < 1 ) colCount = 1 ;
230
- mLegendRenderer -> setColumnCount ( colCount );
231
- mLegendRenderer -> setSplitLayer ( itemElem.attribute ( " splitLayer" , " 0" ).toInt () == 1 );
232
- mLegendRenderer -> setEqualColumnWidth ( itemElem.attribute ( " equalColumnWidth" , " 0" ).toInt () == 1 );
231
+ mSettings . setColumnCount ( colCount );
232
+ mSettings . setSplitLayer ( itemElem.attribute ( " splitLayer" , " 0" ).toInt () == 1 );
233
+ mSettings . setEqualColumnWidth ( itemElem.attribute ( " equalColumnWidth" , " 0" ).toInt () == 1 );
233
234
234
235
QDomNodeList stylesNodeList = itemElem.elementsByTagName ( " styles" );
235
236
if ( stylesNodeList.size () > 0 )
@@ -255,16 +256,16 @@ bool QgsComposerLegend::readXML( const QDomElement& itemElem, const QDomDocument
255
256
// font color
256
257
QColor fontClr;
257
258
fontClr.setNamedColor ( itemElem.attribute ( " fontColor" , " #000000" ) );
258
- mLegendRenderer -> setFontColor ( fontClr );
259
+ mSettings . setFontColor ( fontClr );
259
260
260
261
// spaces
261
- mLegendRenderer -> setBoxSpace ( itemElem.attribute ( " boxSpace" , " 2.0" ).toDouble () );
262
- mLegendRenderer -> setColumnSpace ( itemElem.attribute ( " columnSpace" , " 2.0" ).toDouble () );
262
+ mSettings . setBoxSpace ( itemElem.attribute ( " boxSpace" , " 2.0" ).toDouble () );
263
+ mSettings . setColumnSpace ( itemElem.attribute ( " columnSpace" , " 2.0" ).toDouble () );
263
264
264
- mLegendRenderer -> setSymbolSize ( QSizeF ( itemElem.attribute ( " symbolWidth" , " 7.0" ).toDouble (), itemElem.attribute ( " symbolHeight" , " 14.0" ).toDouble () ) );
265
- mLegendRenderer -> setWmsLegendSize ( QSizeF ( itemElem.attribute ( " wmsLegendWidth" , " 50" ).toDouble (), itemElem.attribute ( " wmsLegendHeight" , " 25" ).toDouble () ) );
265
+ mSettings . setSymbolSize ( QSizeF ( itemElem.attribute ( " symbolWidth" , " 7.0" ).toDouble (), itemElem.attribute ( " symbolHeight" , " 14.0" ).toDouble () ) );
266
+ mSettings . setWmsLegendSize ( QSizeF ( itemElem.attribute ( " wmsLegendWidth" , " 50" ).toDouble (), itemElem.attribute ( " wmsLegendHeight" , " 25" ).toDouble () ) );
266
267
267
- mLegendRenderer -> setWrapChar ( itemElem.attribute ( " wrapChar" ) );
268
+ mSettings . setWrapChar ( itemElem.attribute ( " wrapChar" ) );
268
269
269
270
// composer map
270
271
if ( !itemElem.attribute ( " map" ).isEmpty () )
0 commit comments