TITLE:PathIteratorからSVGを生成
#navi(../)
RIGHT:Posted by [[terai]] at 2009-03-30
*PathIteratorからSVGを生成 [#h0bc8b69]
ShapeからPathIteratorを取得し、このPathをSVGに変換します。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#gabf6062]
#code{{
private StringBuilder makeStarburstSvg(PathIterator pi, int sz, String style, String desc) {
  StringBuilder sb = new StringBuilder();
  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
  //...
  sb.append(String.format("<svg width=\"%d\" height=\"%d\" xmlns=\"%s\">\n", sz, sz, w3));
  sb.append(String.format("  <desc>%s</desc>\n", desc));
  sb.append("  <path d=\"");
  double[] coords = new double[6];
  while(!pi.isDone()) {
    int ret = pi.currentSegment(coords);
    if(ret==PathIterator.SEG_MOVETO) {
      sb.append(String.format("%s%.2f,%.2f ", "M", coords[0], coords[1]));
    }else if(ret==PathIterator.SEG_LINETO) {
      sb.append(String.format("%s%.2f,%.2f ", "L", coords[0], coords[1]));
    }
    pi.next();
  }
  sb.append(String.format("Z\" style=\"%s\" />\n</svg>\n", style));
  return sb;
}
}}

**解説 [#o16c7ad1]
上記のサンプルでは、ShapeからPathIteratorを取得し、そのパスを辿ってSVGファイルを生成しています。
-対応しているのは、PathIterator.SEG_MOVETO、PathIterator.SEG_LINETOのみ

**参考リンク [#p458d4b4]
-[[SVG Path>http://www.w3schools.com/svg/svg_path.asp]]
-[[Inkscape 自由に描く。>http://www.inkscape.org/]]

**コメント [#g1aae1e8]
#comment