svnno****@sourc*****
svnno****@sourc*****
2011年 4月 10日 (日) 21:51:30 JST
Revision: 2584 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2584 Author: dhrname Date: 2011-04-10 21:51:30 +0900 (Sun, 10 Apr 2011) Log Message: ----------- 1, SVGGradientElementのvar文の整理 2, SVGGradientElementについて、必要のないif文を削除 Modified Paths: -------------- branches/07x/075/org/w3c/dom/svg.js Modified: branches/07x/075/org/w3c/dom/svg.js =================================================================== --- branches/07x/075/org/w3c/dom/svg.js 2011-04-10 12:27:26 UTC (rev 2583) +++ branches/07x/075/org/w3c/dom/svg.js 2011-04-10 12:51:30 UTC (rev 2584) @@ -4315,52 +4315,54 @@ SVGColorProfileRule.prototype = new SVGCSSRule(); function SVGGradientElement() { - SVGElement.apply(this, arguments); - SVGURIReference.apply(this, arguments); + SVGElement.apply(this); + SVGURIReference.apply(this); /*readonly SVGAnimatedEnumeration*/ this.gradientUnits = new SVGAnimatedEnumeration(); /*readonly SVGAnimatedTransformList*/ this.gradientTransform = new SVGAnimatedTransformList(); /*readonly SVGAnimatedEnumeration*/ this.spreadMethod = new SVGAnimatedEnumeration(); this.addEventListener("DOMNodeInsertedIntoDocument", function(evt) { - var grad = evt.target, ele = evt._tar, t = evt._style; //eleはv:fill要素やv:stroke要素のノード、tはラップした要素ノードのスタイルを収納 - if (!!!ele) { //まだ、path要素などが設定されていない場合 + var grad = evt.target, + ele = evt._tar, + t = evt._style, //eleはv:fill要素やv:stroke要素のノード、tはラップした要素ノードのスタイルを収納 + grad2 = grad, + href, stops, length, + color = [], + colors = [], + opacity = []; + if (!ele || !grad) { //まだ、path要素などが設定されていない場合 return; } - if (grad) { - var grad2 = grad; - while (grad2 && !grad2.hasChildNodes()) { //stopを子要素に持つgradient要素を探す - var href = grad2.getAttributeNS("http://www.w3.org/1999/xlink", "href"); - if (href) { - href.match(/#(.+)/); - grad2 = evt.target.ownerDocument.getElementById(RegExp.$1); - } else { - break; - } + while (grad2 && !grad2.hasChildNodes()) { //stopを子要素に持つgradient要素を探す + href = grad2.getAttributeNS("http://www.w3.org/1999/xlink", "href"); + if (href) { + href.match(/#(.+)/); + grad2 = evt.target.ownerDocument.getElementById(RegExp.$1); + } else { + break; } - var stops = grad2.getElementsByTagNameNS("http://www.w3.org/2000/svg", "stop"); - if (!stops) { - grad = grad2 = stops = null; - return; - } - var length = stops.length; - var color = [], colors = [], opacity = []; - for (var i = 0; i < length; ++i) { - var stop = stops[i], sstyle = stop.ownerDocument.defaultView.getComputedStyle(stop, ""); - color[i] = sstyle.getPropertyValue("stop-color"); - colors[i] = stop.offset.baseVal + " " + color[i]; - opacity[i] = (sstyle.getPropertyValue("stop-opacity") || 1) * t.getPropertyValue("fill-opacity") * t.getPropertyValue("opacity"); - } - ele.setAttribute("method", "none"); - ele.setAttribute("color", color[0]); - ele.setAttribute("color2", color[length-1]); - ele.setAttribute("colors", colors.join(",")); - // When colors attribute is used, the meanings of opacity and o:opacity2 are reversed. - ele.setAttribute("opacity", opacity[length-1]+ ""); - ele.setAttribute("o:opacity2", opacity[0]+ ""); - /*SVGRadialGradientElementインターフェースで利用する*/ - grad._color = color; - grad = ele = stops = lengh = color = colors = opacity = null; } - evt = t = null; + stops = grad2.getElementsByTagNameNS("http://www.w3.org/2000/svg", "stop"); + if (!stops) { + ele = t = href = grad = grad2 = stops = null; + return; + } + length = stops.length; + for (var i = 0; i < length; ++i) { + var stop = stops[i], sstyle = stop.ownerDocument.defaultView.getComputedStyle(stop, ""); + color[i] = sstyle.getPropertyValue("stop-color"); + colors[i] = stop.offset.baseVal + " " + color[i]; + opacity[i] = (sstyle.getPropertyValue("stop-opacity") || 1) * t.getPropertyValue("fill-opacity") * t.getPropertyValue("opacity"); + } + ele.setAttribute("method", "none"); + ele.setAttribute("color", color[0]); + ele.setAttribute("color2", color[length-1]); + ele.setAttribute("colors", colors.join(",")); + // When colors attribute is used, the meanings of opacity and o:opacity2 are reversed. + ele.setAttribute("opacity", opacity[length-1]+ ""); + ele.setAttribute("o:opacity2", opacity[0]+ ""); + /*SVGRadialGradientElementインターフェースで利用する*/ + grad._color = color; + grad = ele = stops = lengh = color = colors = opacity = evt = t = null; }, false); return this; };