Skip to content

Commit 10d2ce4

Browse files
author
Sandro Santilli
committedFeb 20, 2015
Add tests for rotated map
Thanks Nyall for initial template. Include tests for raster layers, SVG and simple markers with data-defined or fixed rotation, parallel line labels.
1 parent e09437b commit 10d2ce4

20 files changed

+692
-0
lines changed
 

‎tests/src/core/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ ADD_QGIS_TEST(invertedpolygontest testqgsinvertedpolygonrenderer.cpp )
140140
ADD_QGIS_TEST(colorschemeregistry testqgscolorschemeregistry.cpp)
141141
ADD_QGIS_TEST(colorscheme testqgscolorscheme.cpp)
142142
ADD_QGIS_TEST(maptopixeltest testqgsmaptopixel.cpp)
143+
ADD_QGIS_TEST(maprotationtest testqgsmaprotation.cpp)
143144
ADD_QGIS_TEST(mapsettingstest testqgsmapsettings.cpp)
144145
ADD_QGIS_TEST(networkcontentfetcher testqgsnetworkcontentfetcher.cpp )
145146
ADD_QGIS_TEST(legendrenderertest testqgslegendrenderer.cpp )

‎tests/src/core/testqgsmaprotation.cpp

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
/***************************************************************************
2+
testqgsmaprotation.cpp
3+
--------------------------------------
4+
Date : Feb 18 2015
5+
Copyright : (C) 2015 by Sandro Santilli
6+
Email : strk@keybit.net
7+
***************************************************************************
8+
* *
9+
* This program is free software; you can redistribute it and/or modify *
10+
* it under the terms of the GNU General Public License as published by *
11+
* the Free Software Foundation; either version 2 of the License, or *
12+
* (at your option) any later version. *
13+
* *
14+
***************************************************************************/
15+
#include <QtTest/QtTest>
16+
#include <QObject>
17+
#include <QString>
18+
#include <QStringList>
19+
#include <QApplication>
20+
#include <QFileInfo>
21+
#include <QDir>
22+
23+
//qgis includes...
24+
#include "qgsrasterlayer.h"
25+
#include "qgsvectorlayer.h"
26+
#include "qgsmultibandcolorrenderer.h"
27+
#include "qgsmaplayerregistry.h"
28+
#include "qgsapplication.h"
29+
#include "qgsmaprenderer.h"
30+
#include "qgsmaplayerregistry.h"
31+
32+
//qgis unit test includes
33+
#include <qgsrenderchecker.h>
34+
35+
/** \ingroup UnitTests
36+
* This is a unit test for the map rotation feature
37+
*/
38+
class TestQgsMapRotation : public QObject
39+
{
40+
Q_OBJECT
41+
public:
42+
TestQgsMapRotation()
43+
: mRasterLayer( 0 )
44+
, mPointsLayer( 0 )
45+
, mLinesLayer( 0 )
46+
{
47+
mTestDataDir = QString( TEST_DATA_DIR ) + QDir::separator();
48+
}
49+
50+
private slots:
51+
void initTestCase();// will be called before the first testfunction is executed.
52+
void cleanupTestCase();// will be called after the last testfunction was executed.
53+
void init() {} // will be called before each testfunction is executed.
54+
void cleanup() {} // will be called after every testfunction.
55+
56+
void rasterLayer();
57+
void pointsLayer();
58+
void linesLayer();
59+
// TODO: polygonsLayer
60+
61+
private:
62+
bool render( QString theFileName );
63+
64+
QString mTestDataDir;
65+
QgsRasterLayer * mRasterLayer;
66+
QgsMapLayer * mPointsLayer;
67+
QgsMapLayer * mLinesLayer;
68+
QgsMapSettings mMapSettings;
69+
QString mReport;
70+
};
71+
72+
//runs before all tests
73+
void TestQgsMapRotation::initTestCase()
74+
{
75+
// init QGIS's paths - true means that all path will be inited from prefix
76+
QgsApplication::init();
77+
QgsApplication::initQgis();
78+
79+
QList<QgsMapLayer *> mapLayers;
80+
81+
//create a raster layer that will be used in all tests...
82+
QFileInfo rasterFileInfo( mTestDataDir + "rgb256x256.png" );
83+
mRasterLayer = new QgsRasterLayer( rasterFileInfo.filePath(),
84+
rasterFileInfo.completeBaseName() );
85+
QgsMultiBandColorRenderer* rasterRenderer = new QgsMultiBandColorRenderer( mRasterLayer->dataProvider(), 1, 2, 3 );
86+
mRasterLayer->setRenderer( rasterRenderer );
87+
mapLayers << mRasterLayer;
88+
89+
//create a point layer that will be used in all tests...
90+
QString myPointsFileName = mTestDataDir + "points.shp";
91+
QFileInfo myPointFileInfo( myPointsFileName );
92+
mPointsLayer = new QgsVectorLayer( myPointFileInfo.filePath(),
93+
myPointFileInfo.completeBaseName(), "ogr" );
94+
mapLayers << mPointsLayer;
95+
96+
//create a line layer that will be used in all tests...
97+
QString myLinesFileName = mTestDataDir + "lines_cardinals.shp";
98+
QFileInfo myLinesFileInfo( myLinesFileName );
99+
mLinesLayer = new QgsVectorLayer( myLinesFileInfo.filePath(),
100+
myLinesFileInfo.completeBaseName(), "ogr" );
101+
mapLayers << mLinesLayer;
102+
103+
// Register all layers with the registry
104+
QgsMapLayerRegistry::instance()->addMapLayers(mapLayers);
105+
106+
// This is needed to correctly set rotation center,
107+
// the actual size doesn't matter as QgsRenderChecker will
108+
// re-set it to the size of the expected image
109+
mMapSettings.setOutputSize( QSize(256,256) );
110+
111+
mReport += "<h1>Map Rotation Tests</h1>\n";
112+
}
113+
114+
//runs after all tests
115+
void TestQgsMapRotation::cleanupTestCase()
116+
{
117+
QgsApplication::exitQgis();
118+
119+
// TODO: delete layers (or is it done by exitQgis ?)
120+
121+
QString myReportFile = QDir::tempPath() + QDir::separator() + "qgistest.html";
122+
QFile myFile( myReportFile );
123+
if ( myFile.open( QIODevice::WriteOnly | QIODevice::Append ) )
124+
{
125+
QTextStream myQTextStream( &myFile );
126+
myQTextStream << mReport;
127+
myFile.close();
128+
}
129+
}
130+
131+
void TestQgsMapRotation::rasterLayer()
132+
{
133+
mMapSettings.setLayers( QStringList() << mRasterLayer->id() );
134+
mMapSettings.setExtent( mRasterLayer->extent() );
135+
mMapSettings.setRotation( 45 );
136+
// This ensures rotated image is all visible by tweaking scale
137+
mMapSettings.setExtent( mMapSettings.visibleExtent() );
138+
QVERIFY( render( "raster+45" ) );
139+
140+
mMapSettings.setRotation( -45 );
141+
QVERIFY( render( "raster-45" ) );
142+
}
143+
144+
void TestQgsMapRotation::pointsLayer()
145+
{
146+
mMapSettings.setLayers( QStringList() << mPointsLayer->id() );
147+
148+
// SVG points, fixed (no) rotation
149+
QString qml = mTestDataDir + "points.qml";
150+
bool success = false;
151+
mPointsLayer->loadNamedStyle( qml, success );
152+
QVERIFY( success );
153+
mMapSettings.setExtent( QgsRectangle(-105.5,37,-97.5,45) );
154+
mMapSettings.setRotation( -60 );
155+
QVERIFY( render( "svgpoints-60" ) );
156+
157+
// SVG points, data defined rotation
158+
qml = mTestDataDir + "points_single_symbol_datadefined_rotation.qml";
159+
success = false;
160+
mPointsLayer->loadNamedStyle( qml, success );
161+
QVERIFY( success );
162+
mMapSettings.setExtent( QgsRectangle(-116,33,-107,42) );
163+
mMapSettings.setRotation( 90 );
164+
QVERIFY( render( "svgpoints-datadefined+90" ) );
165+
166+
// TODO: SVG points, fixed (defined) rotation ?
167+
168+
// Simple points, data defined rotation
169+
qml = mTestDataDir + "points_single_symbol.qml";
170+
success = false;
171+
mPointsLayer->loadNamedStyle( qml, success );
172+
QVERIFY( success );
173+
mMapSettings.setExtent( QgsRectangle(-116,33,-107,42) );
174+
mMapSettings.setRotation( 90 );
175+
QVERIFY( render( "simplepoints-datadefined+90" ) );
176+
177+
// Simple points, fixed (no) rotation
178+
qml = mTestDataDir + "points_graduated_symbol.qml";
179+
success = false;
180+
mPointsLayer->loadNamedStyle( qml, success );
181+
QVERIFY( success );
182+
mMapSettings.setExtent( QgsRectangle(-108,26,-100,34) );
183+
mMapSettings.setRotation( 30 );
184+
QVERIFY( render( "simplepoints+30" ) );
185+
186+
// TODO: simple points, fixed (defined) rotation ?
187+
}
188+
189+
void TestQgsMapRotation::linesLayer()
190+
{
191+
mMapSettings.setLayers( QStringList() << mLinesLayer->id() );
192+
193+
// Arrowed line with parallel labels
194+
QString qml = mTestDataDir + "lines_cardinals_arrowed_parallel_label.qml";
195+
bool success = false;
196+
mLinesLayer->loadNamedStyle( qml, success );
197+
QVERIFY( success );
198+
mMapSettings.setExtent( mLinesLayer->extent() ); //QgsRectangle(-150,-150,150,150) );
199+
mMapSettings.setRotation( 45 );
200+
QVERIFY( render( "lines-parallel-label+45" ) );
201+
202+
// TODO: horizontal labels
203+
// TODO: curved labels
204+
}
205+
206+
bool TestQgsMapRotation::render( QString theTestType )
207+
{
208+
mReport += "<h2>" + theTestType + "</h2>\n";
209+
QgsRenderChecker checker;
210+
checker.setControlPathPrefix("maprotation");
211+
checker.setControlName( "expected_" + theTestType );
212+
checker.setMapSettings( mMapSettings );
213+
bool result = checker.runTest( theTestType );
214+
mReport += "\n\n\n" + checker.report();
215+
return result;
216+
}
217+
218+
QTEST_MAIN( TestQgsMapRotation )
219+
#include "testqgsmaprotation.moc"
Loading
Loading
Loading

‎tests/testdata/lines_cardinals.dbf

249 Bytes
Binary file not shown.

‎tests/testdata/lines_cardinals.prj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
GEOGCS["WGS 84",DATUM["unknown",SPHEROID["WGS84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]

‎tests/testdata/lines_cardinals.shp

452 Bytes
Binary file not shown.

‎tests/testdata/lines_cardinals.shx

132 Bytes
Binary file not shown.
Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
2+
<qgis version="2.7.0-Master" minimumScale="1" maximumScale="1e+08" simplifyDrawingHints="1" minLabelScale="1" maxLabelScale="1e+08" simplifyDrawingTol="1" simplifyMaxScale="1" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
3+
<edittypes>
4+
<edittype widgetv2type="TextEdit" name="LBL">
5+
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
6+
</edittype>
7+
<edittype widgetv2type="TextEdit" name="ROT">
8+
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
9+
</edittype>
10+
</edittypes>
11+
<renderer-v2 symbollevels="0" type="singleSymbol">
12+
<symbols>
13+
<symbol alpha="1" type="line" name="0">
14+
<layer pass="0" class="SimpleLine" locked="0">
15+
<prop k="capstyle" v="square"/>
16+
<prop k="customdash" v="5;2"/>
17+
<prop k="customdash_map_unit_scale" v="0,0"/>
18+
<prop k="customdash_unit" v="MM"/>
19+
<prop k="draw_inside_polygon" v="0"/>
20+
<prop k="joinstyle" v="bevel"/>
21+
<prop k="line_color" v="0,0,0,255"/>
22+
<prop k="line_style" v="solid"/>
23+
<prop k="line_width" v="1.2"/>
24+
<prop k="line_width_unit" v="MM"/>
25+
<prop k="offset" v="0"/>
26+
<prop k="offset_map_unit_scale" v="0,0"/>
27+
<prop k="offset_unit" v="MM"/>
28+
<prop k="use_custom_dash" v="0"/>
29+
<prop k="width_map_unit_scale" v="0,0"/>
30+
</layer>
31+
<layer pass="0" class="MarkerLine" locked="0">
32+
<prop k="interval" v="3"/>
33+
<prop k="interval_map_unit_scale" v="0,0"/>
34+
<prop k="interval_unit" v="MM"/>
35+
<prop k="offset" v="0"/>
36+
<prop k="offset_along_line" v="0"/>
37+
<prop k="offset_along_line_map_unit_scale" v="0,0"/>
38+
<prop k="offset_along_line_unit" v="MM"/>
39+
<prop k="offset_map_unit_scale" v="0,0"/>
40+
<prop k="offset_unit" v="MM"/>
41+
<prop k="placement" v="lastvertex"/>
42+
<prop k="rotate" v="1"/>
43+
<symbol alpha="1" type="marker" name="@0@1">
44+
<layer pass="0" class="SimpleMarker" locked="0">
45+
<prop k="angle" v="0"/>
46+
<prop k="color" v="0,0,0,255"/>
47+
<prop k="horizontal_anchor_point" v="1"/>
48+
<prop k="name" v="filled_arrowhead"/>
49+
<prop k="offset" v="2,0"/>
50+
<prop k="offset_map_unit_scale" v="0,0"/>
51+
<prop k="offset_unit" v="MM"/>
52+
<prop k="outline_color" v="0,0,0,255"/>
53+
<prop k="outline_style" v="solid"/>
54+
<prop k="outline_width" v="0"/>
55+
<prop k="outline_width_map_unit_scale" v="0,0"/>
56+
<prop k="outline_width_unit" v="MM"/>
57+
<prop k="scale_method" v="area"/>
58+
<prop k="size" v="7"/>
59+
<prop k="size_map_unit_scale" v="0,0"/>
60+
<prop k="size_unit" v="MM"/>
61+
<prop k="vertical_anchor_point" v="1"/>
62+
</layer>
63+
</symbol>
64+
</layer>
65+
</symbol>
66+
</symbols>
67+
<rotation/>
68+
<sizescale scalemethod="area"/>
69+
</renderer-v2>
70+
<customproperties>
71+
<property key="labeling" value="pal"/>
72+
<property key="labeling/addDirectionSymbol" value="false"/>
73+
<property key="labeling/angleOffset" value="0"/>
74+
<property key="labeling/blendMode" value="0"/>
75+
<property key="labeling/bufferBlendMode" value="0"/>
76+
<property key="labeling/bufferColorA" value="255"/>
77+
<property key="labeling/bufferColorB" value="255"/>
78+
<property key="labeling/bufferColorG" value="255"/>
79+
<property key="labeling/bufferColorR" value="255"/>
80+
<property key="labeling/bufferDraw" value="false"/>
81+
<property key="labeling/bufferJoinStyle" value="64"/>
82+
<property key="labeling/bufferNoFill" value="false"/>
83+
<property key="labeling/bufferSize" value="1"/>
84+
<property key="labeling/bufferSizeInMapUnits" value="false"/>
85+
<property key="labeling/bufferSizeMapUnitMaxScale" value="0"/>
86+
<property key="labeling/bufferSizeMapUnitMinScale" value="0"/>
87+
<property key="labeling/bufferTransp" value="0"/>
88+
<property key="labeling/centroidInside" value="false"/>
89+
<property key="labeling/centroidWhole" value="false"/>
90+
<property key="labeling/decimals" value="3"/>
91+
<property key="labeling/displayAll" value="false"/>
92+
<property key="labeling/dist" value="0"/>
93+
<property key="labeling/distInMapUnits" value="false"/>
94+
<property key="labeling/distMapUnitMaxScale" value="0"/>
95+
<property key="labeling/distMapUnitMinScale" value="0"/>
96+
<property key="labeling/enabled" value="true"/>
97+
<property key="labeling/fieldName" value="LBL"/>
98+
<property key="labeling/fontBold" value="true"/>
99+
<property key="labeling/fontCapitals" value="0"/>
100+
<property key="labeling/fontFamily" value="Ubuntu"/>
101+
<property key="labeling/fontItalic" value="false"/>
102+
<property key="labeling/fontLetterSpacing" value="0"/>
103+
<property key="labeling/fontLimitPixelSize" value="false"/>
104+
<property key="labeling/fontMaxPixelSize" value="10000"/>
105+
<property key="labeling/fontMinPixelSize" value="3"/>
106+
<property key="labeling/fontSize" value="8"/>
107+
<property key="labeling/fontSizeInMapUnits" value="false"/>
108+
<property key="labeling/fontSizeMapUnitMaxScale" value="0"/>
109+
<property key="labeling/fontSizeMapUnitMinScale" value="0"/>
110+
<property key="labeling/fontStrikeout" value="false"/>
111+
<property key="labeling/fontUnderline" value="false"/>
112+
<property key="labeling/fontWeight" value="63"/>
113+
<property key="labeling/fontWordSpacing" value="0"/>
114+
<property key="labeling/formatNumbers" value="false"/>
115+
<property key="labeling/isExpression" value="false"/>
116+
<property key="labeling/labelOffsetInMapUnits" value="true"/>
117+
<property key="labeling/labelOffsetMapUnitMaxScale" value="0"/>
118+
<property key="labeling/labelOffsetMapUnitMinScale" value="0"/>
119+
<property key="labeling/labelPerPart" value="false"/>
120+
<property key="labeling/leftDirectionSymbol" value="&lt;"/>
121+
<property key="labeling/limitNumLabels" value="false"/>
122+
<property key="labeling/maxCurvedCharAngleIn" value="20"/>
123+
<property key="labeling/maxCurvedCharAngleOut" value="-20"/>
124+
<property key="labeling/maxNumLabels" value="2000"/>
125+
<property key="labeling/mergeLines" value="false"/>
126+
<property key="labeling/minFeatureSize" value="0"/>
127+
<property key="labeling/multilineAlign" value="0"/>
128+
<property key="labeling/multilineHeight" value="1"/>
129+
<property key="labeling/namedStyle" value="Medium"/>
130+
<property key="labeling/obstacle" value="true"/>
131+
<property key="labeling/placeDirectionSymbol" value="0"/>
132+
<property key="labeling/placement" value="2"/>
133+
<property key="labeling/placementFlags" value="10"/>
134+
<property key="labeling/plussign" value="false"/>
135+
<property key="labeling/preserveRotation" value="true"/>
136+
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
137+
<property key="labeling/priority" value="5"/>
138+
<property key="labeling/quadOffset" value="4"/>
139+
<property key="labeling/repeatDistance" value="0"/>
140+
<property key="labeling/repeatDistanceMapUnitMaxScale" value="0"/>
141+
<property key="labeling/repeatDistanceMapUnitMinScale" value="0"/>
142+
<property key="labeling/repeatDistanceUnit" value="1"/>
143+
<property key="labeling/reverseDirectionSymbol" value="false"/>
144+
<property key="labeling/rightDirectionSymbol" value=">"/>
145+
<property key="labeling/scaleMax" value="10000000"/>
146+
<property key="labeling/scaleMin" value="1"/>
147+
<property key="labeling/scaleVisibility" value="false"/>
148+
<property key="labeling/shadowBlendMode" value="6"/>
149+
<property key="labeling/shadowColorB" value="0"/>
150+
<property key="labeling/shadowColorG" value="0"/>
151+
<property key="labeling/shadowColorR" value="0"/>
152+
<property key="labeling/shadowDraw" value="false"/>
153+
<property key="labeling/shadowOffsetAngle" value="135"/>
154+
<property key="labeling/shadowOffsetDist" value="1"/>
155+
<property key="labeling/shadowOffsetGlobal" value="true"/>
156+
<property key="labeling/shadowOffsetMapUnitMaxScale" value="0"/>
157+
<property key="labeling/shadowOffsetMapUnitMinScale" value="0"/>
158+
<property key="labeling/shadowOffsetUnits" value="1"/>
159+
<property key="labeling/shadowRadius" value="1.5"/>
160+
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
161+
<property key="labeling/shadowRadiusMapUnitMaxScale" value="0"/>
162+
<property key="labeling/shadowRadiusMapUnitMinScale" value="0"/>
163+
<property key="labeling/shadowRadiusUnits" value="1"/>
164+
<property key="labeling/shadowScale" value="100"/>
165+
<property key="labeling/shadowTransparency" value="30"/>
166+
<property key="labeling/shadowUnder" value="0"/>
167+
<property key="labeling/shapeBlendMode" value="0"/>
168+
<property key="labeling/shapeBorderColorA" value="255"/>
169+
<property key="labeling/shapeBorderColorB" value="128"/>
170+
<property key="labeling/shapeBorderColorG" value="128"/>
171+
<property key="labeling/shapeBorderColorR" value="128"/>
172+
<property key="labeling/shapeBorderWidth" value="0"/>
173+
<property key="labeling/shapeBorderWidthMapUnitMaxScale" value="0"/>
174+
<property key="labeling/shapeBorderWidthMapUnitMinScale" value="0"/>
175+
<property key="labeling/shapeBorderWidthUnits" value="1"/>
176+
<property key="labeling/shapeDraw" value="false"/>
177+
<property key="labeling/shapeFillColorA" value="255"/>
178+
<property key="labeling/shapeFillColorB" value="255"/>
179+
<property key="labeling/shapeFillColorG" value="255"/>
180+
<property key="labeling/shapeFillColorR" value="255"/>
181+
<property key="labeling/shapeJoinStyle" value="64"/>
182+
<property key="labeling/shapeOffsetMapUnitMaxScale" value="0"/>
183+
<property key="labeling/shapeOffsetMapUnitMinScale" value="0"/>
184+
<property key="labeling/shapeOffsetUnits" value="1"/>
185+
<property key="labeling/shapeOffsetX" value="0"/>
186+
<property key="labeling/shapeOffsetY" value="0"/>
187+
<property key="labeling/shapeRadiiMapUnitMaxScale" value="0"/>
188+
<property key="labeling/shapeRadiiMapUnitMinScale" value="0"/>
189+
<property key="labeling/shapeRadiiUnits" value="1"/>
190+
<property key="labeling/shapeRadiiX" value="0"/>
191+
<property key="labeling/shapeRadiiY" value="0"/>
192+
<property key="labeling/shapeRotation" value="0"/>
193+
<property key="labeling/shapeRotationType" value="0"/>
194+
<property key="labeling/shapeSVGFile" value=""/>
195+
<property key="labeling/shapeSizeMapUnitMaxScale" value="0"/>
196+
<property key="labeling/shapeSizeMapUnitMinScale" value="0"/>
197+
<property key="labeling/shapeSizeType" value="0"/>
198+
<property key="labeling/shapeSizeUnits" value="1"/>
199+
<property key="labeling/shapeSizeX" value="0"/>
200+
<property key="labeling/shapeSizeY" value="0"/>
201+
<property key="labeling/shapeTransparency" value="0"/>
202+
<property key="labeling/shapeType" value="0"/>
203+
<property key="labeling/textColorA" value="255"/>
204+
<property key="labeling/textColorB" value="0"/>
205+
<property key="labeling/textColorG" value="0"/>
206+
<property key="labeling/textColorR" value="0"/>
207+
<property key="labeling/textTransp" value="0"/>
208+
<property key="labeling/upsidedownLabels" value="0"/>
209+
<property key="labeling/wrapChar" value=""/>
210+
<property key="labeling/xOffset" value="0"/>
211+
<property key="labeling/yOffset" value="0"/>
212+
</customproperties>
213+
<blendMode>0</blendMode>
214+
<featureBlendMode>0</featureBlendMode>
215+
<layerTransparency>0</layerTransparency>
216+
<displayfield>Name</displayfield>
217+
<label>0</label>
218+
<labelattributes>
219+
<label fieldname="" text="Label"/>
220+
<family fieldname="" name="Lucida Grande"/>
221+
<size fieldname="" units="pt" value="12"/>
222+
<bold fieldname="" on="0"/>
223+
<italic fieldname="" on="0"/>
224+
<underline fieldname="" on="0"/>
225+
<strikeout fieldname="" on="0"/>
226+
<color fieldname="" red="0" blue="0" green="0"/>
227+
<x fieldname=""/>
228+
<y fieldname=""/>
229+
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
230+
<angle fieldname="" value="0" auto="0"/>
231+
<alignment fieldname="" value="center"/>
232+
<buffercolor fieldname="" red="255" blue="255" green="255"/>
233+
<buffersize fieldname="" units="pt" value="1"/>
234+
<bufferenabled fieldname="" on=""/>
235+
<multilineenabled fieldname="" on=""/>
236+
<selectedonly on=""/>
237+
</labelattributes>
238+
<editform></editform>
239+
<editforminit/>
240+
<featformsuppress>0</featformsuppress>
241+
<annotationform></annotationform>
242+
<editorlayout>generatedlayout</editorlayout>
243+
<excludeAttributesWMS/>
244+
<excludeAttributesWFS/>
245+
<attributeactions/>
246+
</qgis>
Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
2+
<qgis version="2.7.0-Master" minimumScale="1" maximumScale="1e+08" simplifyDrawingHints="0" minLabelScale="1" maxLabelScale="1e+08" simplifyDrawingTol="1" simplifyMaxScale="1" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
3+
<edittypes>
4+
<edittype widgetv2type="TextEdit" name="Class">
5+
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
6+
</edittype>
7+
<edittype widgetv2type="TextEdit" name="Heading">
8+
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
9+
</edittype>
10+
<edittype widgetv2type="TextEdit" name="Importance">
11+
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
12+
</edittype>
13+
<edittype widgetv2type="TextEdit" name="Pilots">
14+
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
15+
</edittype>
16+
<edittype widgetv2type="TextEdit" name="Cabin Crew">
17+
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
18+
</edittype>
19+
<edittype widgetv2type="TextEdit" name="Staff">
20+
<widgetv2config IsMultiline="0" fieldEditable="1" UseHtml="0" labelOnTop="0"/>
21+
</edittype>
22+
</edittypes>
23+
<renderer-v2 symbollevels="0" type="singleSymbol">
24+
<symbols>
25+
<symbol alpha="1" type="marker" name="0">
26+
<layer pass="0" class="SvgMarker" locked="0">
27+
<prop k="angle" v="0"/>
28+
<prop k="color" v="#000000"/>
29+
<prop k="horizontal_anchor_point" v="1"/>
30+
<prop k="name" v="gpsicons/plane.svg"/>
31+
<prop k="offset" v="0,0"/>
32+
<prop k="offset_map_unit_scale" v="0,0"/>
33+
<prop k="offset_unit" v="MM"/>
34+
<prop k="outline_color" v="#000000"/>
35+
<prop k="outline_width" v="1"/>
36+
<prop k="outline_width_map_unit_scale" v="0,0"/>
37+
<prop k="outline_width_unit" v="MM"/>
38+
<prop k="scale_method" v="area"/>
39+
<prop k="size" v="11"/>
40+
<prop k="size_map_unit_scale" v="0,0"/>
41+
<prop k="size_unit" v="MM"/>
42+
<prop k="vertical_anchor_point" v="1"/>
43+
</layer>
44+
</symbol>
45+
</symbols>
46+
<rotation field="Heading"/>
47+
<sizescale scalemethod="area"/>
48+
</renderer-v2>
49+
<customproperties>
50+
<property key="labeling" value="pal"/>
51+
<property key="labeling/addDirectionSymbol" value="false"/>
52+
<property key="labeling/angleOffset" value="0"/>
53+
<property key="labeling/blendMode" value="0"/>
54+
<property key="labeling/bufferBlendMode" value="0"/>
55+
<property key="labeling/bufferColorA" value="255"/>
56+
<property key="labeling/bufferColorB" value="255"/>
57+
<property key="labeling/bufferColorG" value="255"/>
58+
<property key="labeling/bufferColorR" value="255"/>
59+
<property key="labeling/bufferDraw" value="false"/>
60+
<property key="labeling/bufferJoinStyle" value="64"/>
61+
<property key="labeling/bufferNoFill" value="false"/>
62+
<property key="labeling/bufferSize" value="1"/>
63+
<property key="labeling/bufferSizeInMapUnits" value="false"/>
64+
<property key="labeling/bufferSizeMapUnitMaxScale" value="0"/>
65+
<property key="labeling/bufferSizeMapUnitMinScale" value="0"/>
66+
<property key="labeling/bufferTransp" value="0"/>
67+
<property key="labeling/centroidInside" value="false"/>
68+
<property key="labeling/centroidWhole" value="false"/>
69+
<property key="labeling/decimals" value="3"/>
70+
<property key="labeling/displayAll" value="false"/>
71+
<property key="labeling/dist" value="0"/>
72+
<property key="labeling/distInMapUnits" value="false"/>
73+
<property key="labeling/distMapUnitMaxScale" value="0"/>
74+
<property key="labeling/distMapUnitMinScale" value="0"/>
75+
<property key="labeling/enabled" value="false"/>
76+
<property key="labeling/fieldName" value=""/>
77+
<property key="labeling/fontBold" value="true"/>
78+
<property key="labeling/fontCapitals" value="0"/>
79+
<property key="labeling/fontFamily" value="Ubuntu"/>
80+
<property key="labeling/fontItalic" value="false"/>
81+
<property key="labeling/fontLetterSpacing" value="0"/>
82+
<property key="labeling/fontLimitPixelSize" value="false"/>
83+
<property key="labeling/fontMaxPixelSize" value="10000"/>
84+
<property key="labeling/fontMinPixelSize" value="3"/>
85+
<property key="labeling/fontSize" value="11"/>
86+
<property key="labeling/fontSizeInMapUnits" value="false"/>
87+
<property key="labeling/fontSizeMapUnitMaxScale" value="0"/>
88+
<property key="labeling/fontSizeMapUnitMinScale" value="0"/>
89+
<property key="labeling/fontStrikeout" value="false"/>
90+
<property key="labeling/fontUnderline" value="false"/>
91+
<property key="labeling/fontWeight" value="63"/>
92+
<property key="labeling/fontWordSpacing" value="0"/>
93+
<property key="labeling/formatNumbers" value="false"/>
94+
<property key="labeling/isExpression" value="true"/>
95+
<property key="labeling/labelOffsetInMapUnits" value="true"/>
96+
<property key="labeling/labelOffsetMapUnitMaxScale" value="0"/>
97+
<property key="labeling/labelOffsetMapUnitMinScale" value="0"/>
98+
<property key="labeling/labelPerPart" value="false"/>
99+
<property key="labeling/leftDirectionSymbol" value="&lt;"/>
100+
<property key="labeling/limitNumLabels" value="false"/>
101+
<property key="labeling/maxCurvedCharAngleIn" value="20"/>
102+
<property key="labeling/maxCurvedCharAngleOut" value="-20"/>
103+
<property key="labeling/maxNumLabels" value="2000"/>
104+
<property key="labeling/mergeLines" value="false"/>
105+
<property key="labeling/minFeatureSize" value="0"/>
106+
<property key="labeling/multilineAlign" value="0"/>
107+
<property key="labeling/multilineHeight" value="1"/>
108+
<property key="labeling/namedStyle" value="Medium"/>
109+
<property key="labeling/obstacle" value="true"/>
110+
<property key="labeling/placeDirectionSymbol" value="0"/>
111+
<property key="labeling/placement" value="0"/>
112+
<property key="labeling/placementFlags" value="0"/>
113+
<property key="labeling/plussign" value="false"/>
114+
<property key="labeling/preserveRotation" value="true"/>
115+
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
116+
<property key="labeling/priority" value="5"/>
117+
<property key="labeling/quadOffset" value="4"/>
118+
<property key="labeling/repeatDistance" value="0"/>
119+
<property key="labeling/repeatDistanceMapUnitMaxScale" value="0"/>
120+
<property key="labeling/repeatDistanceMapUnitMinScale" value="0"/>
121+
<property key="labeling/repeatDistanceUnit" value="1"/>
122+
<property key="labeling/reverseDirectionSymbol" value="false"/>
123+
<property key="labeling/rightDirectionSymbol" value=">"/>
124+
<property key="labeling/scaleMax" value="10000000"/>
125+
<property key="labeling/scaleMin" value="1"/>
126+
<property key="labeling/scaleVisibility" value="false"/>
127+
<property key="labeling/shadowBlendMode" value="6"/>
128+
<property key="labeling/shadowColorB" value="0"/>
129+
<property key="labeling/shadowColorG" value="0"/>
130+
<property key="labeling/shadowColorR" value="0"/>
131+
<property key="labeling/shadowDraw" value="false"/>
132+
<property key="labeling/shadowOffsetAngle" value="135"/>
133+
<property key="labeling/shadowOffsetDist" value="1"/>
134+
<property key="labeling/shadowOffsetGlobal" value="true"/>
135+
<property key="labeling/shadowOffsetMapUnitMaxScale" value="0"/>
136+
<property key="labeling/shadowOffsetMapUnitMinScale" value="0"/>
137+
<property key="labeling/shadowOffsetUnits" value="1"/>
138+
<property key="labeling/shadowRadius" value="1.5"/>
139+
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
140+
<property key="labeling/shadowRadiusMapUnitMaxScale" value="0"/>
141+
<property key="labeling/shadowRadiusMapUnitMinScale" value="0"/>
142+
<property key="labeling/shadowRadiusUnits" value="1"/>
143+
<property key="labeling/shadowScale" value="100"/>
144+
<property key="labeling/shadowTransparency" value="30"/>
145+
<property key="labeling/shadowUnder" value="0"/>
146+
<property key="labeling/shapeBlendMode" value="0"/>
147+
<property key="labeling/shapeBorderColorA" value="255"/>
148+
<property key="labeling/shapeBorderColorB" value="128"/>
149+
<property key="labeling/shapeBorderColorG" value="128"/>
150+
<property key="labeling/shapeBorderColorR" value="128"/>
151+
<property key="labeling/shapeBorderWidth" value="0"/>
152+
<property key="labeling/shapeBorderWidthMapUnitMaxScale" value="0"/>
153+
<property key="labeling/shapeBorderWidthMapUnitMinScale" value="0"/>
154+
<property key="labeling/shapeBorderWidthUnits" value="1"/>
155+
<property key="labeling/shapeDraw" value="false"/>
156+
<property key="labeling/shapeFillColorA" value="255"/>
157+
<property key="labeling/shapeFillColorB" value="255"/>
158+
<property key="labeling/shapeFillColorG" value="255"/>
159+
<property key="labeling/shapeFillColorR" value="255"/>
160+
<property key="labeling/shapeJoinStyle" value="64"/>
161+
<property key="labeling/shapeOffsetMapUnitMaxScale" value="0"/>
162+
<property key="labeling/shapeOffsetMapUnitMinScale" value="0"/>
163+
<property key="labeling/shapeOffsetUnits" value="1"/>
164+
<property key="labeling/shapeOffsetX" value="0"/>
165+
<property key="labeling/shapeOffsetY" value="0"/>
166+
<property key="labeling/shapeRadiiMapUnitMaxScale" value="0"/>
167+
<property key="labeling/shapeRadiiMapUnitMinScale" value="0"/>
168+
<property key="labeling/shapeRadiiUnits" value="1"/>
169+
<property key="labeling/shapeRadiiX" value="0"/>
170+
<property key="labeling/shapeRadiiY" value="0"/>
171+
<property key="labeling/shapeRotation" value="0"/>
172+
<property key="labeling/shapeRotationType" value="0"/>
173+
<property key="labeling/shapeSVGFile" value=""/>
174+
<property key="labeling/shapeSizeMapUnitMaxScale" value="0"/>
175+
<property key="labeling/shapeSizeMapUnitMinScale" value="0"/>
176+
<property key="labeling/shapeSizeType" value="0"/>
177+
<property key="labeling/shapeSizeUnits" value="1"/>
178+
<property key="labeling/shapeSizeX" value="0"/>
179+
<property key="labeling/shapeSizeY" value="0"/>
180+
<property key="labeling/shapeTransparency" value="0"/>
181+
<property key="labeling/shapeType" value="0"/>
182+
<property key="labeling/textColorA" value="255"/>
183+
<property key="labeling/textColorB" value="0"/>
184+
<property key="labeling/textColorG" value="0"/>
185+
<property key="labeling/textColorR" value="0"/>
186+
<property key="labeling/textTransp" value="0"/>
187+
<property key="labeling/upsidedownLabels" value="0"/>
188+
<property key="labeling/wrapChar" value=""/>
189+
<property key="labeling/xOffset" value="0"/>
190+
<property key="labeling/yOffset" value="0"/>
191+
</customproperties>
192+
<blendMode>0</blendMode>
193+
<featureBlendMode>0</featureBlendMode>
194+
<layerTransparency>0</layerTransparency>
195+
<displayfield>Class</displayfield>
196+
<label>0</label>
197+
<labelattributes>
198+
<label fieldname="" text="Label"/>
199+
<family fieldname="" name="Lucida Grande"/>
200+
<size fieldname="" units="pt" value="12"/>
201+
<bold fieldname="" on="0"/>
202+
<italic fieldname="" on="0"/>
203+
<underline fieldname="" on="0"/>
204+
<strikeout fieldname="" on="0"/>
205+
<color fieldname="" red="0" blue="0" green="0"/>
206+
<x fieldname=""/>
207+
<y fieldname=""/>
208+
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
209+
<angle fieldname="" value="0" auto="0"/>
210+
<alignment fieldname="" value="center"/>
211+
<buffercolor fieldname="" red="255" blue="255" green="255"/>
212+
<buffersize fieldname="" units="pt" value="1"/>
213+
<bufferenabled fieldname="" on=""/>
214+
<multilineenabled fieldname="" on=""/>
215+
<selectedonly on=""/>
216+
</labelattributes>
217+
<editform></editform>
218+
<editforminit/>
219+
<featformsuppress>0</featformsuppress>
220+
<annotationform></annotationform>
221+
<editorlayout>generatedlayout</editorlayout>
222+
<excludeAttributesWMS/>
223+
<excludeAttributesWFS/>
224+
<attributeactions/>
225+
</qgis>

0 commit comments

Comments
 (0)
Please sign in to comment.