Skip to content

Commit 64885d9

Browse files
committedSep 25, 2013
Improve visual appearance of composer grid by making sure it is always drawn using a 1 pixel width cosmetic pen
Remove options for composer pen width
1 parent cb1090f commit 64885d9

File tree

5 files changed

+53
-64
lines changed

5 files changed

+53
-64
lines changed
 

‎src/app/composer/qgscompositionwidget.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,6 @@ QgsCompositionWidget::QgsCompositionWidget( QWidget* parent, QgsComposition* c )
8484
mOffsetYSpinBox->setValue( mComposition->snapGridOffsetY() );
8585

8686

87-
//grid pen width
88-
mPenWidthSpinBox->setValue( mComposition->gridPen().widthF() );
89-
9087
//grid pen color
9188
mGridColorButton->setColor( mComposition->gridPen().color() );
9289
mGridColorButton->setColorDialogTitle( tr( "Select grid color" ) );
@@ -564,16 +561,6 @@ void QgsCompositionWidget::on_mGridStyleComboBox_currentIndexChanged( const QStr
564561
}
565562
}
566563

567-
void QgsCompositionWidget::on_mPenWidthSpinBox_valueChanged( double d )
568-
{
569-
if ( mComposition )
570-
{
571-
QPen pen = mComposition->gridPen();
572-
pen.setWidthF( d );
573-
mComposition->setGridPen( pen );
574-
}
575-
}
576-
577564
void QgsCompositionWidget::on_mSelectionToleranceSpinBox_valueChanged( double d )
578565
{
579566
if ( mComposition )
@@ -612,7 +599,6 @@ void QgsCompositionWidget::blockSignals( bool block )
612599
mGridResolutionSpinBox->blockSignals( block );
613600
mOffsetXSpinBox->blockSignals( block );
614601
mOffsetYSpinBox->blockSignals( block );
615-
mPenWidthSpinBox->blockSignals( block );
616602
mGridColorButton->blockSignals( block );
617603
mGridStyleComboBox->blockSignals( block );
618604
mSelectionToleranceSpinBox->blockSignals( block );

‎src/app/composer/qgscompositionwidget.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ class QgsCompositionWidget: public QWidget, private Ui::QgsCompositionWidgetBase
5959
void on_mOffsetYSpinBox_valueChanged( double d );
6060
void on_mGridColorButton_colorChanged( const QColor &newColor );
6161
void on_mGridStyleComboBox_currentIndexChanged( const QString& text );
62-
void on_mPenWidthSpinBox_valueChanged( double d );
6362
void on_mSelectionToleranceSpinBox_valueChanged( double d );
6463
void on_mAlignmentSnapGroupCheckBox_toggled( bool state );
6564
void on_mAlignmentToleranceSpinBox_valueChanged( double d );

‎src/core/composer/qgscomposition.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,6 +1491,8 @@ void QgsComposition::setSnapGridOffsetY( double offset )
14911491
void QgsComposition::setGridPen( const QPen& p )
14921492
{
14931493
mGridPen = p;
1494+
//make sure grid is drawn using a zero-width cosmetic pen
1495+
mGridPen.setWidthF( 0 );
14941496
updatePaperItems();
14951497
saveSettings();
14961498
}
@@ -1515,16 +1517,14 @@ void QgsComposition::loadSettings()
15151517

15161518
QString gridStyleString;
15171519
int red, green, blue;
1518-
double penWidth;
15191520

15201521
gridStyleString = s.value( "/qgis/composerGridStyle", "Dots" ).toString();
1521-
penWidth = s.value( "/qgis/composerGridWidth", 0.5 ).toDouble();
15221522
red = s.value( "/qgis/composerGridRed", 0 ).toInt();
15231523
green = s.value( "/qgis/composerGridGreen", 0 ).toInt();
15241524
blue = s.value( "/qgis/composerGridBlue", 0 ).toInt();
15251525

15261526
mGridPen.setColor( QColor( red, green, blue ) );
1527-
mGridPen.setWidthF( penWidth );
1527+
mGridPen.setWidthF( 0 );
15281528

15291529
if ( gridStyleString == "Dots" )
15301530
{
@@ -1546,7 +1546,6 @@ void QgsComposition::saveSettings()
15461546
{
15471547
//store grid appearance settings
15481548
QSettings s;
1549-
s.setValue( "/qgis/composerGridWidth", mGridPen.widthF() );
15501549
s.setValue( "/qgis/composerGridRed", mGridPen.color().red() );
15511550
s.setValue( "/qgis/composerGridGreen", mGridPen.color().green() );
15521551
s.setValue( "/qgis/composerGridBlue", mGridPen.color().blue() );

‎src/core/composer/qgspaperitem.cpp

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ void QgsPaperItem::paint( QPainter* painter, const QStyleOptionGraphicsItem* ite
5151
drawBackground( painter );
5252

5353
//draw grid
54-
5554
if ( mComposition )
5655
{
5756
if ( mComposition->snapToGridEnabled() && mComposition->plotStyle() == QgsComposition::Preview
@@ -63,13 +62,15 @@ void QgsPaperItem::paint( QPainter* painter, const QStyleOptionGraphicsItem* ite
6362
double currentYCoord;
6463
double minYCoord = mComposition->snapGridOffsetY() - gridMultiplyY * mComposition->snapGridResolution();
6564

65+
painter->save();
66+
//turn of antialiasing so grid is nice and sharp
67+
painter->setRenderHint( QPainter::Antialiasing, false );
68+
6669
if ( mComposition->gridStyle() == QgsComposition::Solid )
6770
{
6871
painter->setPen( mComposition->gridPen() );
6972

7073
//draw vertical lines
71-
72-
7374
for ( ; currentXCoord <= rect().width(); currentXCoord += mComposition->snapGridResolution() )
7475
{
7576
painter->drawLine( QPointF( currentXCoord, 0 ), QPointF( currentXCoord, rect().height() ) );
@@ -87,26 +88,41 @@ void QgsPaperItem::paint( QPainter* painter, const QStyleOptionGraphicsItem* ite
8788
QPen gridPen = mComposition->gridPen();
8889
painter->setPen( gridPen );
8990
painter->setBrush( QBrush( gridPen.color() ) );
90-
double halfCrossLength = mComposition->snapGridResolution() / 6;
91+
double halfCrossLength = 1;
92+
if ( mComposition->gridStyle() == QgsComposition::Dots )
93+
{
94+
//dots are actually drawn as tiny crosses a few pixels across
95+
//check QGraphicsView to get current transform
96+
if ( scene() )
97+
{
98+
QList<QGraphicsView*> viewList = scene()->views();
99+
if ( viewList.size() > 0 )
100+
{
101+
QGraphicsView* currentView = viewList.at( 0 );
102+
if ( currentView->isVisible() )
103+
{
104+
//set halfCrossLength to equivalent of 1 pixel
105+
halfCrossLength = 1 / currentView->transform().m11();
106+
}
107+
}
108+
}
109+
}
110+
else if ( mComposition->gridStyle() == QgsComposition::Crosses )
111+
{
112+
halfCrossLength = mComposition->snapGridResolution() / 6;
113+
}
91114

92115
for ( ; currentXCoord <= rect().width(); currentXCoord += mComposition->snapGridResolution() )
93116
{
94117
currentYCoord = minYCoord;
95118
for ( ; currentYCoord <= rect().height(); currentYCoord += mComposition->snapGridResolution() )
96119
{
97-
if ( mComposition->gridStyle() == QgsComposition::Dots )
98-
{
99-
QRectF pieRect( currentXCoord - gridPen.widthF() / 2, currentYCoord - gridPen.widthF() / 2, gridPen.widthF(), gridPen.widthF() );
100-
painter->drawChord( pieRect, 0, 5760 );
101-
}
102-
else if ( mComposition->gridStyle() == QgsComposition::Crosses )
103-
{
104-
painter->drawLine( QPointF( currentXCoord - halfCrossLength, currentYCoord ), QPointF( currentXCoord + halfCrossLength, currentYCoord ) );
105-
painter->drawLine( QPointF( currentXCoord, currentYCoord - halfCrossLength ), QPointF( currentXCoord, currentYCoord + halfCrossLength ) );
106-
}
120+
painter->drawLine( QPointF( currentXCoord - halfCrossLength, currentYCoord ), QPointF( currentXCoord + halfCrossLength, currentYCoord ) );
121+
painter->drawLine( QPointF( currentXCoord, currentYCoord - halfCrossLength ), QPointF( currentXCoord, currentYCoord + halfCrossLength ) );
107122
}
108123
}
109124
}
125+
painter->restore();
110126
}
111127
}
112128
}

‎src/ui/qgscompositionwidgetbase.ui

Lines changed: 20 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,16 @@
2323
<property name="spacing">
2424
<number>0</number>
2525
</property>
26-
<property name="margin">
26+
<property name="leftMargin">
27+
<number>0</number>
28+
</property>
29+
<property name="topMargin">
30+
<number>0</number>
31+
</property>
32+
<property name="rightMargin">
33+
<number>0</number>
34+
</property>
35+
<property name="bottomMargin">
2736
<number>0</number>
2837
</property>
2938
<item>
@@ -361,26 +370,6 @@
361370
</layout>
362371
</item>
363372
<item row="2" column="0">
364-
<widget class="QLabel" name="label_5">
365-
<property name="text">
366-
<string>Pen width</string>
367-
</property>
368-
<property name="wordWrap">
369-
<bool>true</bool>
370-
</property>
371-
</widget>
372-
</item>
373-
<item row="2" column="1">
374-
<widget class="QDoubleSpinBox" name="mPenWidthSpinBox">
375-
<property name="prefix">
376-
<string/>
377-
</property>
378-
<property name="suffix">
379-
<string> mm</string>
380-
</property>
381-
</widget>
382-
</item>
383-
<item row="3" column="0">
384373
<widget class="QLabel" name="mGridStyleLabel">
385374
<property name="text">
386375
<string>Grid style</string>
@@ -393,10 +382,17 @@
393382
</property>
394383
</widget>
395384
</item>
396-
<item row="3" column="1">
385+
<item row="2" column="1">
397386
<widget class="QComboBox" name="mGridStyleComboBox"/>
398387
</item>
399-
<item row="5" column="0">
388+
<item row="3" column="1">
389+
<widget class="QgsColorButton" name="mGridColorButton">
390+
<property name="text">
391+
<string>Color...</string>
392+
</property>
393+
</widget>
394+
</item>
395+
<item row="4" column="0">
400396
<widget class="QLabel" name="label_4">
401397
<property name="text">
402398
<string>Selection tolerance</string>
@@ -406,7 +402,7 @@
406402
</property>
407403
</widget>
408404
</item>
409-
<item row="5" column="1">
405+
<item row="4" column="1">
410406
<widget class="QDoubleSpinBox" name="mSelectionToleranceSpinBox">
411407
<property name="prefix">
412408
<string/>
@@ -416,13 +412,6 @@
416412
</property>
417413
</widget>
418414
</item>
419-
<item row="4" column="1">
420-
<widget class="QgsColorButton" name="mGridColorButton">
421-
<property name="text">
422-
<string>Color...</string>
423-
</property>
424-
</widget>
425-
</item>
426415
</layout>
427416
</widget>
428417
</item>

0 commit comments

Comments
 (0)
Please sign in to comment.