Skip to content

Commit 519fe2f

Browse files
committedMay 13, 2013
Add python bindings and tests for grid blending, grid annotation font color, vector feature blending and vector layer transparency
1 parent 6342b74 commit 519fe2f

File tree

4 files changed

+85
-2
lines changed

4 files changed

+85
-2
lines changed
 

‎python/core/composer/qgscomposermap.sip

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,11 @@ class QgsComposerMap : QgsComposerItem
208208
@note this function was added in version 1.4*/
209209
void setGridAnnotationFont( const QFont& f );
210210
QFont gridAnnotationFont() const;
211+
212+
/**Sets font color for grid annotations
213+
@note this function was added in version 2.0*/
214+
void setAnnotationFontColor( const QColor& c );
215+
QColor annotationFontColor() const;
211216

212217
/**Sets coordinate precision for grid annotations
213218
@note this function was added in version 1.4*/
@@ -242,6 +247,13 @@ class QgsComposerMap : QgsComposerItem
242247
@note: this function was added in version 1.9*/
243248
void setGridFrameWidth( double w );
244249
double gridFrameWidth() const;
250+
251+
/** Returns the grid's blending mode
252+
@note added in version 2.0*/
253+
const QPainter::CompositionMode gridBlendMode() const;
254+
/** Sets the grid's blending mode
255+
@note added in version 2.0*/
256+
void setGridBlendMode( const QPainter::CompositionMode blendMode );
245257

246258
/**In case of annotations, the bounding rectangle can be larger than the map item rectangle
247259
@note this function was added in version 1.4*/

‎python/core/qgsvectorlayer.sip

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,25 @@ class QgsVectorLayer : QgsMapLayer
755755
@note this method was added in version 1.1
756756
*/
757757
QgsVectorOverlay* findOverlayByType( const QString& typeName );
758-
758+
759+
/* Set the blending mode used for rendering each feature
760+
* @note added in 2.0
761+
*/
762+
void setFeatureBlendMode( const QPainter::CompositionMode blendMode );
763+
/* Returns the current blending mode for features
764+
* @note added in 2.0
765+
*/
766+
const QPainter::CompositionMode featureBlendMode() const;
767+
768+
/* Set the transparency for the vector layer
769+
* @note added in 2.0
770+
*/
771+
void setLayerTransparency( const int layerTransparency );
772+
/* Returns the current transparency for the vector layer
773+
* @note added in 2.0
774+
*/
775+
const int layerTransparency() const;
776+
759777
//! Buffer with uncommitted editing operations. Only valid after editing has been turned on.
760778
QgsVectorLayerEditBuffer* editBuffer();
761779

‎tests/src/python/test_qgsblendmodes.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ def __init__(self, methodName):
6767
self.mPolygonLayer = QgsVectorLayer(myShpFile, 'Polygons', 'ogr')
6868
self.mMapRegistry.addMapLayer(self.mPolygonLayer)
6969

70+
# create line layer
71+
myShpFile = os.path.join(TEST_DATA_DIR, 'lines.shp')
72+
self.mLineLayer = QgsVectorLayer(myShpFile, 'Lines', 'ogr')
73+
self.mMapRegistry.addMapLayer(self.mLineLayer)
74+
7075
# create two raster layers
7176
myRasterFile = os.path.join(TEST_DATA_DIR, 'landsat.tif')
7277
self.mRasterLayer1 = QgsRasterLayer(myRasterFile, "raster1")
@@ -108,6 +113,50 @@ def testVectorBlending(self):
108113
myMessage = ('vector blending failed')
109114
assert myResult, myMessage
110115

116+
def testVectorFeatureBlending(self):
117+
"""Test that feature blend modes work for vector layers."""
118+
119+
#Add vector layers to map
120+
myLayers = QStringList()
121+
myLayers.append(self.mLineLayer.id())
122+
myLayers.append(self.mPolygonLayer.id())
123+
self.mMapRenderer.setLayerSet(myLayers)
124+
self.mMapRenderer.setExtent(self.mPointLayer.extent())
125+
self.mPolygonLayer.setBlendMode(QPainter.CompositionMode_Multiply)
126+
127+
#Set feature blending for line layer
128+
self.mLineLayer.setFeatureBlendMode(QPainter.CompositionMode_Plus)
129+
130+
checker = QgsRenderChecker()
131+
checker.setControlName("expected_vector_featureblendmodes")
132+
checker.setMapRenderer(self.mMapRenderer)
133+
134+
myResult = checker.runTest("vector_featureblendmodes");
135+
myMessage = ('vector feature blending failed')
136+
assert myResult, myMessage
137+
138+
def testVectorLayerTransparency(self):
139+
"""Test that layer transparency works for vector layers."""
140+
141+
#Add vector layers to map
142+
myLayers = QStringList()
143+
myLayers.append(self.mLineLayer.id())
144+
myLayers.append(self.mPolygonLayer.id())
145+
self.mMapRenderer.setLayerSet(myLayers)
146+
self.mMapRenderer.setExtent(self.mPointLayer.extent())
147+
self.mPolygonLayer.setBlendMode(QPainter.CompositionMode_Multiply)
148+
149+
#Set feature blending for line layer
150+
self.mLineLayer.setLayerTransparency( 50 )
151+
152+
checker = QgsRenderChecker()
153+
checker.setControlName("expected_vector_layertransparency")
154+
checker.setMapRenderer(self.mMapRenderer)
155+
156+
myResult = checker.runTest("vector_layertransparency");
157+
myMessage = ('vector layer transparency failed')
158+
assert myResult, myMessage
159+
111160
def testRasterBlending(self):
112161
"""Test that blend modes work for raster layers."""
113162
#Add raster layers to map

‎tests/src/python/test_qgscomposermap.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
from PyQt4.QtCore import (QStringList,
1717
QFileInfo)
1818
from PyQt4.QtXml import QDomDocument
19-
from PyQt4.QtGui import QPainter
19+
from PyQt4.QtGui import (QPainter,
20+
QColor)
2021

2122
from qgis.core import (QgsComposerMap,
2223
QgsRectangle,
@@ -76,6 +77,7 @@ def testGrid(self):
7677
self.mComposerMap.setGridIntervalY(2000)
7778
self.mComposerMap.setShowGridAnnotation(True)
7879
self.mComposerMap.setGridPenWidth(0.5)
80+
self.mComposerMap.setGridPenColor(QColor(0,255,0))
7981
self.mComposerMap.setGridAnnotationPrecision(0)
8082
self.mComposerMap.setGridAnnotationPosition(QgsComposerMap.Disabled,
8183
QgsComposerMap.Left)
@@ -91,6 +93,8 @@ def testGrid(self):
9193
QgsComposerMap.Right)
9294
self.mComposerMap.setGridAnnotationDirection(QgsComposerMap.Horizontal,
9395
QgsComposerMap.Bottom)
96+
self.mComposerMap.setAnnotationFontColor(QColor(255,0,0,150))
97+
self.mComposerMap.setGridBlendMode(QPainter.CompositionMode_Overlay)
9498
checker = QgsCompositionChecker()
9599
myPath = os.path.join(TEST_DATA_DIR,
96100
'control_images',

0 commit comments

Comments
 (0)
Please sign in to comment.