[QGIS Commit] r12678 - in trunk/qgis/src: plugins/grass providers/grass

svn_qgis at osgeo.org svn_qgis at osgeo.org
Wed Jan 6 06:23:46 EST 2010


Author: rblazek
Date: 2010-01-06 06:23:43 -0500 (Wed, 06 Jan 2010)
New Revision: 12678

Modified:
   trunk/qgis/src/plugins/grass/qgsgrassedit.cpp
   trunk/qgis/src/providers/grass/qgsgrassprovider.cpp
   trunk/qgis/src/providers/grass/qgsgrassprovider.h
Log:
fix for #1169, added check for isle's area

Modified: trunk/qgis/src/plugins/grass/qgsgrassedit.cpp
===================================================================
--- trunk/qgis/src/plugins/grass/qgsgrassedit.cpp	2010-01-06 09:58:28 UTC (rev 12677)
+++ trunk/qgis/src/plugins/grass/qgsgrassedit.cpp	2010-01-06 11:23:43 UTC (rev 12678)
@@ -892,10 +892,10 @@
 
       if ( !( mProvider->lineAreas( line, &left, &right ) ) ) return 0;
 
-      /* Count areas/isles on both sides */
+      /* Count areas on both sides */
       nareas = 0;
-      if ( left != 0 ) nareas++;
-      if ( right != 0 ) nareas++;
+      if ( left > 0 || (left < 0 && mProvider->isleArea(-left) > 0 ) ) nareas++;
+      if ( right > 0 || (right < 0 && mProvider->isleArea(-right) > 0 ) ) nareas++;
       if ( nareas == 0 ) return SYMB_BOUNDARY_0;
       else if ( nareas == 1 ) return SYMB_BOUNDARY_1;
       else return SYMB_BOUNDARY_2;

Modified: trunk/qgis/src/providers/grass/qgsgrassprovider.cpp
===================================================================
--- trunk/qgis/src/providers/grass/qgsgrassprovider.cpp	2010-01-06 09:58:28 UTC (rev 12677)
+++ trunk/qgis/src/providers/grass/qgsgrassprovider.cpp	2010-01-06 11:23:43 UTC (rev 12678)
@@ -1749,6 +1749,18 @@
   return true;
 }
 
+int QgsGrassProvider::isleArea( int isle )
+{
+  QgsDebugMsgLevel( "entered.", 3 );
+
+  if ( !Vect_isle_alive( mMap, isle ) )
+  {
+    return 0;
+  }
+
+  return ( Vect_get_isle_area( mMap, isle ) );
+}
+
 int QgsGrassProvider::centroidArea( int centroid )
 {
   QgsDebugMsgLevel( "entered.", 3 );

Modified: trunk/qgis/src/providers/grass/qgsgrassprovider.h
===================================================================
--- trunk/qgis/src/providers/grass/qgsgrassprovider.h	2010-01-06 09:58:28 UTC (rev 12677)
+++ trunk/qgis/src/providers/grass/qgsgrassprovider.h	2010-01-06 11:23:43 UTC (rev 12678)
@@ -280,6 +280,12 @@
      */
     bool lineAreas( int line, int *left, int *right );
 
+    /** Get isle area
+     *   @param isle number
+     *   @return area number 
+     */
+    int isleArea( int isle );
+
     /** Get centroid area
      *   @param centroid line number
      *   @return area number (negative for island)



More information about the QGIS-commit mailing list