QGIS/tests/src/core/testqgscomposermapgrid.cpp
Nyall Dawson a87d352bd7 Run clang-tidy modernize-use-default-member-init to move member
initialization to headers (c++11 style)
2017-09-27 05:02:34 +10:00

707 lines
36 KiB
C++

/***************************************************************************
testqgscomposermapgrid.cpp
----------------------
begin : August 2014
copyright : (C) 2014 by Nyall Dawosn, Marco Hugentobler
email : nyall dot dawson at gmail dot com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "qgsapplication.h"
#include "qgscomposition.h"
#include "qgsmultirenderchecker.h"
#include "qgscomposermap.h"
#include "qgscomposermapgrid.h"
#include "qgsfontutils.h"
#include "qgsproject.h"
#include <QObject>
#include "qgstest.h"
class TestQgsComposerMapGrid : public QObject
{
Q_OBJECT
public:
TestQgsComposerMapGrid();
private slots:
void initTestCase();// will be called before the first testfunction is executed.
void cleanupTestCase();// will be called after the last testfunction was executed.
void init();// will be called before each testfunction is executed.
void cleanup();// will be called after every testfunction.
void grid(); //test if grid and grid annotation works
void reprojected(); //test if reprojected grid works
void crossGrid(); //test if grid "cross" mode works
void markerGrid(); //test if grid "marker" mode works
void frameOnly(); //test if grid "frame/annotation" mode works
void zebraStyle(); //test zebra map border style
void zebraStyleSides(); //test zebra border on certain sides
void frameDivisions(); //test filtering frame divisions
void annotationFilter(); //test filtering annotations
void interiorTicks(); //test interior tick mode
void interiorTicksAnnotated(); //test interior tick mode with annotations
void exteriorTicks(); //test exterior tick mode
void exteriorTicksAnnotated(); //test exterior tick mode with annotations
void interiorExteriorTicks(); //test interior & exterior tick mode
void interiorExteriorTicksAnnotated(); //test interior & exterior tick mode with annotations
void lineBorder(); //test line border frame mode
void lineBorderAnnotated(); //test line border frame with annotations
void annotationFormats(); //various tests for annotation formats
void descendingAnnotations(); //test descending annotation direction
private:
QgsComposition *mComposition = nullptr;
QgsComposerMap *mComposerMap = nullptr;
QgsMapSettings *mMapSettings = nullptr;
QString mReport;
};
TestQgsComposerMapGrid::TestQgsComposerMapGrid()
{
}
void TestQgsComposerMapGrid::initTestCase()
{
QgsApplication::init();
QgsApplication::initQgis();
mMapSettings = new QgsMapSettings();
mReport = QStringLiteral( "<h1>Composer Map Grid Tests</h1>\n" );
}
void TestQgsComposerMapGrid::cleanupTestCase()
{
delete mMapSettings;
QString myReportFile = QDir::tempPath() + "/qgistest.html";
QFile myFile( myReportFile );
if ( myFile.open( QIODevice::WriteOnly | QIODevice::Append ) )
{
QTextStream myQTextStream( &myFile );
myQTextStream << mReport;
myFile.close();
}
QgsApplication::exitQgis();
}
void TestQgsComposerMapGrid::init()
{
QgsCoordinateReferenceSystem crs = QgsCoordinateReferenceSystem( 32633 );
mMapSettings->setDestinationCrs( crs );
mComposition = new QgsComposition( QgsProject::instance() );
mComposition->setPaperSize( 297, 210 ); //A4 landscape
mComposerMap = new QgsComposerMap( mComposition, 20, 20, 200, 100 );
mComposerMap->setFrameEnabled( true );
mComposerMap->setBackgroundColor( QColor( 150, 100, 100 ) );
mComposerMap->grid()->setAnnotationFont( QgsFontUtils::getStandardTestFont() );
mComposerMap->grid()->setAnnotationPrecision( 0 );
mComposerMap->grid()->setIntervalX( 2000 );
mComposerMap->grid()->setIntervalY( 2000 );
mComposerMap->grid()->setGridLineWidth( 0.5 );
mComposerMap->grid()->setGridLineColor( QColor( 0, 0, 0 ) );
mComposerMap->updateBoundingRect();
mComposition->addComposerMap( mComposerMap );
}
void TestQgsComposerMapGrid::cleanup()
{
delete mComposition;
}
void TestQgsComposerMapGrid::grid()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setAnnotationEnabled( true );
mComposerMap->grid()->setGridLineColor( QColor( 0, 255, 0 ) );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::HideAll, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::HideAll, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->grid()->setAnnotationDirection( QgsComposerMapGrid::Horizontal, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationDirection( QgsComposerMapGrid::Horizontal, QgsComposerMapGrid::Bottom );
mComposerMap->grid()->setAnnotationFontColor( QColor( 255, 0, 0, 150 ) );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_Overlay );
mComposerMap->updateBoundingRect();
qWarning() << "grid annotation font: " << mComposerMap->grid()->annotationFont().toString() << " exactMatch:" << mComposerMap->grid()->annotationFont().exactMatch();
QgsCompositionChecker checker( QStringLiteral( "composermap_grid" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
mComposerMap->grid()->setEnabled( false );
mComposerMap->grid()->setAnnotationEnabled( false );
QVERIFY( testResult );
}
void TestQgsComposerMapGrid::reprojected()
{
mComposerMap->setNewExtent( QgsRectangle( -243577.565, 2939084.773, 1215622.435, 3668684.773 ) );
QgsCoordinateReferenceSystem geographic = QgsCoordinateReferenceSystem( 4326 );
mComposerMap->grid()->setCrs( geographic );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setIntervalX( 1 );
mComposerMap->grid()->setIntervalY( 1 );
mComposerMap->grid()->setAnnotationEnabled( false );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_SourceOver );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::ExteriorTicks );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->setFrameEnabled( false );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_gridreprojected" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
mComposerMap->grid()->setEnabled( false );
mComposerMap->grid()->setCrs( mMapSettings->destinationCrs() );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
mComposerMap->setFrameEnabled( true );
QVERIFY( testResult );
}
void TestQgsComposerMapGrid::crossGrid()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::Cross );
mComposerMap->grid()->setCrossLength( 2.0 );
mComposerMap->grid()->setAnnotationEnabled( false );
mComposerMap->grid()->setGridLineColor( QColor( 0, 255, 0 ) );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_SourceOver );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_crossgrid" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::Solid );
mComposerMap->grid()->setEnabled( false );
mComposerMap->grid()->setAnnotationEnabled( false );
QVERIFY( testResult );
}
void TestQgsComposerMapGrid::markerGrid()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::Markers );
mComposerMap->grid()->setAnnotationEnabled( false );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_SourceOver );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_markergrid" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::Solid );
mComposerMap->grid()->setEnabled( false );
mComposerMap->grid()->setAnnotationEnabled( false );
QVERIFY( testResult );
}
void TestQgsComposerMapGrid::frameOnly()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->grid()->setAnnotationEnabled( false );
//set a frame for testing
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::Zebra );
mComposerMap->grid()->setFrameWidth( 2.0 );
mComposerMap->grid()->setFramePenSize( 0.5 );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_SourceOver );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_gridframeonly" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::Solid );
mComposerMap->grid()->setEnabled( false );
mComposerMap->grid()->setAnnotationEnabled( false );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
QVERIFY( testResult );
}
void TestQgsComposerMapGrid::zebraStyle()
{
mComposerMap->setNewExtent( QgsRectangle( 785462.375, 3341423.125, 789262.375, 3343323.125 ) ); //zoom in
mComposerMap->grid()->setAnnotationFontColor( QColor( 0, 0, 0, 0 ) );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_SourceOver );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::Zebra );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( QColor( 255, 100, 0, 200 ) );
mComposerMap->grid()->setFrameFillColor1( QColor( 50, 90, 50, 100 ) );
mComposerMap->grid()->setFrameFillColor2( QColor( 200, 220, 100, 60 ) );
mComposerMap->grid()->setEnabled( true );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_zebrastyle" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
}
void TestQgsComposerMapGrid::zebraStyleSides()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setAnnotationFontColor( QColor( 0, 0, 0, 0 ) );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_SourceOver );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::Zebra );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setFrameFillColor1( Qt::black );
mComposerMap->grid()->setFrameFillColor2( Qt::white );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameLeft, true );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameRight, false );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameTop, false );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameBottom, false );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_zebrastyle_left" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameTop, true );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker2( QStringLiteral( "composermap_zebrastyle_lefttop" ), mComposition );
checker2.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult2 = checker2.testComposition( mReport, 0, 0 );
QVERIFY( testResult2 );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameRight, true );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker3( QStringLiteral( "composermap_zebrastyle_lefttopright" ), mComposition );
checker3.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult3 = checker3.testComposition( mReport, 0, 0 );
QVERIFY( testResult3 );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameBottom, true );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
}
void TestQgsComposerMapGrid::frameDivisions()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
//rotate map, so we mix latitude and longitude coordinates on every map side
mComposerMap->setMapRotation( 45.0 );
//setup defaults
mComposerMap->grid()->setAnnotationFontColor( QColor( 0, 0, 0, 0 ) );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_SourceOver );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::Zebra );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setFrameFillColor1( Qt::black );
mComposerMap->grid()->setFrameFillColor2( Qt::white );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameLeft, true );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameRight, true );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameTop, true );
mComposerMap->grid()->setFrameSideFlag( QgsComposerMapGrid::FrameBottom, true );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_rotatedframe" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setFrameDivisions( QgsComposerMapGrid::LatitudeOnly, QgsComposerMapGrid::Left );
mComposerMap->grid()->setFrameDivisions( QgsComposerMapGrid::LongitudeOnly, QgsComposerMapGrid::Right );
mComposerMap->grid()->setFrameDivisions( QgsComposerMapGrid::LatitudeOnly, QgsComposerMapGrid::Top );
mComposerMap->grid()->setFrameDivisions( QgsComposerMapGrid::LongitudeOnly, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker2( QStringLiteral( "composermap_framedivisions" ), mComposition );
checker2.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
testResult = checker2.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setFrameDivisions( QgsComposerMapGrid::ShowAll, QgsComposerMapGrid::Left );
mComposerMap->grid()->setFrameDivisions( QgsComposerMapGrid::ShowAll, QgsComposerMapGrid::Right );
mComposerMap->grid()->setFrameDivisions( QgsComposerMapGrid::ShowAll, QgsComposerMapGrid::Top );
mComposerMap->grid()->setFrameDivisions( QgsComposerMapGrid::ShowAll, QgsComposerMapGrid::Bottom );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
mComposerMap->setMapRotation( 0.0 );
}
void TestQgsComposerMapGrid::annotationFilter()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
//rotate map, so we mix latitude and longitude coordinates on every map side
mComposerMap->setMapRotation( 45.0 );
//setup defaults
mComposerMap->grid()->setAnnotationFontColor( QColor( 0, 0, 0, 0 ) );
mComposerMap->grid()->setBlendMode( QPainter::CompositionMode_SourceOver );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setAnnotationEnabled( true );
mComposerMap->grid()->setAnnotationFontColor( Qt::black );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_rotatedannotations" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::HideAll, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::LongitudeOnly, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::LatitudeOnly, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::LongitudeOnly, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker2( QStringLiteral( "composermap_filteredannotations" ), mComposition );
checker2.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
testResult = checker2.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setAnnotationEnabled( false );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::ShowAll, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::ShowAll, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::ShowAll, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationDisplay( QgsComposerMapGrid::ShowAll, QgsComposerMapGrid::Bottom );
mComposerMap->setMapRotation( 0.0 );
}
void TestQgsComposerMapGrid::interiorTicks()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::InteriorTicks );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_interiorticks" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
}
void TestQgsComposerMapGrid::interiorTicksAnnotated()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::InteriorTicks );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->grid()->setAnnotationEnabled( true );
mComposerMap->grid()->setAnnotationFontColor( Qt::black );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_interiorticks_annotated" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker2( QStringLiteral( "composermap_interiorticks_annotated2" ), mComposition );
checker2.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult2 = checker2.testComposition( mReport, 0, 0 );
QVERIFY( testResult2 );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
mComposerMap->grid()->setAnnotationEnabled( false );
}
void TestQgsComposerMapGrid::exteriorTicks()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::ExteriorTicks );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_exteriorticks" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
}
void TestQgsComposerMapGrid::exteriorTicksAnnotated()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::ExteriorTicks );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->grid()->setAnnotationEnabled( true );
mComposerMap->grid()->setAnnotationFontColor( Qt::black );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_exteriorticks_annotated" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker2( QStringLiteral( "composermap_exteriorticks_annotated2" ), mComposition );
checker2.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult2 = checker2.testComposition( mReport, 0, 0 );
QVERIFY( testResult2 );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
mComposerMap->grid()->setAnnotationEnabled( false );
}
void TestQgsComposerMapGrid::interiorExteriorTicks()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::InteriorExteriorTicks );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_interiorexteriorticks" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
}
void TestQgsComposerMapGrid::interiorExteriorTicksAnnotated()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::InteriorExteriorTicks );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->grid()->setAnnotationEnabled( true );
mComposerMap->grid()->setAnnotationFontColor( Qt::black );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_interiorexteriorticks_annotated" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker2( QStringLiteral( "composermap_interiorexteriorticks_annotated2" ), mComposition );
checker2.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult2 = checker2.testComposition( mReport, 0, 0 );
QVERIFY( testResult2 );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
mComposerMap->grid()->setAnnotationEnabled( false );
}
void TestQgsComposerMapGrid::lineBorder()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::LineBorder );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_lineborder" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
}
void TestQgsComposerMapGrid::lineBorderAnnotated()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::LineBorder );
mComposerMap->grid()->setFrameWidth( 10 );
mComposerMap->grid()->setFramePenSize( 1 );
mComposerMap->grid()->setFramePenColor( Qt::black );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->grid()->setAnnotationEnabled( true );
mComposerMap->grid()->setAnnotationFontColor( Qt::black );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_lineborder_annotated" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker2( QStringLiteral( "composermap_lineborder_annotated2" ), mComposition );
checker2.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult2 = checker2.testComposition( mReport, 0, 0 );
QVERIFY( testResult2 );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
mComposerMap->grid()->setAnnotationEnabled( false );
}
void TestQgsComposerMapGrid::annotationFormats()
{
//create grids in geographic and projected coordinates
QgsCoordinateReferenceSystem projectedCrs;
projectedCrs.createFromSrid( 3994 );
QgsCoordinateReferenceSystem geographicCrs;
geographicCrs.createFromSrid( 4326 );
QgsComposerMapGrid gridGeographic( QStringLiteral( "geographic grid" ), mComposerMap );
gridGeographic.setCrs( geographicCrs );
QgsComposerMapGrid gridProjected( QStringLiteral( "projected grid" ), mComposerMap );
gridProjected.setCrs( projectedCrs );
//decimal degrees format
gridGeographic.setAnnotationFormat( QgsComposerMapGrid::DecimalWithSuffix );
gridGeographic.setAnnotationPrecision( 1 );
gridProjected.setAnnotationFormat( QgsComposerMapGrid::DecimalWithSuffix );
gridProjected.setAnnotationPrecision( 1 );
QgsExpressionContext expressionContext = gridGeographic.createExpressionContext();
//normal e/w
QCOMPARE( gridGeographic.gridAnnotationString( 90, QgsComposerMapGrid::Longitude, expressionContext ), QString( "90.0" ) + QChar( 176 ) + QString( "E" ) );
QCOMPARE( gridProjected.gridAnnotationString( 90, QgsComposerMapGrid::Longitude, expressionContext ), QString( "90.0E" ) );
//0 degrees
QCOMPARE( gridGeographic.gridAnnotationString( 0, QgsComposerMapGrid::Longitude, expressionContext ), QString( "0.0" ) + QChar( 176 ) );
QCOMPARE( gridProjected.gridAnnotationString( 0, QgsComposerMapGrid::Longitude, expressionContext ), QString( "0.0E" ) );
//180 degrees
QCOMPARE( gridGeographic.gridAnnotationString( 180, QgsComposerMapGrid::Longitude, expressionContext ), QString( "180.0" ) + QChar( 176 ) );
QCOMPARE( gridProjected.gridAnnotationString( 180, QgsComposerMapGrid::Longitude, expressionContext ), QString( "180.0E" ) );
//normal n/s
QCOMPARE( gridGeographic.gridAnnotationString( 45, QgsComposerMapGrid::Latitude, expressionContext ), QString( "45.0" ) + QChar( 176 ) + QString( "N" ) );
QCOMPARE( gridProjected.gridAnnotationString( 45, QgsComposerMapGrid::Latitude, expressionContext ), QString( "45.0N" ) );
//0 north/south
QCOMPARE( gridGeographic.gridAnnotationString( 0, QgsComposerMapGrid::Latitude, expressionContext ), QString( "0.0" ) + QChar( 176 ) );
QCOMPARE( gridProjected.gridAnnotationString( 0, QgsComposerMapGrid::Latitude, expressionContext ), QString( "0.0N" ) );
//Custom format annotations
gridProjected.setAnnotationFormat( QgsComposerMapGrid::CustomFormat );
gridProjected.setAnnotationExpression( QStringLiteral( "(@grid_number/10) || case when @grid_axis ='x' then 'a' else 'b' end" ) );
QCOMPARE( gridProjected.gridAnnotationString( 45, QgsComposerMapGrid::Latitude, expressionContext ), QString( "4.5b" ) );
QCOMPARE( gridProjected.gridAnnotationString( 33, QgsComposerMapGrid::Longitude, expressionContext ), QString( "3.3a" ) );
}
void TestQgsComposerMapGrid::descendingAnnotations()
{
mComposerMap->setNewExtent( QgsRectangle( 781662.375, 3339523.125, 793062.375, 3345223.125 ) );
mComposerMap->grid()->setFrameStyle( QgsComposerMapGrid::NoFrame );
mComposerMap->grid()->setEnabled( true );
mComposerMap->grid()->setStyle( QgsComposerMapGrid::FrameAnnotationsOnly );
mComposerMap->grid()->setAnnotationEnabled( true );
mComposerMap->grid()->setAnnotationFontColor( Qt::black );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::InsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->grid()->setAnnotationDirection( QgsComposerMapGrid::VerticalDescending, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationDirection( QgsComposerMapGrid::VerticalDescending, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationDirection( QgsComposerMapGrid::VerticalDescending, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationDirection( QgsComposerMapGrid::VerticalDescending, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker( QStringLiteral( "composermap_verticaldescending_inside" ), mComposition );
checker.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult = checker.testComposition( mReport, 0, 0 );
QVERIFY( testResult );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Left );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Right );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Top );
mComposerMap->grid()->setAnnotationPosition( QgsComposerMapGrid::OutsideMapFrame, QgsComposerMapGrid::Bottom );
mComposerMap->updateBoundingRect();
QgsCompositionChecker checker2( QStringLiteral( "composermap_verticaldescending_outside" ), mComposition );
checker2.setControlPathPrefix( QStringLiteral( "composer_mapgrid" ) );
bool testResult2 = checker2.testComposition( mReport, 0, 0 );
QVERIFY( testResult2 );
mComposerMap->grid()->setAnnotationEnabled( false );
}
QGSTEST_MAIN( TestQgsComposerMapGrid )
#include "testqgscomposermapgrid.moc"