Skip to content

Commit 34f6e37

Browse files
committed
[FEATURE][layouts] Add new grid frame style "Zebra (Nautical)",
which shows nautical-style blocks in the grid corners when a margin is set for the grid.
1 parent 11258c0 commit 34f6e37

File tree

4 files changed

+25
-13
lines changed

4 files changed

+25
-13
lines changed

python/core/auto_generated/layout/qgslayoutitemmapgrid.sip.in

+2-1
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ An individual grid which is drawn above the map content in a
203203
ExteriorTicks,
204204
InteriorExteriorTicks,
205205
LineBorder,
206-
LineBorderNautical
206+
LineBorderNautical,
207+
ZebraNautical,
207208
};
208209

209210
enum FrameSideFlag

src/app/layout/qgslayoutmapgridwidget.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,14 @@ QgsLayoutMapGridWidget::QgsLayoutMapGridWidget( QgsLayoutItemMapGrid *mapGrid, Q
3737

3838
mFrameStyleComboBox->addItem( tr( "No Frame" ), QgsLayoutItemMapGrid::NoFrame );
3939
mFrameStyleComboBox->addItem( tr( "Zebra" ), QgsLayoutItemMapGrid::Zebra );
40+
mFrameStyleComboBox->addItem( tr( "Zebra (Nautical)" ), QgsLayoutItemMapGrid::ZebraNautical );
4041
mFrameStyleComboBox->addItem( tr( "Interior Ticks" ), QgsLayoutItemMapGrid::InteriorTicks );
4142
mFrameStyleComboBox->addItem( tr( "Exterior Ticks" ), QgsLayoutItemMapGrid::ExteriorTicks );
4243
mFrameStyleComboBox->addItem( tr( "Interior and Exterior Ticks" ), QgsLayoutItemMapGrid::InteriorExteriorTicks );
4344
mFrameStyleComboBox->addItem( tr( "Line Border" ), QgsLayoutItemMapGrid::LineBorder );
4445
mFrameStyleComboBox->addItem( tr( "Line Border (Nautical)" ), QgsLayoutItemMapGrid::LineBorderNautical );
4546

47+
mGridFrameMarginSpinBox->setShowClearButton( true );
4648
mGridFrameMarginSpinBox->setClearValue( 0 );
4749

4850
connect( mIntervalXSpinBox, &QgsDoubleSpinBox::editingFinished, this, &QgsLayoutMapGridWidget::mIntervalXSpinBox_editingFinished );
@@ -537,6 +539,7 @@ void QgsLayoutMapGridWidget::setGridItems()
537539
switch ( gridFrameStyle )
538540
{
539541
case QgsLayoutItemMapGrid::Zebra:
542+
case QgsLayoutItemMapGrid::ZebraNautical:
540543
toggleFrameControls( true, true, true );
541544
break;
542545
case QgsLayoutItemMapGrid::InteriorTicks:
@@ -854,6 +857,7 @@ void QgsLayoutMapGridWidget::mFrameStyleComboBox_currentIndexChanged( int )
854857
switch ( style )
855858
{
856859
case QgsLayoutItemMapGrid::Zebra:
860+
case QgsLayoutItemMapGrid::ZebraNautical:
857861
toggleFrameControls( true, true, true );
858862
break;
859863
case QgsLayoutItemMapGrid::InteriorTicks:

src/core/layout/qgslayoutitemmapgrid.cpp

+17-11
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,7 @@ void QgsLayoutItemMapGrid::drawGridFrameBorder( QPainter *p, const QMap< double,
775775
switch ( mGridFrameStyle )
776776
{
777777
case QgsLayoutItemMapGrid::Zebra:
778+
case QgsLayoutItemMapGrid::ZebraNautical:
778779
drawGridFrameZebraBorder( p, borderPos, border, extension );
779780
break;
780781
case QgsLayoutItemMapGrid::InteriorTicks:
@@ -871,13 +872,17 @@ void QgsLayoutItemMapGrid::drawGridFrameZebraBorder( QPainter *p, const QMap< do
871872
currentCoord = posIt.key();
872873
color1 = !color1;
873874
}
874-
//draw corners
875-
width = height = ( mGridFrameWidth + mGridFrameMargin ) ;
876-
p->setBrush( QBrush( mGridFrameFillColor1 ) );
877-
p->drawRect( QRectF( -( mGridFrameWidth + mGridFrameMargin ), -( mGridFrameWidth + mGridFrameMargin ), width, height ) );
878-
p->drawRect( QRectF( mMap->rect().width(), -( mGridFrameWidth + mGridFrameMargin ), width, height ) );
879-
p->drawRect( QRectF( -( mGridFrameWidth + mGridFrameMargin ), mMap->rect().height(), width, height ) );
880-
p->drawRect( QRectF( mMap->rect().width(), mMap->rect().height(), width, height ) );
875+
876+
if ( mGridFrameStyle == ZebraNautical )
877+
{
878+
//draw corners
879+
width = height = ( mGridFrameWidth + mGridFrameMargin ) ;
880+
p->setBrush( QBrush( mGridFrameFillColor1 ) );
881+
p->drawRect( QRectF( -( mGridFrameWidth + mGridFrameMargin ), -( mGridFrameWidth + mGridFrameMargin ), width, height ) );
882+
p->drawRect( QRectF( mMap->rect().width(), -( mGridFrameWidth + mGridFrameMargin ), width, height ) );
883+
p->drawRect( QRectF( -( mGridFrameWidth + mGridFrameMargin ), mMap->rect().height(), width, height ) );
884+
p->drawRect( QRectF( mMap->rect().width(), mMap->rect().height(), width, height ) );
885+
}
881886
}
882887

883888
void QgsLayoutItemMapGrid::drawGridFrameTicks( QPainter *p, const QMap< double, double > &borderPos, QgsLayoutItemMapGrid::BorderSide border, double *extension ) const
@@ -1067,6 +1072,7 @@ void QgsLayoutItemMapGrid::drawCoordinateAnnotation( QPainter *p, QPointF pos, c
10671072
break;
10681073

10691074
case QgsLayoutItemMapGrid::Zebra:
1075+
case QgsLayoutItemMapGrid::ZebraNautical:
10701076
case QgsLayoutItemMapGrid::LineBorder:
10711077
case QgsLayoutItemMapGrid::LineBorderNautical:
10721078
gridFrameDistance += ( mGridFramePenThickness / 2.0 );
@@ -1091,7 +1097,7 @@ void QgsLayoutItemMapGrid::drawCoordinateAnnotation( QPainter *p, QPointF pos, c
10911097

10921098
if ( mLeftGridAnnotationPosition == QgsLayoutItemMapGrid::InsideMapFrame )
10931099
{
1094-
if ( mGridFrameStyle == QgsLayoutItemMapGrid::Zebra || mGridFrameStyle == QgsLayoutItemMapGrid::ExteriorTicks )
1100+
if ( mGridFrameStyle == QgsLayoutItemMapGrid::Zebra || mGridFrameStyle == QgsLayoutItemMapGrid::ZebraNautical || mGridFrameStyle == QgsLayoutItemMapGrid::ExteriorTicks )
10951101
{
10961102
gridFrameDistance = 0;
10971103
}
@@ -1163,7 +1169,7 @@ void QgsLayoutItemMapGrid::drawCoordinateAnnotation( QPainter *p, QPointF pos, c
11631169

11641170
if ( mRightGridAnnotationPosition == QgsLayoutItemMapGrid::InsideMapFrame )
11651171
{
1166-
if ( mGridFrameStyle == QgsLayoutItemMapGrid::Zebra || mGridFrameStyle == QgsLayoutItemMapGrid::ExteriorTicks )
1172+
if ( mGridFrameStyle == QgsLayoutItemMapGrid::Zebra || mGridFrameStyle == QgsLayoutItemMapGrid::ZebraNautical || mGridFrameStyle == QgsLayoutItemMapGrid::ExteriorTicks )
11671173
{
11681174
gridFrameDistance = 0;
11691175
}
@@ -1235,7 +1241,7 @@ void QgsLayoutItemMapGrid::drawCoordinateAnnotation( QPainter *p, QPointF pos, c
12351241

12361242
if ( mBottomGridAnnotationPosition == QgsLayoutItemMapGrid::InsideMapFrame )
12371243
{
1238-
if ( mGridFrameStyle == QgsLayoutItemMapGrid::Zebra || mGridFrameStyle == QgsLayoutItemMapGrid::ExteriorTicks )
1244+
if ( mGridFrameStyle == QgsLayoutItemMapGrid::Zebra || mGridFrameStyle == QgsLayoutItemMapGrid::ZebraNautical || mGridFrameStyle == QgsLayoutItemMapGrid::ExteriorTicks )
12391245
{
12401246
gridFrameDistance = 0;
12411247
}
@@ -1311,7 +1317,7 @@ void QgsLayoutItemMapGrid::drawCoordinateAnnotation( QPainter *p, QPointF pos, c
13111317

13121318
if ( mTopGridAnnotationPosition == QgsLayoutItemMapGrid::InsideMapFrame )
13131319
{
1314-
if ( mGridFrameStyle == QgsLayoutItemMapGrid::Zebra || mGridFrameStyle == QgsLayoutItemMapGrid::ExteriorTicks )
1320+
if ( mGridFrameStyle == QgsLayoutItemMapGrid::Zebra || mGridFrameStyle == QgsLayoutItemMapGrid::ZebraNautical || mGridFrameStyle == QgsLayoutItemMapGrid::ExteriorTicks )
13151321
{
13161322
gridFrameDistance = 0;
13171323
}

src/core/layout/qgslayoutitemmapgrid.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ class CORE_EXPORT QgsLayoutItemMapGrid : public QgsLayoutItemMapItem
233233
ExteriorTicks, //!< Tick markers drawn outside map frame
234234
InteriorExteriorTicks, //!< Tick markers drawn both inside and outside the map frame
235235
LineBorder, //!< Simple solid line frame
236-
LineBorderNautical //!< Simple solid line frame, with nautical style diagonals on corners
236+
LineBorderNautical, //!< Simple solid line frame, with nautical style diagonals on corners
237+
ZebraNautical, //!< Black/white pattern, with nautical style diagonals on corners
237238
};
238239

239240
/**

0 commit comments

Comments
 (0)