This is an automated email from the git hooks/post-receive script. sebastic-guest pushed a commit to branch master in repository qgis.
commit 741a37dba30d58514a3befce257b89daafb2aca7 Author: Bas Couwenberg <sebas...@xs4all.nl> Date: Sat Mar 1 14:41:13 2014 +0100 Add patch from upstream release_2.2 branch: 0001-Ensure-draw-line-only-inside-polygon-works-correctly.patch --- ...-line-only-inside-polygon-works-correctly.patch | 108 +++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/debian/patches/0001-Ensure-draw-line-only-inside-polygon-works-correctly.patch b/debian/patches/0001-Ensure-draw-line-only-inside-polygon-works-correctly.patch new file mode 100644 index 0000000..c2c4b49 --- /dev/null +++ b/debian/patches/0001-Ensure-draw-line-only-inside-polygon-works-correctly.patch @@ -0,0 +1,108 @@ +From df7f207ca87dacff50eb5f7d74980032c07b80d8 Mon Sep 17 00:00:00 2001 +From: Nyall Dawson <nyall.daw...@gmail.com> +Date: Sat, 1 Mar 2014 21:50:58 +1100 +Subject: Ensure draw line only inside polygon works correctly with + multipolygon rings (fix #9624) +Bug: http://hub.qgis.org/issues/9624 +Origin: https://github.com/qgis/QGIS/commit/df7f207ca87dacff50eb5f7d74980032c07b80d8 + +--- + src/core/symbology-ng/qgslinesymbollayerv2.cpp | 60 ++++++++++++++++++------ + src/core/symbology-ng/qgslinesymbollayerv2.h | 3 ++ + 2 files changed, 48 insertions(+), 15 deletions(-) + +--- a/src/core/symbology-ng/qgslinesymbollayerv2.cpp ++++ b/src/core/symbology-ng/qgslinesymbollayerv2.cpp +@@ -174,6 +174,51 @@ void QgsSimpleLineSymbolLayerV2::stopRen + Q_UNUSED( context ); + } + ++void QgsSimpleLineSymbolLayerV2::renderPolygonOutline( const QPolygonF& points, QList<QPolygonF>* rings, QgsSymbolV2RenderContext& context ) ++{ ++ QPainter* p = context.renderContext().painter(); ++ if ( !p ) ++ { ++ return; ++ } ++ ++ if ( mDrawInsidePolygon ) ++ { ++ //only drawing the line on the interior of the polygon, so set clip path for painter ++ p->save(); ++ QPainterPath clipPath; ++ clipPath.addPolygon( points ); ++ ++ if ( rings != NULL ) ++ { ++ //add polygon rings ++ QList<QPolygonF>::const_iterator it = rings->constBegin(); ++ for ( ; it != rings->constEnd(); ++it ) ++ { ++ QPolygonF ring = *it; ++ clipPath.addPolygon( ring ); ++ } ++ } ++ ++ //use intersect mode, as a clip path may already exist (eg, for composer maps) ++ p->setClipPath( clipPath, Qt::IntersectClip ); ++ } ++ ++ renderPolyline( points, context ); ++ if ( rings ) ++ { ++ foreach ( const QPolygonF& ring, *rings ) ++ renderPolyline( ring, context ); ++ } ++ ++ if ( mDrawInsidePolygon ) ++ { ++ //restore painter to reset clip path ++ p->restore(); ++ } ++ ++} ++ + void QgsSimpleLineSymbolLayerV2::renderPolyline( const QPolygonF& points, QgsSymbolV2RenderContext& context ) + { + QPainter* p = context.renderContext().painter(); +@@ -196,15 +241,6 @@ void QgsSimpleLineSymbolLayerV2::renderP + return; + } + +- if ( mDrawInsidePolygon ) +- { +- //only drawing the line on the interior of the polygon, so set clip path for painter +- p->save(); +- QPainterPath clipPath; +- clipPath.addPolygon( points ); +- p->setClipPath( clipPath, Qt::IntersectClip ); +- } +- + if ( offset == 0 ) + { + p->drawPolyline( points ); +@@ -214,12 +250,6 @@ void QgsSimpleLineSymbolLayerV2::renderP + double scaledOffset = offset * QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mOffsetUnit ); + p->drawPolyline( ::offsetLine( points, scaledOffset ) ); + } +- +- if ( mDrawInsidePolygon ) +- { +- //restore painter to reset clip path +- p->restore(); +- } + } + + QgsStringMap QgsSimpleLineSymbolLayerV2::properties() const +--- a/src/core/symbology-ng/qgslinesymbollayerv2.h ++++ b/src/core/symbology-ng/qgslinesymbollayerv2.h +@@ -52,6 +52,9 @@ class CORE_EXPORT QgsSimpleLineSymbolLay + + void renderPolyline( const QPolygonF& points, QgsSymbolV2RenderContext& context ); + ++ //overriden so that clip path can be set when using draw inside polygon option ++ void renderPolygonOutline( const QPolygonF& points, QList<QPolygonF>* rings, QgsSymbolV2RenderContext& context ); ++ + QgsStringMap properties() const; + + QgsSymbolLayerV2* clone() const; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/qgis.git _______________________________________________ Pkg-grass-devel mailing list Pkg-grass-devel@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel