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
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 \
--- /dev/null
+# **********************************************************************
+# * $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
+
--- /dev/null
+/**********************************************************************\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
+++ /dev/null
-<?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:'Dialog'; 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
--- /dev/null
+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
+++ /dev/null
-<?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:'Dialog'; 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
--- /dev/null
+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
+++ /dev/null
-<?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:'Dialog'; 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
--- /dev/null
+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
+++ /dev/null
-<?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:'Dialog'; 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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+LINESTRING ( 10 190, 60 110, 110 120, 190 10 )\r
+LINESTRING ( 10 10, 70 30, 110 120, 190 190 )\r
--- /dev/null
+GEOMETRYCOLLECTION ( LINESTRING ( 10 190, 140 130, 70 80, 190 10 ), POINT(10 190), POINT(190 10) )\r
--- /dev/null
+GEOMETRYCOLLECTION ( LINESTRING ( 10 190, 130 40, 170 160, 10 10 ), POINT(10 190), POINT(10 10) )\r
--- /dev/null
+GEOMETRYCOLLECTION ( LINESTRING ( 90 190, 120 190, 130 140, 190 50, 70 10, 10 70, 10 150, 90 190 ), POINT(90 190) )\r
--- /dev/null
+GEOMETRYCOLLECTION ( LINESTRING ( 90 190, 120 190, 50 60, 130 10, 190 50, 160 90, 10 150, 90 190 ), POINT(90 190) )\r
--- /dev/null
+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
--- /dev/null
+GEOMETRYCOLLECTION ( LINESTRING ( 30 190, 60 60, 170 10 ), LINESTRING ( 30 190, 180 150, 160 70 ), MULTIPOINT( 170 10, 30 190, 170 10 ) )\r
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+POLYGON (( 10 100, 60 140, 60 190, 62 190, 62 157, 130 170, 190 60, 160 10, 50 20, 10 100 ))\r
+++ /dev/null
-<?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:'Dialog'; 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
+++ /dev/null
-<?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:'Dialog'; 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
+++ /dev/null
-<?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:'Dialog'; 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
+++ /dev/null
-<?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:'Dialog'; 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
+++ /dev/null
-<?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:'Dialog'; 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
+++ /dev/null
-<?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:'Dialog'; 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