From 3c85c7ec95c6bb1bbbb48b1963f089babc30ecd4 Mon Sep 17 00:00:00 2001 From: Radim Blazek Date: Fri, 16 Oct 2015 17:26:52 +0200 Subject: [PATCH] [GRASS] distinguish symbol for left/right broken boundary --- src/plugins/grass/qgsgrasseditrenderer.cpp | 19 +++++++++++-------- src/providers/grass/qgsgrassvectormap.cpp | 12 ++++++++---- src/providers/grass/qgsgrassvectormap.h | 7 ++++--- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/plugins/grass/qgsgrasseditrenderer.cpp b/src/plugins/grass/qgsgrasseditrenderer.cpp index 98ccd3ec2a6..5213c2dfb99 100644 --- a/src/plugins/grass/qgsgrasseditrenderer.cpp +++ b/src/plugins/grass/qgsgrasseditrenderer.cpp @@ -38,16 +38,18 @@ QgsGrassEditRenderer::QgsGrassEditRenderer() QHash colors; //colors.insert( QgsGrassVectorMap::TopoUndefined, QColor( 125, 125, 125 ) ); colors.insert( QgsGrassVectorMap::TopoLine, QColor( Qt::black ) ); - colors.insert( QgsGrassVectorMap::TopoBoundary0, QColor( Qt::red ) ); - colors.insert( QgsGrassVectorMap::TopoBoundary1, QColor( 255, 125, 0 ) ); - colors.insert( QgsGrassVectorMap::TopoBoundary2, QColor( Qt::green ) ); + colors.insert( QgsGrassVectorMap::TopoBoundaryError, QColor( Qt::red ) ); + colors.insert( QgsGrassVectorMap::TopoBoundaryErrorLeft, QColor( 255, 125, 0 ) ); + colors.insert( QgsGrassVectorMap::TopoBoundaryErrorRight, QColor( 255, 125, 0 ) ); + colors.insert( QgsGrassVectorMap::TopoBoundaryOk, QColor( Qt::green ) ); QHash labels; //labels.insert( QgsGrassVectorMap::TopoUndefined, "Unknown type" ); labels.insert( QgsGrassVectorMap::TopoLine, "Line" ); - labels.insert( QgsGrassVectorMap::TopoBoundary0, "Boundary (isolated)" ); - labels.insert( QgsGrassVectorMap::TopoBoundary1, "Boundary (area on one side)" ); - labels.insert( QgsGrassVectorMap::TopoBoundary2, "Boundary (areas on both sides)" ); + labels.insert( QgsGrassVectorMap::TopoBoundaryError, "Boundary (topological error on both sides)" ); + labels.insert( QgsGrassVectorMap::TopoBoundaryErrorLeft, "Boundary (topological error on the left side)" ); + labels.insert( QgsGrassVectorMap::TopoBoundaryErrorRight, "Boundary (topological error on the right side)" ); + labels.insert( QgsGrassVectorMap::TopoBoundaryOk, "Boundary (correct)" ); QgsCategoryList categoryList; @@ -129,8 +131,9 @@ QgsSymbolV2* QgsGrassEditRenderer::symbolForFeature( QgsFeature& feature, QgsRen { symbol = mMarkerRenderer->symbolForFeature( feature, context ); } - else if ( symbolCode == QgsGrassVectorMap::TopoLine || symbolCode == QgsGrassVectorMap::TopoBoundary0 || - symbolCode == QgsGrassVectorMap::TopoBoundary1 || symbolCode == QgsGrassVectorMap::TopoBoundary2 ) + else if ( symbolCode == QgsGrassVectorMap::TopoLine || symbolCode == QgsGrassVectorMap::TopoBoundaryError || + symbolCode == QgsGrassVectorMap::TopoBoundaryErrorLeft || symbolCode == QgsGrassVectorMap::TopoBoundaryErrorRight || + symbolCode == QgsGrassVectorMap::TopoBoundaryOk ) { symbol = mLineRenderer->symbolForFeature( feature, context ); } diff --git a/src/providers/grass/qgsgrassvectormap.cpp b/src/providers/grass/qgsgrassvectormap.cpp index 2ac4ea54c74..3cb3ae48efa 100644 --- a/src/providers/grass/qgsgrassvectormap.cpp +++ b/src/providers/grass/qgsgrassvectormap.cpp @@ -782,15 +782,19 @@ QgsGrassVectorMap::TopoSymbol QgsGrassVectorMap::topoSymbol( int lid ) Vect_get_line_areas( mMap, lid, &left, &right ); if ( left != 0 && right != 0 ) { - symbol = TopoBoundary2; + symbol = TopoBoundaryOk; } else if ( left == 0 && right == 0 ) { - symbol = TopoBoundary0; + symbol = TopoBoundaryError; } - else + else if ( left == 0 ) { - symbol = TopoBoundary1; + symbol = TopoBoundaryErrorLeft; + } + else if ( right == 0 ) + { + symbol = TopoBoundaryErrorRight; } } QgsDebugMsgLevel( QString( "lid = %1 type = %2 symbol = %3" ).arg( lid ).arg( type ).arg( symbol ), 3 ); diff --git a/src/providers/grass/qgsgrassvectormap.h b/src/providers/grass/qgsgrassvectormap.h index 3ce24306c27..1e00759a627 100644 --- a/src/providers/grass/qgsgrassvectormap.h +++ b/src/providers/grass/qgsgrassvectormap.h @@ -34,9 +34,10 @@ class GRASS_LIB_EXPORT QgsGrassVectorMap : public QObject TopoUndefined = 0, TopoPoint, TopoLine, - TopoBoundary0, - TopoBoundary1, - TopoBoundary2, + TopoBoundaryError, // both sides topology broken + TopoBoundaryErrorLeft, // left side topology broken + TopoBoundaryErrorRight, // right side topology broken + TopoBoundaryOk, TopoCentroidIn, TopoCentroidOut, TopoCentroidDupl,