]> granicus.if.org Git - postgis/commitdiff
Added code that will automatically generate the spatial images used in the documentat...
authorKevin Neufeld <kneufeld.ca@gmail.com>
Wed, 6 May 2009 23:20:35 +0000 (23:20 +0000)
committerKevin Neufeld <kneufeld.ca@gmail.com>
Wed, 6 May 2009 23:20:35 +0000 (23:20 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@4075 b70326c6-7e19-0410-871a-916f4a2858ee

34 files changed:
configure.ac
doc/Makefile.in
doc/html/image_src/Makefile.in [new file with mode: 0644]
doc/html/image_src/generator.c [new file with mode: 0644]
doc/html/image_src/st_centroid01.svg [deleted file]
doc/html/image_src/st_centroid01.wkt [new file with mode: 0644]
doc/html/image_src/st_centroid02.svg [deleted file]
doc/html/image_src/st_centroid02.wkt [new file with mode: 0644]
doc/html/image_src/st_centroid03.svg [deleted file]
doc/html/image_src/st_centroid03.wkt [new file with mode: 0644]
doc/html/image_src/st_centroid04.svg [deleted file]
doc/html/image_src/st_centroid04.wkt [new file with mode: 0644]
doc/html/image_src/st_crosses01.wkt [new file with mode: 0644]
doc/html/image_src/st_crosses02.wkt [new file with mode: 0644]
doc/html/image_src/st_crosses03.wkt [new file with mode: 0644]
doc/html/image_src/st_crosses04.wkt [new file with mode: 0644]
doc/html/image_src/st_issimple01.wkt [new file with mode: 0644]
doc/html/image_src/st_issimple02.wkt [new file with mode: 0644]
doc/html/image_src/st_issimple03.wkt [new file with mode: 0644]
doc/html/image_src/st_issimple04.wkt [new file with mode: 0644]
doc/html/image_src/st_issimple05.wkt [new file with mode: 0644]
doc/html/image_src/st_issimple06.wkt [new file with mode: 0644]
doc/html/image_src/st_issimple07.wkt [new file with mode: 0644]
doc/html/image_src/st_isvalid01.wkt [new file with mode: 0644]
doc/html/image_src/st_isvalid02.wkt [new file with mode: 0644]
doc/html/image_src/st_isvalid03.wkt [new file with mode: 0644]
doc/html/image_src/st_isvalid04.wkt [new file with mode: 0644]
doc/html/image_src/st_isvalid05.wkt [new file with mode: 0644]
doc/html/image_src/st_touches01.svg [deleted file]
doc/html/image_src/st_touches02.svg [deleted file]
doc/html/image_src/st_touches03.svg [deleted file]
doc/html/image_src/st_touches04.svg [deleted file]
doc/html/image_src/st_touches05.svg [deleted file]
doc/html/image_src/st_touches06.svg [deleted file]

index 61e337751909ccf4c5605976c638645e3b94519f..3f2ad0c0f162a5df9b7a3a9cc0ebdac648100670 100644 (file)
@@ -531,7 +531,7 @@ AC_SUBST([SHLIB_LINK])
 dnl AC_MSG_RESULT([SHLIB_LINK: $SHLIB_LINK])
 
 dnl Output the relevant files
-AC_OUTPUT([liblwgeom/Makefile liblwgeom/cunit/Makefile postgis/Makefile postgis/sqldefines.h loader/Makefile topology/Makefile regress/Makefile doc/Makefile])
+AC_OUTPUT([liblwgeom/Makefile liblwgeom/cunit/Makefile postgis/Makefile postgis/sqldefines.h loader/Makefile topology/Makefile regress/Makefile doc/Makefile doc/html/image_src/Makefile])
 
 dnl ===========================================================================
 dnl Display the configuration status information
index dbb45af0a6c2b191b01d0e08db3c62ec4f0f17ab..30f06fbfb07e3a19ca9670666e547d9a1b792b89 100644 (file)
@@ -106,9 +106,12 @@ doxygen.cfg: doxygen.cfg.in
 doxygen: doxygen.cfg
        doxygen $<
 
+images: 
+       make -C html/image_src
+       
 clean:
-       @rm -f \
-               postgis-out.xml
+       make -C html/image_src clean
+       @rm -f  postgis-out.xml
 
 maintainer-clean: clean
        @rm -f html/*.html \
diff --git a/doc/html/image_src/Makefile.in b/doc/html/image_src/Makefile.in
new file mode 100644 (file)
index 0000000..0ab5991
--- /dev/null
@@ -0,0 +1,64 @@
+# **********************************************************************
+# * $Id: Makefile.in
+# *
+# * PostGIS - Spatial Types for PostgreSQL
+# * http://postgis.refractions.net
+# * Copyright 2008 Kevin Neufeld
+# *
+# * This is free software; you can redistribute and/or modify it under
+# * the terms of the GNU General Public Licence. See the COPYING file.
+# *
+# **********************************************************************
+
+CC=@CC@
+CFLAGS=@CFLAGS@ @WARNFLAGS@
+
+CUNIT_LDFLAGS=@CUNIT_LDFLAGS@
+CUNIT_CPPFLAGS=@CUNIT_CPPFLAGS@ -I../../../liblwgeom
+
+IMAGES= \
+       ../images/st_centroid01.png \
+       ../images/st_centroid02.png \
+       ../images/st_centroid03.png \
+       ../images/st_centroid04.png \
+       ../images/st_crosses01.png \
+       ../images/st_crosses02.png \
+       ../images/st_crosses03.png \
+       ../images/st_crosses04.png \
+       ../images/st_issimple01.png \
+       ../images/st_issimple02.png \
+       ../images/st_issimple03.png \
+       ../images/st_issimple04.png \
+       ../images/st_issimple05.png \
+       ../images/st_issimple06.png \
+       ../images/st_issimple07.png \
+       ../images/st_isvalid01.png \
+       ../images/st_isvalid02.png \
+       ../images/st_isvalid03.png \
+       ../images/st_isvalid04.png \
+       ../images/st_isvalid05.png 
+       
+OBJS=generator.o
+
+# Build the generator
+all: $(IMAGES)
+
+# Command to build each of the .o files
+$(OBJS): %.o: %.c
+       $(CC) $(CFLAGS) $(CUNIT_CPPFLAGS) -c -o $@ $<
+       
+# Command to build each of the .wkt files
+$(IMAGES): ../images/%.png: %.wkt generator
+       @./generator $<
+
+# Build the main unit test executable
+generator: ../../../liblwgeom/liblwgeom.a $(OBJS)
+       $(CC) -o $@ $(OBJS) ../../../liblwgeom/liblwgeom.a -lm $(CUNIT_LDFLAGS)
+
+# Clean target
+clean:
+       @rm -f $(OBJS)
+       @rm -f ../images/${IMAGES}
+       @rm -f generator
+       @rm -f tmp[0-9].png
+
diff --git a/doc/html/image_src/generator.c b/doc/html/image_src/generator.c
new file mode 100644 (file)
index 0000000..188db0c
--- /dev/null
@@ -0,0 +1,355 @@
+/**********************************************************************\r
+ * $Id: generator.c 3967 2009-05-04 16:48:11Z kneufeld $\r
+ *\r
+ * PostGIS - Spatial Types for PostgreSQL\r
+ * http://postgis.refractions.net\r
+ * Copyright 2008 Kevin Neufeld\r
+ *\r
+ * This is free software; you can redistribute and/or modify it under\r
+ * the terms of the GNU General Public Licence. See the COPYING file.\r
+ *\r
+ * This program will generate a .png image for every .wkt file specified \r
+ * in this directory's Makefile.  Every .wkt file may contain several \r
+ * entries of geometries represented as WKT strings.  Every line in \r
+ * a wkt file is stylized using a predetermined style (line thinkness, \r
+ * fill color, etc) currently hard coded in this programs main function.\r
+ *\r
+ * In order to generate a png file, ImageMagicK must be installed in the\r
+ * user's path as system calls are invoked to "convert".  In this manner,\r
+ * WKT files are converted into SVG syntax and rasterized as png.  (PostGIS's\r
+ * internal SVG methods could not be used dues to syntax issues with ImageMagick)\r
+ *\r
+ * The goal of this application is to dynamically generate all the spatial\r
+ * pictures used in PostGIS's documentation pages.\r
+ *\r
+ * Note: the coordinates of the supplied geometries should be within the x-y range \r
+ * of 200, otherwise they will appear outside of the generated image.\r
+ * \r
+ **********************************************************************/\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include "CUnit/Basic.h"\r
+\r
+#include "lwalgorithm.h"\r
+\r
+#define SHOW_DIGS_DOUBLE 15\r
+#define MAX_DOUBLE_PRECISION 15\r
+#define MAX_DIGS_DOUBLE (SHOW_DIGS_DOUBLE + 2) /* +2 for dot and sign */\r
+\r
+// Some global styling variables\r
+char *imageSize = "200x200";\r
+\r
+typedef struct {       \r
+       int       pointSize;\r
+       char *pointColor;\r
+       \r
+       int   lineWidth;\r
+       char *lineColor;\r
+       \r
+       char *polygonFillColor;\r
+       char *polygonStrokeColor;\r
+       int   polygonStrokeWidth;\r
+} LAYERSTYLE;\r
+\r
+\r
+/**\r
+ * Set up liblwgeom to run in stand-alone mode using the \r
+ * usual system memory handling functions.\r
+ */\r
+void lwgeom_init_allocators(void) {\r
+               /* liblwgeom callback - install default handlers */\r
+               lwgeom_install_default_allocators();\r
+}\r
+\r
+/**\r
+ * Writes the coordinates of a POINTARRAY to a char* where ordinates are \r
+ * separated by a comma and coordinates by a space so that the coordinate\r
+ * pairs can be interpreted by ImageMagick's SVG draw command.\r
+ *\r
+ * @param output a reference to write the POINTARRAY to\r
+ * @param pa a reference to a POINTARRAY\r
+ * @return the numbers of character written to *output\r
+ */\r
+static size_t \r
+pointarrayToString(char *output, POINTARRAY *pa) {\r
+       char x[MAX_DIGS_DOUBLE+MAX_DOUBLE_PRECISION+1];\r
+       char y[MAX_DIGS_DOUBLE+MAX_DOUBLE_PRECISION+1];\r
+       int i;\r
+       char *ptr = output;\r
+       \r
+       for ( i=0; i < pa->npoints; i++ ) {\r
+               POINT2D pt;\r
+               getPoint2d_p(pa, i, &pt);\r
+               sprintf(x, "%f", pt.x);\r
+               trim_trailing_zeros(x);\r
+               sprintf(y, "%f", pt.y);\r
+               trim_trailing_zeros(y);\r
+               if ( i ) ptr += sprintf(ptr, " ");\r
+               ptr += sprintf(ptr, "%s,%s", x, y);\r
+       }\r
+       \r
+       return (ptr - output);\r
+}\r
+\r
+/**\r
+ * Serializes a LWPOINT to a char*.  This is a helper function that partially\r
+ * writes the appropriate draw and fill commands used to generate an SVG image\r
+ * using ImageMagick's "convert" command.\r
\r
+ * @param output a char reference to write the LWPOINT to\r
+ * @param lwp a reference to a LWPOINT\r
+ * @return the numbers of character written to *output\r
+ */\r
+static size_t\r
+drawPoint(char *output, LWPOINT *lwp, LAYERSTYLE style) {\r
+       LWDEBUGF( 4, "%s", "enter drawPoint" );\r
+       \r
+       char x[MAX_DIGS_DOUBLE+MAX_DOUBLE_PRECISION+1];\r
+       char y1[MAX_DIGS_DOUBLE+MAX_DOUBLE_PRECISION+1];\r
+       char y2[MAX_DIGS_DOUBLE+MAX_DOUBLE_PRECISION+1];\r
+       char *ptr = output;\r
+       POINTARRAY *pa = lwp->point;\r
+       POINT2D p;\r
+       getPoint2d_p(pa, 0, &p);\r
+       \r
+       sprintf(x, "%f", p.x);\r
+       trim_trailing_zeros(x);\r
+       sprintf(y1, "%f", p.y);\r
+       trim_trailing_zeros(y1);\r
+       sprintf(y2, "%f", p.y + style.pointSize);\r
+       trim_trailing_zeros(y2);\r
+               \r
+       ptr += sprintf(ptr, "-fill %s -strokewidth 5 ", style.pointColor);\r
+       ptr += sprintf(ptr, "-draw \"circle %s,%s %s,%s", x, y1, x, y2);\r
+       ptr += sprintf(ptr, "'\" ");\r
+       \r
+       return (ptr - output);\r
+}\r
+\r
+/**\r
+ * Serializes a LWLINE to a char*.  This is a helper function that partially\r
+ * writes the appropriate draw and stroke commands used to generate an SVG image\r
+ * using ImageMagick's "convert" command.\r
\r
+ * @param output a char reference to write the LWLINE to\r
+ * @param lwl a reference to a LWLINE\r
+ * @return the numbers of character written to *output\r
+ */\r
+static size_t\r
+drawLineString(char *output, LWLINE *lwl, LAYERSTYLE style) {\r
+       LWDEBUGF( 4, "%s", "enter drawLineString" );\r
+       char *ptr = output;\r
+\r
+       ptr += sprintf(ptr, "-fill none -stroke %s -strokewidth %d ", style.lineColor, style.lineWidth);\r
+       ptr += sprintf(ptr, "-draw \"stroke-linecap round stroke-linejoin round path 'M ");\r
+       ptr += pointarrayToString(ptr, lwl->points );\r
+       ptr += sprintf(ptr, "'\" ");\r
+       \r
+       return (ptr - output);\r
+}\r
+\r
+/**\r
+ * Serializes a LWPOLY to a char*.  This is a helper function that partially\r
+ * writes the appropriate draw and fill commands used to generate an SVG image\r
+ * using ImageMagick's "convert" command.\r
\r
+ * @param output a char reference to write the LWPOLY to\r
+ * @param lwp a reference to a LWPOLY\r
+ * @return the numbers of character written to *output\r
+ */\r
+static size_t\r
+drawPolygon(char *output, LWPOLY *lwp, LAYERSTYLE style) {\r
+       LWDEBUGF( 4, "%s", "enter drawPolygon" );\r
+       \r
+       char *ptr = output;\r
+       int i;\r
+\r
+       ptr += sprintf(ptr, "-fill %s -stroke %s -strokewidth %d ", style.polygonFillColor, style.polygonStrokeColor, style.polygonStrokeWidth );\r
+       ptr += sprintf(ptr, "-draw \"path '");\r
+       for (i=0; i<lwp->nrings; i++) {\r
+               ptr += sprintf(ptr, "M ");\r
+               ptr += pointarrayToString(ptr, lwp->rings[i] );\r
+               ptr += sprintf(ptr, " ");\r
+       }\r
+       ptr += sprintf(ptr, "'\" ");\r
+       \r
+       return (ptr - output);\r
+}\r
+\r
+/**\r
+ * Serializes a LWGEOM to a char*.  This is a helper function that partially\r
+ * writes the appropriate draw, stroke, and fill commands used to generate an \r
+ * SVG image using ImageMagick's "convert" command.\r
\r
+ * @param output a char reference to write the LWGEOM to\r
+ * @param lwgeom a reference to a LWGEOM\r
+ * @return the numbers of character written to *output\r
+ */\r
+static size_t\r
+drawGeometry(char *output, LWGEOM *lwgeom, LAYERSTYLE style ) {\r
+       LWDEBUGF( 4, "%s", "enter drawGeometry" );\r
+       char *ptr = output;\r
+       int i;\r
+       int type = lwgeom_getType(lwgeom->type);        \r
+                               \r
+       LWDEBUGF( 4, "switching on %d", type );\r
+       switch(type) {\r
+               case POINTTYPE:\r
+                       ptr += drawPoint(ptr, (LWPOINT*)lwgeom, style );\r
+                       break;\r
+               case LINETYPE:\r
+                       ptr += drawLineString(ptr, (LWLINE*)lwgeom, style );\r
+                       break;\r
+               case POLYGONTYPE:\r
+                       ptr += drawPolygon(ptr, (LWPOLY*)lwgeom, style );\r
+                       break;\r
+               case MULTIPOINTTYPE:\r
+               case MULTILINETYPE:\r
+               case MULTIPOLYGONTYPE:\r
+               case COLLECTIONTYPE:\r
+                       for (i=0; i<((LWCOLLECTION*)lwgeom)->ngeoms; i++) {\r
+                               ptr += drawGeometry( ptr, lwcollection_getsubgeom ((LWCOLLECTION*)lwgeom, i), style );\r
+                       }\r
+                       break;\r
+        }\r
+        \r
+       return (ptr - output);\r
+}\r
+\r
+/**\r
+ * Invokes a system call to ImageMagick's "convert" command that adds a drop \r
+ * shadow to the current layer image.\r
+ * \r
+ * @param layerNumber the current working layer number.\r
+ */\r
+static void\r
+addDropShadow(int layerNumber) {\r
+       char str[129];\r
+       sprintf(\r
+               str, \r
+               "convert tmp%d.png -gravity center \\( +clone -background navy -shadow 100x3+4+4 \\) +swap -background none -flatten tmp%d.png", \r
+               layerNumber, layerNumber);\r
+       system(str);\r
+}\r
+\r
+/**\r
+ * Invokes a system call to ImageMagick's "convert" command that adds a  \r
+ * highlight to the current layer image.\r
+ * \r
+ * @param layerNumber the current working layer number.\r
+ */\r
+static void\r
+addHighlight(int layerNumber) {\r
+       char str[129];\r
+       sprintf(\r
+               str, \r
+               "convert tmp%d.png  -fx A +matte -blur 1x1  -shade 120x45  -normalize tmp%d.png  -compose Overlay -composite tmp%d.png  -matte  -compose Dst_In  -composite tmp%d.png", \r
+               layerNumber, layerNumber, layerNumber, layerNumber);\r
+       system(str);\r
+}\r
+\r
+/**\r
+ * Flattens all the temporary processing png files into a single image\r
+ */\r
+static void\r
+flattenLayers(char* filename) {\r
+       char *str;\r
+       str = malloc( (48 + strlen(filename) + 1) * sizeof(char) );\r
+       sprintf(str, "convert tmp[0-9].png -background none -flatten %s", filename);\r
+       system(str);\r
+       system("rm -f tmp[0-9].png");\r
+       free(str);\r
+}\r
+\r
+\r
+/**\r
+ * Main Application.  Currently, drawing styles are hardcoded in this method.\r
+ * Future work may entail reading the styles from a .properties file.\r
+ */\r
+int main( int argc, const char* argv[] ) {\r
+       FILE *pfile;\r
+       LWGEOM *lwgeom;\r
+       char line [2048];\r
+       char *filename;\r
+       int layerCount;\r
+       int styleNumber;\r
+       LAYERSTYLE styles[3];\r
+       \r
+       styles[0].pointSize = 6;\r
+       styles[0].pointColor = "Blue";\r
+       styles[0].lineWidth = 7;\r
+       styles[0].lineColor = "Blue";\r
+       styles[0].polygonFillColor = "Blue";\r
+       styles[0].polygonStrokeColor = "Blue";\r
+       styles[0].polygonStrokeWidth = 1;\r
+       \r
+       styles[1].pointSize = 6;\r
+       styles[1].pointColor = "Green";\r
+       styles[1].lineWidth = 7;\r
+       styles[1].lineColor = "Green";\r
+       styles[1].polygonFillColor = "Green";\r
+       styles[1].polygonStrokeColor = "Green";\r
+       styles[1].polygonStrokeWidth = 1;\r
+       \r
+       styles[2].pointSize = 6;\r
+       styles[2].pointColor = "Red";\r
+       styles[2].lineWidth = 7;\r
+       styles[2].lineColor = "Red";\r
+       styles[2].polygonFillColor = "Red";\r
+       styles[2].polygonStrokeColor = "Red";\r
+       styles[2].polygonStrokeWidth = 1;\r
+       \r
+               \r
+       if ( argc != 2 ) {\r
+               printf("You must specifiy a wkt filename to convert.\n");\r
+               return -1;\r
+       }\r
+       \r
+       if( (pfile = fopen(argv[1], "r")) == NULL){\r
+               perror ( argv[1] );\r
+               return -1;\r
+       }\r
+               \r
+       filename = malloc( (strlen(argv[1])+8) * sizeof(char) );\r
+       strcpy( filename, "../images/" );\r
+       strncat( filename, argv[1], strlen(argv[1])-3 );\r
+       strcat( filename, "png" );\r
+       \r
+       printf( "generating %s\n", filename );\r
+       \r
+       layerCount = 0;\r
+       while ( fgets ( line, sizeof line, pfile ) != NULL ) {          \r
+               \r
+               char output [2048];\r
+               char *ptr = output;\r
+               ptr += sprintf( ptr, "convert -size %s xc:none ", imageSize );\r
+       \r
+               lwgeom = lwgeom_from_ewkt( line, PARSER_CHECK_NONE );\r
+               LWDEBUGF( 4, "geom = %s", lwgeom_to_ewkt((LWGEOM*)lwgeom,0) );\r
+               \r
+               styleNumber = layerCount % 3;\r
+               LWDEBUGF( 4, "using style %d", styleNumber );\r
+               ptr += drawGeometry( ptr, lwgeom, styles[styleNumber] );\r
+               LWDEBUGF( 4, "%s", "after drawGeometry" );\r
+               \r
+               ptr += sprintf( ptr, "-flip tmp%d.png", layerCount );\r
+                \r
+               lwfree( lwgeom );       \r
+               \r
+               LWDEBUGF( 4, "%s", output );\r
+               system(output);\r
+               \r
+               addHighlight( layerCount );\r
+               addDropShadow( layerCount );\r
+               layerCount++;\r
+       }\r
+       \r
+       LWDEBUGF(4, "%s", filename);\r
+       flattenLayers(filename);\r
+       \r
+       fclose(pfile);\r
+       free(filename);\r
+       return 0;\r
+}\r
diff --git a/doc/html/image_src/st_centroid01.svg b/doc/html/image_src/st_centroid01.svg
deleted file mode 100644 (file)
index 97e8728..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; fill-opacity:0.9882; stroke-opacity:0.9882; stroke:rgb(0,178,0);"\r
-    ><rect x="3.6724" width="3" height="3" y="176.0862" style="stroke:none;"\r
-      /><rect x="3.6724" y="176.0862" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="3.6724" width="3" height="3" y="176.0862" style="stroke:none;"\r
-      /><rect x="3.6724" y="176.0862" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="3.6724" width="3" height="3" y="141.6034" style="stroke:none;"\r
-      /><rect x="3.6724" y="141.6034" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="20.9138" width="3" height="3" y="124.3621" style="stroke:none;"\r
-      /><rect x="20.9138" y="124.3621" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="38.1552" width="3" height="3" y="158.8448" style="stroke:none;"\r
-      /><rect x="38.1552" y="158.8448" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="20.9138" width="3" height="3" y="158.8448" style="stroke:none;"\r
-      /><rect x="20.9138" y="158.8448" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="3.6724" width="3" height="3" y="55.3966" style="stroke:none;"\r
-      /><rect x="3.6724" y="55.3966" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="55.3966" width="3" height="3" y="176.0862" style="stroke:none;"\r
-      /><rect x="55.3966" y="176.0862" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="124.3621" width="3" height="3" y="176.0862" style="stroke:none;"\r
-      /><rect x="124.3621" y="176.0862" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="3.6724" width="3" height="3" y="107.1207" style="stroke:none;"\r
-      /><rect x="3.6724" y="107.1207" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="141.6034" width="3" height="3" y="38.1552" style="stroke:none;"\r
-      /><rect x="141.6034" y="38.1552" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="176.0862" width="3" height="3" y="38.1552" style="stroke:none;"\r
-      /><rect x="176.0862" y="38.1552" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="49.6494" y="122.9253" width="3" style="fill:rgb(0,0,255); stroke:none;" height="3"\r
-    /></g\r
-    ><g style="stroke-linecap:butt; fill-opacity:0.9882; fill:rgb(0,0,178); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke:rgb(0,0,178); stroke-width:8; stroke-opacity:0.9882;"\r
-    ><rect x="49.6494" width="3" height="3" y="122.9253" style="fill:none;"\r
-      /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_centroid01.wkt b/doc/html/image_src/st_centroid01.wkt
new file mode 100644 (file)
index 0000000..416dece
--- /dev/null
@@ -0,0 +1,2 @@
+MULTIPOINT ( 8 24, 10 92, 12 154, 17 68, 28 10, 29 52, 29 84, 55 50, 56 24, 131 14, 160 180, 189 180 )\r
+POINT(60.3333333333333 77.6666666666667)
\ No newline at end of file
diff --git a/doc/html/image_src/st_centroid02.svg b/doc/html/image_src/st_centroid02.svg
deleted file mode 100644 (file)
index 7edddbb..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="stroke-linecap:butt; fill-opacity:0.9882; fill:rgb(0,178,0); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke:rgb(0,178,0); stroke-width:8; stroke-opacity:0.9882;"\r
-    ><path style="fill:none;" d="M194.8276 177.5862 L177.5862 143.1035 L160.3448 177.5862 L160.3448 143.1035 L91.3793 177.5862 L74.1379 177.5862 L125.8621 125.8621 L39.6552 177.5862 L39.6552 143.1035 L5.1724 177.5862 L5.1724 125.8621 L39.6552 108.6207 L5.1724 22.4138 L177.5862 39.6552"\r
-    /></g\r
-    ><g style="fill:rgb(0,0,255); text-rendering:optimizeLegibility; fill-opacity:0.9882; stroke-opacity:0.9882; stroke:rgb(0,0,255);"\r
-    ><rect x="80.8852" width="3" height="3" y="116.7116" style="stroke:none;"\r
-    /></g\r
-    ><g style="stroke-linecap:butt; fill-opacity:0.9882; fill:rgb(0,0,178); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke:rgb(0,0,178); stroke-width:8; stroke-opacity:0.9882;"\r
-    ><rect x="80.8852" width="3" height="3" y="116.7116" style="fill:none;"\r
-      /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_centroid02.wkt b/doc/html/image_src/st_centroid02.wkt
new file mode 100644 (file)
index 0000000..223f072
--- /dev/null
@@ -0,0 +1,2 @@
+LINESTRING ( 190 160, 10 190, 40 90, 20 70, 10 10, 30 40, 30 10, 110 40, 70 10, 110 10, 140 40, 140 10, 160 30, 180 10 )\r
+POINT(76.1907245453253 79.8755933886095)
\ No newline at end of file
diff --git a/doc/html/image_src/st_centroid03.svg b/doc/html/image_src/st_centroid03.svg
deleted file mode 100644 (file)
index 9f8c2da..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; fill-opacity:0.9882; stroke-opacity:0.9882; stroke:rgb(0,178,0);"\r
-    ><path d="M5.1724 177.5862 L5.1724 22.4138 L194.8276 22.4138 L194.8276 39.6552 L194.8276 56.8966 L56.8966 74.1379 L56.8966 160.3448 L160.3448 160.3448 L194.8276 177.5862 L5.1724 177.5862" style="stroke:none; fill-rule:evenodd;"\r
-      /><path style="fill:none; stroke-width:8; fill-rule:evenodd; stroke-linejoin:bevel; stroke-linecap:butt;" d="M5.1724 177.5862 L5.1724 22.4138 L194.8276 22.4138 L194.8276 39.6552 L194.8276 56.8966 L56.8966 74.1379 L56.8966 160.3448 L160.3448 160.3448 L194.8276 177.5862 L5.1724 177.5862"\r
-      /><rect x="74.1811" y="86.8461" width="3" style="fill:rgb(0,0,255); stroke:none;" height="3"\r
-    /></g\r
-    ><g style="stroke-linecap:butt; fill-opacity:0.9882; fill:rgb(0,0,178); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke:rgb(0,0,178); stroke-width:8; stroke-opacity:0.9882;"\r
-    ><rect x="74.1811" width="3" height="3" y="86.8461" style="fill:none;"\r
-    /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_centroid03.wkt b/doc/html/image_src/st_centroid03.wkt
new file mode 100644 (file)
index 0000000..86117c2
--- /dev/null
@@ -0,0 +1,2 @@
+POLYGON (( 190 190, 10 190, 10 10, 190 10, 190 20, 160 30, 60 30, 60 130, 190 140, 190 190 ))\r
+POINT(80.2508960573477 113.405017921147)
\ No newline at end of file
diff --git a/doc/html/image_src/st_centroid04.svg b/doc/html/image_src/st_centroid04.svg
deleted file mode 100644 (file)
index b84dda6..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; fill-opacity:0.9882; stroke-opacity:0.9882; stroke:rgb(0,178,0);"\r
-    ><path d="M194.8276 22.4138 L108.6207 22.4138 L125.8621 39.6552 L91.3793 56.8966 L177.5862 74.1379 L194.8276 22.4138" style="stroke:none; fill-rule:evenodd;"\r
-      /><path style="fill:none; stroke-width:8; fill-rule:evenodd; stroke-linejoin:bevel; stroke-linecap:butt;" d="M194.8276 22.4138 L108.6207 22.4138 L125.8621 39.6552 L91.3793 56.8966 L177.5862 74.1379 L194.8276 22.4138"\r
-      /><path d="M194.8276 177.5862 L194.8276 143.1035 L160.3448 160.3448 L143.1035 108.6207 L108.6207 177.5862 L91.3793 125.8621" style="fill:none; stroke-width:8; stroke-linejoin:bevel; stroke-linecap:butt;"\r
-      /><rect x="38.1552" width="3" height="3" y="158.8448" style="stroke:none;"\r
-      /><rect x="38.1552" y="158.8448" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="38.1552" width="3" height="3" y="89.8793" style="stroke:none;"\r
-      /><rect x="38.1552" y="89.8793" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="20.9138" width="3" height="3" y="55.3966" style="stroke:none;"\r
-      /><rect x="20.9138" y="55.3966" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="72.6379" width="3" height="3" y="107.1207" style="stroke:none;"\r
-      /><rect x="72.6379" y="107.1207" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="20.9138" width="3" height="3" y="141.6034" style="stroke:none;"\r
-      /><rect x="20.9138" y="141.6034" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="72.6379" width="3" height="3" y="176.0862" style="stroke:none;"\r
-      /><rect x="72.6379" y="176.0862" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="55.3966" width="3" height="3" y="141.6034" style="stroke:none;"\r
-      /><rect x="55.3966" y="141.6034" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="3.6724" width="3" height="3" y="176.0862" style="stroke:none;"\r
-      /><rect x="3.6724" y="176.0862" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-      /><rect x="149.0997" y="43.6524" width="3" style="fill:rgb(0,0,255); stroke:none;" height="3"\r
-    /></g\r
-    ><g style="stroke-linecap:butt; fill-opacity:0.9882; fill:rgb(0,0,178); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke:rgb(0,0,178); stroke-width:8; stroke-opacity:0.9882;"\r
-    ><rect x="149.0997" width="3" height="3" y="43.6524" style="fill:none;"\r
-      /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_centroid04.wkt b/doc/html/image_src/st_centroid04.wkt
new file mode 100644 (file)
index 0000000..f324d5d
--- /dev/null
@@ -0,0 +1,2 @@
+GEOMETRYCOLLECTION ( POLYGON (( 190 170, 180 100, 80 140, 80 160, 130 160, 110 180, 110 190, 180 180, 190 170 )), LINESTRING ( 80 120, 120 20, 140 70, 150 30, 180 50, 190 10 ), MULTIPOINT ( 19 150, 22 49, 30 13, 32 101, 45 35, 67 88, 75 16 ))\r
+POINT(143.361344537815 148.263305322129)
\ No newline at end of file
diff --git a/doc/html/image_src/st_crosses01.wkt b/doc/html/image_src/st_crosses01.wkt
new file mode 100644 (file)
index 0000000..915598b
--- /dev/null
@@ -0,0 +1,2 @@
+LINESTRING ( 10 190, 60 80, 130 120, 190 10 )\r
+MULTIPOINT ( 80 170, 120 13, 130 119, 181 142 )
\ No newline at end of file
diff --git a/doc/html/image_src/st_crosses02.wkt b/doc/html/image_src/st_crosses02.wkt
new file mode 100644 (file)
index 0000000..148e363
--- /dev/null
@@ -0,0 +1,2 @@
+POLYGON (( 10 190, 20 10, 90 20, 110 70, 80 130, 10 190 ))\r
+MULTIPOINT ( 56 60, 94 172, 128 125, 145 44, 172 173 )
\ No newline at end of file
diff --git a/doc/html/image_src/st_crosses03.wkt b/doc/html/image_src/st_crosses03.wkt
new file mode 100644 (file)
index 0000000..69a8c18
--- /dev/null
@@ -0,0 +1,2 @@
+POLYGON (( 10 190, 20 10, 90 20, 110 70, 80 130, 10 190 ))\r
+LINESTRING ( 30 40, 70 50, 120 150, 190 190 )
\ No newline at end of file
diff --git a/doc/html/image_src/st_crosses04.wkt b/doc/html/image_src/st_crosses04.wkt
new file mode 100644 (file)
index 0000000..ef22ee1
--- /dev/null
@@ -0,0 +1,2 @@
+LINESTRING ( 10 190, 60 110, 110 120, 190 10 )\r
+LINESTRING ( 10 10, 70 30, 110 120, 190 190 )\r
diff --git a/doc/html/image_src/st_issimple01.wkt b/doc/html/image_src/st_issimple01.wkt
new file mode 100644 (file)
index 0000000..ba19760
--- /dev/null
@@ -0,0 +1 @@
+GEOMETRYCOLLECTION ( LINESTRING ( 10 190, 140 130, 70 80, 190 10 ), POINT(10 190), POINT(190 10) )\r
diff --git a/doc/html/image_src/st_issimple02.wkt b/doc/html/image_src/st_issimple02.wkt
new file mode 100644 (file)
index 0000000..b9d6e28
--- /dev/null
@@ -0,0 +1 @@
+GEOMETRYCOLLECTION ( LINESTRING ( 10 190, 130 40, 170 160, 10 10 ), POINT(10 190), POINT(10 10) )\r
diff --git a/doc/html/image_src/st_issimple03.wkt b/doc/html/image_src/st_issimple03.wkt
new file mode 100644 (file)
index 0000000..d6b1be7
--- /dev/null
@@ -0,0 +1 @@
+GEOMETRYCOLLECTION ( LINESTRING ( 90 190, 120 190, 130 140, 190 50, 70 10, 10 70, 10 150, 90 190 ), POINT(90 190) )\r
diff --git a/doc/html/image_src/st_issimple04.wkt b/doc/html/image_src/st_issimple04.wkt
new file mode 100644 (file)
index 0000000..00b8169
--- /dev/null
@@ -0,0 +1 @@
+GEOMETRYCOLLECTION ( LINESTRING ( 90 190, 120 190, 50 60, 130 10, 190 50, 160 90, 10 150, 90 190 ), POINT(90 190) )\r
diff --git a/doc/html/image_src/st_issimple05.wkt b/doc/html/image_src/st_issimple05.wkt
new file mode 100644 (file)
index 0000000..8d68b5d
--- /dev/null
@@ -0,0 +1 @@
+GEOMETRYCOLLECTION ( LINESTRING ( 30 190, 60 60, 170 10 ), LINESTRING ( 100 190, 180 150, 160 70 ), MULTIPOINT ( 30 190, 170 10, 100 190, 160 70 ) )\r
diff --git a/doc/html/image_src/st_issimple06.wkt b/doc/html/image_src/st_issimple06.wkt
new file mode 100644 (file)
index 0000000..bf63e2d
--- /dev/null
@@ -0,0 +1 @@
+GEOMETRYCOLLECTION ( LINESTRING ( 30 190, 60 60, 170 10 ), LINESTRING ( 30 190, 180 150, 160 70 ), MULTIPOINT( 170 10, 30 190, 170 10 ) )\r
diff --git a/doc/html/image_src/st_issimple07.wkt b/doc/html/image_src/st_issimple07.wkt
new file mode 100644 (file)
index 0000000..2316ab8
--- /dev/null
@@ -0,0 +1 @@
+GEOMETRYCOLLECTION ( LINESTRING ( 30 190, 60 60, 170 10 ), LINESTRING (100 190, 180 150, 80 10), MULTIPOINT( 30 190, 170 10, 100 190, 80 10 ) )\r
diff --git a/doc/html/image_src/st_isvalid01.wkt b/doc/html/image_src/st_isvalid01.wkt
new file mode 100644 (file)
index 0000000..d1a414e
--- /dev/null
@@ -0,0 +1 @@
+POLYGON ((10 140, 90 190, 130 170, 190 60, 160 10, 50 20, 10 140), (50 100, 70 80, 110 100, 110 140, 50 100))\r
diff --git a/doc/html/image_src/st_isvalid02.wkt b/doc/html/image_src/st_isvalid02.wkt
new file mode 100644 (file)
index 0000000..349ebad
--- /dev/null
@@ -0,0 +1 @@
+POLYGON ((10 140, 90 190, 130 170, 190 60, 160 10, 50 20, 10 140), (190 60, 140 40, 110 60, 120 90, 190 60))\r
diff --git a/doc/html/image_src/st_isvalid03.wkt b/doc/html/image_src/st_isvalid03.wkt
new file mode 100644 (file)
index 0000000..8616141
--- /dev/null
@@ -0,0 +1 @@
+POLYGON ((10 140, 90 190, 130 170, 190 60, 160 10, 50 20, 10 140), (130 170, 10 140, 50 120, 110 110, 130 170))\r
diff --git a/doc/html/image_src/st_isvalid04.wkt b/doc/html/image_src/st_isvalid04.wkt
new file mode 100644 (file)
index 0000000..f6ae8a7
--- /dev/null
@@ -0,0 +1 @@
+POLYGON ((10 140, 90 190, 130 170, 190 60, 160 10, 50 20, 10 140), (90 189, 10 139, 80 110, 110 130, 90 189))\r
diff --git a/doc/html/image_src/st_isvalid05.wkt b/doc/html/image_src/st_isvalid05.wkt
new file mode 100644 (file)
index 0000000..80b93df
--- /dev/null
@@ -0,0 +1 @@
+POLYGON (( 10 100, 60 140, 60 190, 62 190, 62 157, 130 170, 190 60, 160 10, 50 20, 10 100 ))\r
diff --git a/doc/html/image_src/st_touches01.svg b/doc/html/image_src/st_touches01.svg
deleted file mode 100644 (file)
index 9fcd0ec..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-      /><path d="M5.2133 126.3297 L5.2133 21.0111 L110.5319 21.0111 L110.5319 52.6066 L57.8726 52.6066 L78.9363 84.2022 L78.9363 126.3297 L5.2133 126.3297" style="fill:rgb(0,178,0); fill-rule:evenodd; stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke-linecap:butt; stroke:rgb(0,178,0);"\r
-    ><path d="M5.2133 126.3297 L5.2133 21.0111 L110.5319 21.0111 L110.5319 52.6066 L57.8726 52.6066 L78.9363 84.2022 L78.9363 126.3297 L5.2133 126.3297" style="fill:none; fill-rule:evenodd;"\r
-    /></g\r
-    ><g style="fill:blue; text-rendering:optimizeLegibility; stroke:blue;"\r
-    ><path d="M78.9363 84.2022 L78.9363 178.9889 L152.6593 178.9889 L194.7867 126.3297 L131.5956 63.1385 L78.9363 84.2022" style="stroke:none; fill-rule:evenodd;"\r
-      /><path d="M78.9363 84.2022 L78.9363 178.9889 L152.6593 178.9889 L194.7867 126.3297 L131.5956 63.1385 L78.9363 84.2022" style="fill:none; fill-rule:evenodd; stroke-linejoin:bevel; stroke-linecap:butt;"\r
-      /><image x="0" y="0" width="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAsUlEQVR42u3BAQEA\r
-AACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAB8GXHmAAGhi4cUAAAAAElFTkSuQmCC" style="stroke-linecap:butt; stroke-linejoin:bevel;" height="200" preserveAspectRatio="none"\r
-      /><image x="0" y="0" width="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAsUlEQVR42u3BAQEA\r
-AACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAB8GXHmAAGhi4cUAAAAAElFTkSuQmCC" style="stroke-linecap:butt; stroke-linejoin:bevel;" height="200" preserveAspectRatio="none"\r
-      /><image x="0" y="0" width="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAsUlEQVR42u3BAQEA\r
-AACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAB8GXHmAAGhi4cUAAAAAElFTkSuQmCC" style="stroke-linecap:butt; stroke-linejoin:bevel;" height="200" preserveAspectRatio="none"\r
-      /><image x="0" y="0" width="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAsUlEQVR42u3BAQEA\r
-AACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAB8GXHmAAGhi4cUAAAAAElFTkSuQmCC" style="stroke-linecap:butt; stroke-linejoin:bevel;" height="200" preserveAspectRatio="none"\r
-    /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_touches02.svg b/doc/html/image_src/st_touches02.svg
deleted file mode 100644 (file)
index 4b30221..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-      /><path d="M5.2133 126.3297 L5.2133 21.0111 L110.5319 21.0111 L110.5319 52.6066 L57.8726 52.6066 L78.9363 84.2022 L78.9363 126.3297 L5.2133 126.3297" style="fill:rgb(0,178,0); fill-rule:evenodd; stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke-linecap:butt; stroke:rgb(0,178,0);"\r
-    ><path d="M5.2133 126.3297 L5.2133 21.0111 L110.5319 21.0111 L110.5319 52.6066 L57.8726 52.6066 L78.9363 84.2022 L78.9363 126.3297 L5.2133 126.3297" style="fill:none; fill-rule:evenodd;"\r
-    /></g\r
-    ><g style="fill:blue; text-rendering:optimizeLegibility; stroke:blue;"\r
-    ><path d="M78.9363 126.3297 L78.9363 178.9889 L152.6593 178.9889 L194.7867 126.3297 L131.5956 63.1385 L78.9363 126.3297" style="stroke:none; fill-rule:evenodd;"\r
-      /><path d="M78.9363 126.3297 L78.9363 178.9889 L152.6593 178.9889 L194.7867 126.3297 L131.5956 63.1385 L78.9363 126.3297" style="fill:none; fill-rule:evenodd; stroke-linejoin:bevel; stroke-linecap:butt;"\r
-    /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_touches03.svg b/doc/html/image_src/st_touches03.svg
deleted file mode 100644 (file)
index 630e818..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-      /><path d="M5.2133 126.3297 L5.2133 63.1385 L36.8088 10.4792 L100 31.5429 L110.5319 73.6703 L100 115.7978 L57.8726 126.3297 L5.2133 126.3297" style="fill:rgb(0,178,0); fill-rule:evenodd; stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke-linecap:butt; stroke:rgb(0,178,0);"\r
-    ><path d="M5.2133 126.3297 L5.2133 63.1385 L36.8088 10.4792 L100 31.5429 L110.5319 73.6703 L100 115.7978 L57.8726 126.3297 L5.2133 126.3297" style="fill:none; fill-rule:evenodd;"\r
-      /><path d="M100 115.7978 L184.2549 189.5208" style="fill:none; stroke-width:6; stroke:blue;"\r
-      /><image x="0" y="0" width="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAsUlEQVR42u3BAQEA\r
-AACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAB8GXHmAAGhi4cUAAAAAElFTkSuQmCC" style="fill:blue; stroke:blue; stroke-width:6;" height="200" preserveAspectRatio="none"\r
-      /><image x="0" y="0" width="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAsUlEQVR42u3BAQEA\r
-AACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAB8GXHmAAGhi4cUAAAAAElFTkSuQmCC" style="fill:blue; stroke:blue; stroke-width:6;" height="200" preserveAspectRatio="none"\r
-      /><image x="0" y="0" width="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAsUlEQVR42u3BAQEA\r
-AACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAB8GXHmAAGhi4cUAAAAAElFTkSuQmCC" style="fill:blue; stroke:blue; stroke-width:6;" height="200" preserveAspectRatio="none"\r
-      /><image x="0" y="0" width="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAsUlEQVR42u3BAQEA\r
-AACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r
-AAAAAAAAAAAAAAAAAAAAAAAAAAB8GXHmAAGhi4cUAAAAAElFTkSuQmCC" style="fill:blue; stroke:blue; stroke-width:6;" height="200" preserveAspectRatio="none"\r
-    /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_touches04.svg b/doc/html/image_src/st_touches04.svg
deleted file mode 100644 (file)
index 1571484..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; stroke-width:6; stroke-linejoin:bevel; stroke-linecap:butt; stroke:rgb(0,178,0);"\r
-    ><path style="fill:none;" d="M131.5956 42.0748 L47.3407 84.2022 L15.7451 189.5208"\r
-      /><path d="M131.5956 42.0748 L184.2549 189.5208" style="fill:none; stroke:blue;"\r
-    /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_touches05.svg b/doc/html/image_src/st_touches05.svg
deleted file mode 100644 (file)
index 7aefedc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; stroke-width:6; stroke-linejoin:bevel; stroke-linecap:butt; stroke:rgb(0,178,0);"\r
-    ><path style="fill:none;" d="M173.723 21.0111 L131.5956 42.0748 L5.2133 136.8615"\r
-      /><path d="M131.5956 42.0748 L184.2549 189.5208" style="fill:none; stroke:blue;"\r
-    /></g\r
-  ></g\r
-></svg\r
->\r
diff --git a/doc/html/image_src/st_touches06.svg b/doc/html/image_src/st_touches06.svg
deleted file mode 100644 (file)
index c51ff64..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r
-          'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r
-<svg xmlns:xlink="http://www.w3.org/1999/xlink" style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; stroke:black; text-rendering:auto; stroke-linecap:square; stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; stroke-dasharray:none; font-weight:normal; stroke-width:1; font-family:&apos;Dialog&apos;; font-style:normal; stroke-linejoin:miter; font-size:12; stroke-dashoffset:0; image-rendering:auto;" xmlns="http://www.w3.org/2000/svg"\r
-><!--Generated by the Batik Graphics2D SVG Generator--><defs id="genericDefs"\r
-  /><g\r
-  ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-    /></g\r
-    ><g style="fill:white; text-rendering:optimizeLegibility; stroke:white;"\r
-    ><rect x="0" width="200" height="200" y="0" style="stroke:none;"\r
-      /><path d="M5.2133 147.3934 L5.2133 63.1385 L36.8088 10.4792 L100 31.5429 L142.1274 73.6703 L152.6593 157.9252 L68.4044 168.4571 L5.2133 147.3934" style="fill:rgb(0,178,0); fill-rule:evenodd; stroke:none;"\r
-    /></g\r
-    ><g style="fill:rgb(0,178,0); text-rendering:optimizeLegibility; stroke-linejoin:bevel; stroke-linecap:butt; stroke:rgb(0,178,0);"\r
-    ><path d="M5.2133 147.3934 L5.2133 63.1385 L36.8088 10.4792 L100 31.5429 L142.1274 73.6703 L152.6593 157.9252 L68.4044 168.4571 L5.2133 147.3934" style="fill:none; fill-rule:evenodd;"\r
-    /></g\r
-    ><g style="fill:blue; text-rendering:optimizeLegibility; stroke:blue;"\r
-    ><rect x="140.6274" width="3" height="3" y="72.1704" style="stroke:none;"\r
-      /><rect x="140.6274" y="72.1704" width="3" style="stroke-linecap:butt; fill:none; stroke-linejoin:bevel; stroke-width:8;" height="3"\r
-    /></g\r
-  ></g\r
-></svg\r
->\r