Changeset 3824

Show
Ignore:
Timestamp:
03/10/09 07:59:39 (3 years ago)
Author:
colivier
Message:

Add SVG L Command in absolute path according to BNF SVG Path. Add some forgotten geometry release.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/postgis/lwgeom_svg.c

    r3813 r3824  
    1515 * Refactored by: Olivier Courtin (Camptocamp) 
    1616 * 
     17 * BNF SVG Path: <http://www.w3.org/TR/SVG/paths.html#PathDataBNF> 
    1718 **********************************************************************/ 
    1819 
     
    286287                point = lwgeom_getpoint_inspected(insp, i); 
    287288                size += assvg_point_size(point, relative, precision); 
    288                 /* lwpoint_release(point); */ 
     289                if (point) lwpoint_release(point); 
    289290        } 
    290291        size += sizeof(" ") * --i;  /* Arbitrary comma separator */ 
     
    392393                poly = lwgeom_getpoly_inspected(insp, i); 
    393394                size += assvg_polygon_size(poly, relative, precision); 
    394                 /* lwpoly_release(poly); */ 
     395                if (poly) lwpoly_release(poly); 
    395396        } 
    396397        size += sizeof(" ") * --i;   /* SVG whitespace Separator */ 
     
    411412                poly = lwgeom_getpoly_inspected(insp, i); 
    412413                ptr += assvg_polygon_buf(poly, ptr, relative, precision); 
    413                 /* lwpoly_release(poly); */ 
     414                if (poly) lwpoly_release(poly); 
    414415         } 
    415416 
     
    647648                sprintf(y, "%.*f", precision, fabs(pt.y) ? pt.y * -1:pt.y); 
    648649                trim_trailing_zeros(y); 
    649                 if (i) ptr += sprintf(ptr, " "); 
     650                if (i == 1) ptr += sprintf(ptr, " L "); 
     651                else if (i) ptr += sprintf(ptr, " "); 
    650652                ptr += sprintf(ptr,"%s %s", x, y); 
    651                 /* FIXME Could we really omit SVG L after M start point ? */ 
    652653        } 
    653654 
     
    663664{ 
    664665        return (MAX_DIGS_DOUBLE + precision + sizeof(", ")) 
    665                         * 2 * pa->npoints + sizeof("l "); 
    666 } 
     666                        * 2 * pa->npoints + sizeof(" L "); 
     667}