[postgis-commits] svn - r3824 - trunk/postgis

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Tue Mar 10 07:59:40 PDT 2009


Author: colivier
Date: 2009-03-10 07:59:39 -0700 (Tue, 10 Mar 2009)
New Revision: 3824

Modified:
   trunk/postgis/lwgeom_svg.c
Log:
Add SVG L Command in absolute path according to BNF SVG Path. Add some forgotten geometry release.

Modified: trunk/postgis/lwgeom_svg.c
===================================================================
--- trunk/postgis/lwgeom_svg.c	2009-03-10 13:37:18 UTC (rev 3823)
+++ trunk/postgis/lwgeom_svg.c	2009-03-10 14:59:39 UTC (rev 3824)
@@ -14,6 +14,7 @@
  * Originally written by: Klaus Förster <klaus at svg.cc>
  * Refactored by: Olivier Courtin (Camptocamp)
  *
+ * BNF SVG Path: <http://www.w3.org/TR/SVG/paths.html#PathDataBNF>
  **********************************************************************/
 
 
@@ -285,7 +286,7 @@
         for (i=0 ; i<insp->ngeometries ; i++) {
                 point = lwgeom_getpoint_inspected(insp, i);
                 size += assvg_point_size(point, relative, precision);
-                /* lwpoint_release(point); */
+                if (point) lwpoint_release(point);
 	}
         size += sizeof(" ") * --i;  /* Arbitrary comma separator */
 
@@ -391,7 +392,7 @@
         for (i=0 ; i<insp->ngeometries ; i++) {
                 poly = lwgeom_getpoly_inspected(insp, i);
                 size += assvg_polygon_size(poly, relative, precision);
-                /* lwpoly_release(poly); */
+                if (poly) lwpoly_release(poly);
 	}
         size += sizeof(" ") * --i;   /* SVG whitespace Separator */
 
@@ -410,7 +411,7 @@
                 if (i) ptr += sprintf(ptr, " ");  /* SVG whitespace Separator */
                 poly = lwgeom_getpoly_inspected(insp, i);
                 ptr += assvg_polygon_buf(poly, ptr, relative, precision);
-                /* lwpoly_release(poly); */
+                if (poly) lwpoly_release(poly);
          }
 
 	return (ptr-output);
@@ -646,9 +647,9 @@
 		/* SVG Y axis is reversed, an no need to transform 0 into -0 */
                 sprintf(y, "%.*f", precision, fabs(pt.y) ? pt.y * -1:pt.y);
                 trim_trailing_zeros(y);
-		if (i) ptr += sprintf(ptr, " ");
+		if (i == 1) ptr += sprintf(ptr, " L ");
+		else if (i) ptr += sprintf(ptr, " ");
                 ptr += sprintf(ptr,"%s %s", x, y);
-		/* FIXME Could we really omit SVG L after M start point ? */
         }
 
 	return (ptr-output);
@@ -662,5 +663,5 @@
 pointArray_svg_size(POINTARRAY *pa, int precision)
 {
         return (MAX_DIGS_DOUBLE + precision + sizeof(", "))
-                        * 2 * pa->npoints + sizeof("l ");
+                        * 2 * pa->npoints + sizeof(" L ");
 }



More information about the postgis-commits mailing list