@@ -104,25 +104,6 @@ QgsSymbolV2::QgsSymbolV2( SymbolType type, const QgsSymbolLayerV2List& layers )
104
104
}
105
105
}
106
106
107
- const unsigned char * QgsSymbolV2::_getPoint ( QPointF& pt, QgsRenderContext& context, const unsigned char * wkb )
108
- {
109
- QgsConstWkbPtr wkbPtr ( wkb + 1 );
110
- unsigned int wkbType;
111
- wkbPtr >> wkbType >> pt.rx () >> pt.ry ();
112
-
113
- if (( QgsWKBTypes::Type )wkbType == QgsWKBTypes::Point25D || ( QgsWKBTypes::Type )wkbType == QgsWKBTypes::PointZ )
114
- wkbPtr += sizeof ( double );
115
-
116
- if ( context.coordinateTransform () )
117
- {
118
- double z = 0 ; // dummy variable for coordiante transform
119
- context.coordinateTransform ()->transformInPlace ( pt.rx (), pt.ry (), z );
120
- }
121
-
122
- context.mapToPixel ().transformInPlace ( pt.rx (), pt.ry () );
123
-
124
- return wkbPtr;
125
- }
126
107
127
108
const unsigned char * QgsSymbolV2::_getLineString ( QPolygonF& pts, QgsRenderContext& context, const unsigned char * wkb, bool clipToExtent )
128
109
{
@@ -690,26 +671,15 @@ void QgsSymbolV2::renderFeature( const QgsFeature& feature, QgsRenderContext& co
690
671
context.setGeometry ( geom->geometry () );
691
672
692
673
// convert curve types to normal point/line/polygon ones
693
- switch ( QgsWKBTypes::flatType ( geom->geometry ()->wkbType () ) )
674
+ if ( geom->geometry ()->hasCurvedSegments ( ) )
694
675
{
695
- case QgsWKBTypes::CurvePolygon:
696
- case QgsWKBTypes::CircularString:
697
- case QgsWKBTypes::CompoundCurve:
698
- case QgsWKBTypes::MultiSurface:
699
- case QgsWKBTypes::MultiCurve:
676
+ QgsAbstractGeometryV2* g = geom->geometry ()->segmentize ();
677
+ if ( !g )
700
678
{
701
- QgsAbstractGeometryV2* g = geom->geometry ()->segmentize ();
702
- if ( !g )
703
- {
704
- return ;
705
- }
706
- segmentizedGeometry = new QgsGeometry ( g );
707
- deleteSegmentizedGeometry = true ;
708
- break ;
679
+ return ;
709
680
}
710
-
711
- default :
712
- break ;
681
+ segmentizedGeometry = new QgsGeometry ( g );
682
+ deleteSegmentizedGeometry = true ;
713
683
}
714
684
715
685
switch ( QgsWKBTypes::flatType ( segmentizedGeometry->geometry ()->wkbType () ) )
@@ -722,8 +692,10 @@ void QgsSymbolV2::renderFeature( const QgsFeature& feature, QgsRenderContext& co
722
692
QgsDebugMsg ( " point can be drawn only with marker symbol!" );
723
693
break ;
724
694
}
725
- _getPoint ( pt, context, segmentizedGeometry->asWkb () );
695
+
696
+ _getPoint ( pt, context, segmentizedGeometry->asPoint () );
726
697
( static_cast <QgsMarkerSymbolV2*>( this ) )->renderPoint ( pt, &feature, context, layer, selected );
698
+
727
699
if ( context.testFlag ( QgsRenderContext::DrawSymbolBounds ) )
728
700
{
729
701
// draw debugging rect
@@ -769,14 +741,11 @@ void QgsSymbolV2::renderFeature( const QgsFeature& feature, QgsRenderContext& co
769
741
break ;
770
742
}
771
743
772
- QgsConstWkbPtr wkbPtr ( segmentizedGeometry->asWkb () + 1 + sizeof ( int ) );
773
- unsigned int num;
774
- wkbPtr >> num;
775
- const unsigned char * ptr = wkbPtr;
744
+ QgsMultiPoint multiPoint = segmentizedGeometry->asMultiPoint ();
776
745
777
- for ( unsigned int i = 0 ; i < num; ++i )
746
+ Q_FOREACH ( const QgsPoint& point, multiPoint )
778
747
{
779
- ptr = QgsConstWkbPtr ( _getPoint ( pt, context, ptr ) );
748
+ _getPoint ( pt, context, point );
780
749
static_cast <QgsMarkerSymbolV2*>( this )->renderPoint ( pt, &feature, context, layer, selected );
781
750
}
782
751
}
@@ -888,8 +857,7 @@ QgsSymbolV2RenderContext::QgsSymbolV2RenderContext( QgsRenderContext& c, QgsSymb
888
857
mSelected( selected ),
889
858
mRenderHints( renderHints ),
890
859
mFeature( f ),
891
- mFields( fields ),
892
- mExpressionContext( c.expressionContext() )
860
+ mFields( fields )
893
861
{
894
862
}
895
863
0 commit comments