]> granicus.if.org Git - graphviz/commitdiff
- require <?xml preamble since the downstream viewers require it
authorellson <devnull@localhost>
Thu, 27 Dec 2007 22:09:22 +0000 (22:09 +0000)
committerellson <devnull@localhost>
Thu, 27 Dec 2007 22:09:22 +0000 (22:09 +0000)
- assume "pt" if units aren't given, e.g in inkscape output.

lib/gvc/gvusershape.c

index 743709dad7cd0b866ef0b7be92eb1b37193a92f8..ba122d4a2bcf2e297eba3201658c132ead02126f 100644 (file)
@@ -59,7 +59,7 @@ static knowntype_t knowntypes[] = {
     { JPEG_MAGIC, sizeof(JPEG_MAGIC)-1, FT_JPEG, "jpeg", },
     { PDF_MAGIC,  sizeof(PDF_MAGIC)-1,  FT_PDF,  "pdf",  },
     { EPS_MAGIC,  sizeof(EPS_MAGIC)-1,  FT_EPS,  "eps",  },
-    { SVG_MAGIC,  sizeof(SVG_MAGIC)-1,  FT_SVG,  "svg",  },
+/*    { SVG_MAGIC,  sizeof(SVG_MAGIC)-1,  FT_SVG,  "svg",  },  - viewers expect xml preamble */
     { XML_MAGIC,  sizeof(XML_MAGIC)-1,  FT_XML,  "xml",  },
 };
 
@@ -130,7 +130,7 @@ static unsigned int svg_units_convert(double n, char *u)
         return ROUND(n * POINTS_PER_INCH / 96);
     if (strcmp(u, "pc") == 0)
         return ROUND(n * POINTS_PER_INCH / 6); 
-    if (strcmp(u, "pt") == 0)
+    if (strcmp(u, "pt") == 0 || strcmp(u, "\"") == 0)   /* ugly!!  - if there are no inits then the %2s get the trailing '"' */
         return ROUND(n);
     if (strcmp(u, "cm") == 0)
         return ROUND(n * POINTS_PER_CM);
@@ -155,13 +155,15 @@ static void svg_size (usershape_t *us)
            if (sscanf(token, "width=\"%lf%2s\"", &n, u) == 2) {
                w = svg_units_convert(n, u);
                wFlag = true;
+               if (hFlag)
+                   break;
            }
            if (sscanf(token, "height=\"%lf%2s\"", &n, u) == 2) {
                h = svg_units_convert(n, u);
                hFlag = true;
+                if (wFlag)
+                   break;
            }
-            if (wFlag && hFlag)
-               break;
             token =  strtok(NULL, " ");
         }
     }