svnno****@sourc*****
svnno****@sourc*****
2010年 3月 24日 (水) 23:10:59 JST
Revision: 1751 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1751 Author: dhrname Date: 2010-03-24 23:10:59 +0900 (Wed, 24 Mar 2010) Log Message: ----------- Modified Paths: -------------- branches/ufltima/dom/svg.js Modified: branches/ufltima/dom/svg.js =================================================================== --- branches/ufltima/dom/svg.js 2010-03-24 14:10:26 UTC (rev 1750) +++ branches/ufltima/dom/svg.js 2010-03-24 14:10:59 UTC (rev 1751) @@ -156,7 +156,7 @@ } style.cssText._rewrite = 1; } - }, false) + }, true) this.addEventListener("DOMAttrModified", function(evt){ if (evt.eventPhase === Event.BUBBLING_PHASE) { return; @@ -515,7 +515,6 @@ SVGColor.constructor = CSSValue; /*void*/ SVGColor.prototype.setRGBColor = function(/*DOMString*/ rgbColor ){ - this.cssText = rgbColor; var tkr = this._keywords[rgbColor]; if (tkr !== void 0) { rgbColor = tkr; @@ -533,7 +532,7 @@ this.rgbColor.red.setFloatValue(CSSPrimitiveValue.CSS_NUMBER, parseFloat(s[0])); this.rgbColor.green.setFloatValue(CSSPrimitiveValue.CSS_NUMBER, parseFloat(s[1])); this.rgbColor.blue.setFloatValue(CSSPrimitiveValue.CSS_NUMBER, parseFloat(s[2])); -}; + }; // raises( SVGException ); /*void*/ SVGColor.prototype.setColor =function(/*unsigned short*/ colorType, /*DOMString*/ rgbColor, /*DOMString*/ iccColor ){ @@ -545,137 +544,153 @@ // raises( SVGException ); //色キーワード SVGColor.prototype._keywords = { - aliceblue: "#F0F8FF", - antiquewhite: "#FAEBD7", - aquamarine: "#7FFFD4", - azure: "#F0FFFF", - beige: "#F5F5DC", - bisque: "#FFE4C4", - blanchedalmond: "#FFEBCD", - blueviolet: "#8A2BE2", - brown: "#A52A2A", - burlywood: "#DEB887", - cadetblue: "#5F9EA0", - chartreuse: "#7FFF00", - chocolate: "#D2691E", - coral: "#FF7F50", - cornflowerblue: "#6495ED", - cornsilk: "#FFF8DC", - crimson: "#DC143C", - cyan: "#00FFFF", - darkblue: "#00008B", - darkcyan: "#008B8B", - darkgoldenrod: "#B8860B", - darkgray: "#A9A9A9", - darkgreen: "#006400", - darkgrey: "#A9A9A9", - darkkhaki: "#BDB76B", - darkmagenta: "#8B008B", - darkolivegreen: "#556B2F", - darkorange: "#FF8C00", - darkorchid: "#9932CC", - darkred: "#8B0000", - darksalmon: "#E9967A", - darkseagreen: "#8FBC8F", - darkslateblue: "#483D8B", - darkslategray: "#2F4F4F", - darkslategrey: "#2F4F4F", - darkturquoise: "#00CED1", - darkviolet: "#9400D3", - deeppink: "#FF1493", - deepskyblue: "#00BFFF", - dimgray: "#696969", - dimgrey: "#696969", - dodgerblue: "#1E90FF", - firebrick: "#B22222", - floralwhite: "#FFFAF0", - forestgreen: "#228B22", - gainsboro: "#DCDCDC", - ghostwhite: "#F8F8FF", - gold: "#FFD700", - goldenrod: "#DAA520", - grey: "#808080", - greenyellow: "#ADFF2F", - honeydew: "#F0FFF0", - hotpink: "#FF69B4", - indianred: "#CD5C5C", - indigo: "#4B0082", - ivory: "#FFFFF0", - khaki: "#F0E68C", - lavender: "#E6E6FA", - lavenderblush: "#FFF0F5", - lawngreen: "#7CFC00", - lemonchiffon: "#FFFACD", - lightblue: "#ADD8E6", - lightcoral: "#F08080", - lightcyan: "#E0FFFF", - lightgoldenrodyellow: "#FAFAD2", - lightgray: "#D3D3D3", - lightgreen: "#90EE90", - lightgrey: "#D3D3D3", - lightpink: "#FFB6C1", - lightsalmon: "#FFA07A", - lightseagreen: "#20B2AA", - lightskyblue: "#87CEFA", - lightslategray: "#778899", - lightslategrey: "#778899", - lightsteelblue: "#B0C4DE", - lightyellow: "#FFFFE0", - limegreen: "#32CD32", - linen: "#FAF0E6", - magenta: "#FF00FF", - mediumaquamarine: "#66CDAA", - mediumblue: "#0000CD", - mediumorchid: "#BA55D3", - mediumpurple: "#9370DB", - mediumseagreen: "#3CB371", - mediumslateblue: "#7B68EE", - mediumspringgreen: "#00FA9A", - mediumturquoise: "#48D1CC", - mediumvioletred: "#C71585", - midnightblue: "#191970", - mintcream: "#F5FFFA", - mistyrose: "#FFE4E1", - moccasin: "#FFE4B5", - navajowhite: "#FFDEAD", - oldlace: "#FDF5E6", - olivedrab: "#6B8E23", - orange: "#FFA500", - orangered: "#FF4500", - orchid: "#DA70D6", - palegoldenrod: "#EEE8AA", - palegreen: "#98FB98", - paleturquoise: "#AFEEEE", - palevioletred: "#DB7093", - papayawhip: "#FFEFD5", - peachpuff: "#FFDAB9", - peru: "#CD853F", - pink: "#FFC0CB", - plum: "#DDA0DD", - powderblue: "#B0E0E6", - rosybrown: "#BC8F8F", - royalblue: "#4169E1", - saddlebrown: "#8B4513", - salmon: "#FA8072", - sandybrown: "#F4A460", - seagreen: "#2E8B57", - seashell: "#FFF5EE", - sienna: "#A0522D", - skyblue: "#87CEEB", - slateblue: "#6A5ACD", - slategray: "#708090", - slategrey: "#708090", - snow: "#FFFAFA", - springgreen: "#00FF7F", - steelblue: "#4682B4", - tan: "#D2B48C", - thistle: "#D8BFD8", - tomato: "#FF6347", - turquoise: "#40E0D0", - violet: "#EE82EE", - wheat: "#F5DEB3", - whitesmoke: "#F5F5F5", - yellowgreen: "#9ACD32" + aliceblue: "rgb(240, 248, 255)", + antiquewhite: "rgb(250, 235, 215)", + aqua: "rgb( 0, 255, 255)", + aquamarine: "rgb(127, 255, 212)", + azure: "rgb(240, 255, 255)", + beige: "rgb(245, 245, 220)", + bisque: "rgb(255, 228, 196)", + black: "rgb( 0, 0, 0)", + blanchedalmond:"rgb(255, 235, 205)", + blue: "rgb( 0, 0, 255)", + blueviolet: "rgb(138, 43, 226)", + brown: "rgb(165, 42, 42)", + burlywood: "rgb(222, 184, 135)", + cadetblue: "rgb( 95, 158, 160)", + chartreuse: "rgb(127, 255, 0)", + chocolate: "rgb(210, 105, 30)", + coral: "rgb(255, 127, 80)", + cornflowerblue:"rgb(100, 149, 237)", + cornsilk: "rgb(255, 248, 220)", + crimson: "rgb(220, 20, 60)", + cyan: "rgb( 0, 255, 255)", + darkblue: "rgb( 0, 0, 139)", + darkcyan: "rgb( 0, 139, 139)", + darkgoldenrod:"rgb(184, 134, 11)", + darkgray: "rgb(169, 169, 169)", + darkgreen: "rgb( 0, 100, 0)", + darkgrey: "rgb(169, 169, 169)", + darkkhaki: "rgb(189, 183, 107)", + darkmagenta: "rgb(139, 0, 139)", + darkolivegreen:"rgb( 85, 107, 47)", + darkorange: "rgb(255, 140, 0)", + darkorchid: "rgb(153, 50, 204)", + darkred: "rgb(139, 0, 0)", + darksalmon: "rgb(233, 150, 122)", + darkseagreen: "rgb(143, 188, 143)", + darkslateblue:"rgb( 72, 61, 139)", + darkslategray:"rgb( 47, 79, 79)", + darkslategrey:"rgb( 47, 79, 79)", + darkturquoise:"rgb( 0, 206, 209)", + darkviolet: "rgb(148, 0, 211)", + deeppink: "rgb(255, 20, 147)", + deepskyblue: "rgb( 0, 191, 255)", + dimgray: "rgb(105, 105, 105)", + dimgrey: "rgb(105, 105, 105)", + dodgerblue: "rgb( 30, 144, 255)", + firebrick: "rgb(178, 34, 34)", + floralwhite: "rgb(255, 250, 240)", + forestgreen: "rgb( 34, 139, 34)", + fuchsia: "rgb(255, 0, 255)", + gainsboro: "rgb(220, 220, 220)", + ghostwhite: "rgb(248, 248, 255)", + gold: "rgb(255, 215, 0)", + goldenrod: "rgb(218, 165, 32)", + gray: "rgb(128, 128, 128)", + grey: "rgb(128, 128, 128)", + green: "rgb( 0, 128, 0)", + greenyellow: "rgb(173, 255, 47)", + honeydew: "rgb(240, 255, 240)", + hotpink: "rgb(255, 105, 180)", + indianred: "rgb(205, 92, 92)", + indigo: "rgb( 75, 0, 130)", + ivory: "rgb(255, 255, 240)", + khaki: "rgb(240, 230, 140)", + lavender: "rgb(230, 230, 250)", + lavenderblush:"rgb(255, 240, 245)", + lawngreen: "rgb(124, 252, 0)", + lemonchiffon: "rgb(255, 250, 205)", + lightblue: "rgb(173, 216, 230)", + lightcoral: "rgb(240, 128, 128)", + lightcyan: "rgb(224, 255, 255)", + lightgoldenrodyellow:"rgb(250, 250, 210)", + lightgray: "rgb(211, 211, 211)", + lightgreen: "rgb(144, 238, 144)", + lightgrey: "rgb(211, 211, 211)", + lightpink: "rgb(255, 182, 193)", + lightsalmon: "rgb(255, 160, 122)", + lightseagree: "rgb( 32, 178, 170)", + lightskyblue: "rgb(135, 206, 250)", + lightslategray:"rgb(119, 136, 153)", + lightslategrey:"rgb(119, 136, 153)", + lightsteelblue:"rgb(176, 196, 222)", + lightyellow: "rgb(255, 255, 224)", + lime: "rgb( 0, 255, 0)", + limegreen: "rgb( 50, 205, 50)", + linen: "rgb(250, 240, 230)", + magenta: "rgb(255, 0, 255)", + maroon: "rgb(128, 0, 0)", + mediumaquamarine:"rgb(102, 205, 170)", + mediumblue: "rgb( 0, 0, 205)", + mediumorchid: "rgb(186, 85, 211)", + mediumpurple: "rgb(147, 112, 219)", + mediumseagreen:"rgb( 60, 179, 113)", + mediumslateblue:"rgb(123, 104, 238)", + mediumspringgreen:"rgb( 0, 250, 154)", + mediumturquoise:"rgb( 72, 209, 204)", + mediumvioletred:"rgb(199, 21, 133)", + midnightblue: "rgb( 25, 25, 112)", + mintcream: "rgb(245, 255, 250)", + mistyrose: "rgb(255, 228, 225)", + moccasin: "rgb(255, 228, 181)", + navajowhite: "rgb(255, 222, 173)", + navy: "rgb( 0, 0, 128)", + oldlace: "rgb(253, 245, 230)", + olive: "rgb(128, 128, 0)", + olivedrab: "rgb(107, 142, 35)", + orange: "rgb(255, 165, 0)", + orangered: "rgb(255, 69, 0)", + orchid: "rgb(218, 112, 214)", + palegoldenrod: "rgb(238, 232, 170)", + palegreen: "rgb(152, 251, 152)", + paleturquoise: "rgb(175, 238, 238)", + palevioletred: "rgb(219, 112, 147)", + papayawhip: "rgb(255, 239, 213)", + peachpuff: "rgb(255, 218, 185)", + peru: "rgb(205, 133, 63)", + pink: "rgb(255, 192, 203)", + plum: "rgb(221, 160, 221)", + powderblue: "rgb(176, 224, 230)", + purple: "rgb(128, 0, 128)", + red: "rgb(255, 0, 0)", + rosybrown: "rgb(188, 143, 143)", + royalblue: "rgb( 65, 105, 225)", + saddlebrown: "rgb(139, 69, 19)", + salmon: "rgb(250, 128, 114)", + sandybrown: "rgb(244, 164, 96)", + seagreen: "rgb( 46, 139, 87)", + seashell: "rgb(255, 245, 238)", + sienna: "rgb(160, 82, 45)", + silver: "rgb(192, 192, 192)", + skyblue: "rgb(135, 206, 235)", + slateblue: "rgb(106, 90, 205)", + slategray: "rgb(112, 128, 144)", + slategrey: "rgb(112, 128, 144)", + snow: "rgb(255, 250, 250)", + springgreen: "rgb( 0, 255, 127)", + steelblue: "rgb( 70, 130, 180)", + tan: "rgb(210, 180, 140)", + teal: "rgb( 0, 128, 128)", + thistle: "rgb(216, 191, 216)", + tomato: "rgb(255, 99, 71)", + turquoise: "rgb( 64, 224, 208)", + violet: "rgb(238, 130, 238)", + wheat: "rgb(245, 222, 179)", + white: "rgb(255, 255, 255)", + whitesmoke: "rgb(245, 245, 245)", + yellow: "rgb(255, 255, 0)", + yellowgreen: "rgb(154, 205, 50)" }; function SVGRect() { @@ -1136,16 +1151,16 @@ var obje = document.getElementsByTagName("object"); for (var i=0, objli=1;i<objli;++i) { var objei = {style:{}};//obje[i]; - xmlhttp.open("GET", "4wd.svg", true);//objei.getAttribute("data"), true); + xmlhttp.open("GET", "tiger.svg", true);//objei.getAttribute("data"), true); xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { /*SVGDocument*/ objei.getSVGDocument = function(){ - var dew = new Date(); /*responseXMLを使うと、時々、空のデータを返すことがあるため(原因は不明)、 *ここでは、responseTextを用いる */ var doc = new ActiveXObject("MSXML2.DomDocument"); + var dew = new Date(); str = xmlhttp.responseText.replace(/!DOCTYPE/,"!--").replace(/(dtd">|\]>)/,"-->"); doc.loadXML(str); var s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg"); @@ -1983,8 +1998,8 @@ if (fill.paintType === SVGPaint.SVG_PAINTTYPE_RGBCOLOR || fill.paintType === SVGPaint.SVG_PAINTTYPE_CURRENTCOLOR) { var fillElement = document.createElement("v:fill"); var isRadial = false; - var fc = fill.rgbColor; - fillElement.setAttribute("color", "rgb(" +fc.red.getFloatValue()+ "," +fc.green.getFloatValue()+ "," +fc.blue.getFloatValue()+ ")"); + var fc = fill.rgbColor, num = CSSPrimitiveValue.CSS_NUMBER; + fillElement.setAttribute("color", "rgb(" +fc.red.getFloatValue(num)+ "," +fc.green.getFloatValue(num)+ "," +fc.blue.getFloatValue(num)+ ")"); var fillOpacity = parseFloat(style.getPropertyValue("fill-opacity")) * parseFloat(style.getPropertyValue("opacity")); //opacityを掛け合わせる if (fillOpacity < 1) { fillElement.setAttribute("opacity", fillOpacity+""); @@ -1992,7 +2007,7 @@ if (!isRadial) { el.appendChild(fillElement); } - isRadial = fillOpacity = null; + fc = isRadial = fillOpacity = null; } if (stroke.paintType === SVGPaint.SVG_PAINTTYPE_RGBCOLOR || stroke.paintType === SVGPaint.SVG_PAINTTYPE_CURRENTCOLOR) { var strokeElement = document.createElement("v:stroke"); @@ -2000,8 +2015,8 @@ var swx = sw.value * Math.sqrt(Math.abs(matrix._determinant())); strokeElement.setAttribute("weight", swx + "px"); if (!stroke.uri) { - var fc = stroke.rgbColor; - strokeElement.setAttribute("color", "rgb(" +fc.red.getFloatValue()+ "," +fc.green.getFloatValue()+ "," +fc.blue.getFloatValue()+ ")"); + var fc = stroke.rgbColor, num = CSSPrimitiveValue.CSS_NUMBER; + strokeElement.setAttribute("color", "rgb(" +fc.red.getFloatValue(num)+ "," +fc.green.getFloatValue(num)+ "," +fc.blue.getFloatValue(num)+ ")"); var strokeOpacity = parseFloat(style.getPropertyValue("stroke-opacity")) * parseFloat(style.getPropertyValue("opacity")); //opacityを掛け合わせる if (swx < 1) { strokeOpacity *= swx; //太さが1px未満なら色を薄くする @@ -2009,7 +2024,7 @@ if (strokeOpacity < 1) { strokeElement.setAttribute("opacity", strokeOpacity); } - strokeOpacity = null; + fc = num = strokeOpacity = null; } strokeElement.setAttribute("miterlimit", style.getPropertyValue("stroke-miterlimit")); strokeElement.setAttribute("joinstyle", style.getPropertyValue("stroke-linejoin"));