Skip to content

Commit 9fcbbc3

Browse files
committed
Better fix for drawing the new geometry types
1 parent 710e7f7 commit 9fcbbc3

File tree

2 files changed

+27
-60
lines changed

2 files changed

+27
-60
lines changed

src/core/geometry/qgsgeometryimport.cpp

-36
Original file line numberDiff line numberDiff line change
@@ -43,42 +43,6 @@ QgsAbstractGeometryV2* QgsGeometryImport::geomFromWkb( const unsigned char* wkb
4343

4444
geom = geomFromWkbType( QgsWKBTypes::Type( type ) );
4545

46-
#if 0
47-
type = QgsWKBTypes::flatType( QgsWKBTypes::Type( type ) );
48-
switch ( type )
49-
{
50-
case QgsWKBTypes::Point:
51-
geom = new QgsPointV2();
52-
break;
53-
case QgsWKBTypes::LineString:
54-
geom = new QgsLineStringV2();
55-
break;
56-
case QgsWKBTypes::CircularString:
57-
geom = new QgsCircularStringV2();
58-
break;
59-
case QgsWKBTypes::CompoundCurve:
60-
geom = new QgsCompoundCurveV2();
61-
break;
62-
case QgsWKBTypes::Polygon:
63-
geom = new QgsPolygonV2();
64-
break;
65-
case QgsWKBTypes::CurvePolygon:
66-
geom = new QgsCurvePolygonV2();
67-
break;
68-
case QgsWKBTypes::MultiLineString:
69-
geom = new QgsMultiLineStringV2();
70-
break;
71-
case QgsWKBTypes::MultiPolygon:
72-
geom = new QgsMultiPolygonV2();
73-
break;
74-
case QgsWKBTypes::MultiPoint:
75-
geom = new QgsMultiPointV2();
76-
break;
77-
default:
78-
geom = 0;
79-
}
80-
#endif
81-
8246
if ( geom )
8347
{
8448
geom->fromWkb( wkb );

src/core/symbology-ng/qgsrendererv2.cpp

+27-24
Original file line numberDiff line numberDiff line change
@@ -246,24 +246,35 @@ void QgsFeatureRendererV2::renderFeatureWithSymbol( QgsFeature& feature, QgsSymb
246246
QgsSymbolV2::SymbolType symbolType = symbol->type();
247247

248248
const QgsGeometry* geom = feature.constGeometry();
249-
if ( !geom )
249+
if ( !geom || !geom->geometry() )
250250
{
251251
return;
252252
}
253253

254-
if ( geom->requiresConversionToStraightSegments() )
254+
//convert curve types to normal point/line/polygon ones
255+
switch ( QgsWKBTypes::flatType( geom->geometry()->wkbType() ) )
255256
{
256-
//geometry requires conversion to straight segments
257-
QgsGeometry* straightGeom = new QgsGeometry( *geom );
258-
straightGeom->convertToStraightSegment();
259-
feature.setGeometry( straightGeom );
260-
geom = feature.constGeometry();
257+
case QgsWKBTypes::CurvePolygon:
258+
case QgsWKBTypes::CircularString:
259+
case QgsWKBTypes::CompoundCurve:
260+
case QgsWKBTypes::MultiSurface:
261+
case QgsWKBTypes::MultiCurve:
262+
{
263+
QgsAbstractGeometryV2* g = geom->geometry()->segmentize();
264+
if ( !g )
265+
{
266+
return;
267+
}
268+
feature.setGeometry( new QgsGeometry( g ) );
269+
geom = feature.constGeometry();
270+
}
271+
default:
272+
break;
261273
}
262274

263-
switch ( geom->wkbType() )
275+
switch ( QgsWKBTypes::flatType( geom->geometry()->wkbType() ) )
264276
{
265-
case QGis::WKBPoint:
266-
case QGis::WKBPoint25D:
277+
case QgsWKBTypes::Point:
267278
{
268279
if ( symbolType != QgsSymbolV2::Marker )
269280
{
@@ -278,9 +289,7 @@ void QgsFeatureRendererV2::renderFeatureWithSymbol( QgsFeature& feature, QgsSymb
278289
// renderVertexMarker( pt, context );
279290
}
280291
break;
281-
282-
case QGis::WKBLineString:
283-
case QGis::WKBLineString25D:
292+
case QgsWKBTypes::LineString:
284293
{
285294
if ( symbolType != QgsSymbolV2::Line )
286295
{
@@ -295,9 +304,7 @@ void QgsFeatureRendererV2::renderFeatureWithSymbol( QgsFeature& feature, QgsSymb
295304
renderVertexMarkerPolyline( pts, context );
296305
}
297306
break;
298-
299-
case QGis::WKBPolygon:
300-
case QGis::WKBPolygon25D:
307+
case QgsWKBTypes::Polygon:
301308
{
302309
if ( symbolType != QgsSymbolV2::Fill )
303310
{
@@ -314,8 +321,7 @@ void QgsFeatureRendererV2::renderFeatureWithSymbol( QgsFeature& feature, QgsSymb
314321
}
315322
break;
316323

317-
case QGis::WKBMultiPoint:
318-
case QGis::WKBMultiPoint25D:
324+
case QgsWKBTypes::MultiPoint:
319325
{
320326
if ( symbolType != QgsSymbolV2::Marker )
321327
{
@@ -340,8 +346,7 @@ void QgsFeatureRendererV2::renderFeatureWithSymbol( QgsFeature& feature, QgsSymb
340346
}
341347
break;
342348

343-
case QGis::WKBMultiLineString:
344-
case QGis::WKBMultiLineString25D:
349+
case QgsWKBTypes::MultiLineString:
345350
{
346351
if ( symbolType != QgsSymbolV2::Line )
347352
{
@@ -366,8 +371,7 @@ void QgsFeatureRendererV2::renderFeatureWithSymbol( QgsFeature& feature, QgsSymb
366371
}
367372
break;
368373

369-
case QGis::WKBMultiPolygon:
370-
case QGis::WKBMultiPolygon25D:
374+
case QgsWKBTypes::MultiPolygon:
371375
{
372376
if ( symbolType != QgsSymbolV2::Fill )
373377
{
@@ -390,9 +394,8 @@ void QgsFeatureRendererV2::renderFeatureWithSymbol( QgsFeature& feature, QgsSymb
390394
if ( drawVertexMarker )
391395
renderVertexMarkerPolygon( pts, ( holes.count() ? &holes : NULL ), context );
392396
}
397+
break;
393398
}
394-
break;
395-
396399
default:
397400
QgsDebugMsg( QString( "feature %1: unsupported wkb type 0x%2 for rendering" ).arg( feature.id() ).arg( geom->wkbType(), 0, 16 ) );
398401
}

0 commit comments

Comments
 (0)