diff --git a/src/app/qgsvectorlayerproperties.cpp b/src/app/qgsvectorlayerproperties.cpp index 8dccf02a01c3..95e9a3faecfe 100755 --- a/src/app/qgsvectorlayerproperties.cpp +++ b/src/app/qgsvectorlayerproperties.cpp @@ -900,6 +900,8 @@ void QgsVectorLayerProperties::apply() ds.diagramOrientation = QgsDiagramSettings::Left; } + ds.barWidth = mBarWidthSpinBox->value(); + if ( mFixedSizeCheckBox->isChecked() ) { QgsSingleCategoryDiagramRenderer* dr = new QgsSingleCategoryDiagramRenderer(); @@ -1748,9 +1750,10 @@ void QgsVectorLayerProperties::initDiagramTab() case QgsDiagramSettings::Down: mOrientationDownButton->setChecked( true ); break; - } + mBarWidthSpinBox->setValue( settingList.at( 0 ).barWidth ); + mIncreaseSmallDiagramsCheckBox->setChecked( settingList.at( 0 ).minimumSize != 0 ); mIncreaseMinimumSizeSpinBox->setValue( settingList.at( 0 ).minimumSize ); diff --git a/src/core/qgsdiagram.cpp b/src/core/qgsdiagram.cpp index a281be2c2de4..60dcb5636638 100644 --- a/src/core/qgsdiagram.cpp +++ b/src/core/qgsdiagram.cpp @@ -351,7 +351,8 @@ void QgsHistogramDiagram::renderDiagram( const QgsAttributeMap& att, QgsRenderCo values.push_back( currentVal ); } - double currentOffset = 0; + double currentOffset = 0 - ( values.size() * s.barWidth ) / 2; + double scaledWidth = sizePainterUnits( s.barWidth, s, c ); double baseX = position.x(); double baseY = position.y(); @@ -360,8 +361,6 @@ void QgsHistogramDiagram::renderDiagram( const QgsAttributeMap& att, QgsRenderCo setPenWidth( mPen, s, c ); p->setPen( mPen ); - p->drawPoint( baseX, baseY ); - QList::const_iterator valIt = values.constBegin(); QList< QColor >::const_iterator colIt = s.categoryColors.constBegin(); for ( ; valIt != values.constEnd(); ++valIt, ++colIt ) @@ -374,22 +373,22 @@ void QgsHistogramDiagram::renderDiagram( const QgsAttributeMap& att, QgsRenderCo switch ( s.diagramOrientation ) { case QgsDiagramSettings::Up: - p->drawRect( baseX + currentOffset, baseY, 10, 0 - length ); + p->drawRect( baseX + currentOffset, baseY, scaledWidth, 0 - length ); break; case QgsDiagramSettings::Down: - p->drawRect( baseX + currentOffset, baseY, 10, length ); + p->drawRect( baseX + currentOffset, baseY, scaledWidth, length ); break; case QgsDiagramSettings::Right: - p->drawRect( baseX, baseY + currentOffset, 0 - length, 10 ); + p->drawRect( baseX, baseY + currentOffset, 0 - length, scaledWidth ); break; case QgsDiagramSettings::Left: - p->drawRect( baseX, baseY + currentOffset, length, 10 ); + p->drawRect( baseX, baseY + currentOffset, length, scaledWidth ); break; } - currentOffset += 10; + currentOffset += scaledWidth; } } diff --git a/src/core/qgsdiagramrendererv2.cpp b/src/core/qgsdiagramrendererv2.cpp index f7c6cca8793c..40e56a419572 100644 --- a/src/core/qgsdiagramrendererv2.cpp +++ b/src/core/qgsdiagramrendererv2.cpp @@ -93,6 +93,8 @@ void QgsDiagramSettings::readXML( const QDomElement& elem ) diagramOrientation = Up; } + barWidth = elem.attribute( "barWidth" ).toDouble(); + minimumSize = elem.attribute( "minimumSize" ).toDouble(); //colors @@ -170,6 +172,7 @@ void QgsDiagramSettings::writeXML( QDomElement& rendererElem, QDomDocument& doc break; } + categoryElem.setAttribute( "barWidth", QString::number( barWidth ) ); categoryElem.setAttribute( "minimumSize", QString::number( minimumSize ) ); QString colors; diff --git a/src/core/qgsdiagramrendererv2.h b/src/core/qgsdiagramrendererv2.h index 3acdddf1d5a0..2dd132e405d9 100644 --- a/src/core/qgsdiagramrendererv2.h +++ b/src/core/qgsdiagramrendererv2.h @@ -123,6 +123,7 @@ struct CORE_EXPORT QgsDiagramSettings double penWidth; LabelPlacementMethod labelPlacementMethod; DiagramOrientation diagramOrientation; + double barWidth; //scale range (-1 if no lower / upper bound ) double minScaleDenominator; diff --git a/src/ui/qgsvectorlayerpropertiesbase.ui b/src/ui/qgsvectorlayerpropertiesbase.ui index fef3b270d0e1..a27f9758ca1a 100644 --- a/src/ui/qgsvectorlayerpropertiesbase.ui +++ b/src/ui/qgsvectorlayerpropertiesbase.ui @@ -1353,6 +1353,20 @@ + + + + + + Bar width + + + + + + + +