svnno****@sourc*****
svnno****@sourc*****
2011年 8月 27日 (土) 21:02:50 JST
Revision: 2895 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2895 Author: dhrname Date: 2011-08-27 21:02:49 +0900 (Sat, 27 Aug 2011) Log Message: ----------- SVGLinearGradientElementインターフェースの改良と、SVGURIReferenceインターフェースの修正 Modified Paths: -------------- branches/08x/084/org/w3c/dom/svg.js Modified: branches/08x/084/org/w3c/dom/svg.js =================================================================== --- branches/08x/084/org/w3c/dom/svg.js 2011-08-25 11:48:00 UTC (rev 2894) +++ branches/08x/084/org/w3c/dom/svg.js 2011-08-27 12:02:49 UTC (rev 2895) @@ -967,7 +967,7 @@ this._instance = null; //埋め込みの場合に、読み込んだDOMツリーを結び付けておくプロパティ this._text = ""; this.addEventListener("DOMAttrModified", function(evt){ - if (evt.relatedNode.namespaceURI === "http://www.w3.org/1999/xlink" && evt.attrName === "xlink:href") { + if ((evt.relatedNode.namespaceURI === "http://www.w3.org/1999/xlink") && (evt.attrName === "xlink:href")) { evt.target.href.baseVal = evt.newValue; /*_svgload_limitedを+1とすることで、 *SVGLoadイベントは発火されなくなる。1を引く必要がある @@ -1053,7 +1053,7 @@ xmlhttp.open("GET", uri, false); xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xmlhttp.onreadystatechange = function() { - if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { + if ((xmlhttp.readyState === 4) && (xmlhttp.status === 200)) { var type = xmlhttp.getResponseHeader('Content-Type') || "text", doc, str, ele, ev; if ((type.indexOf("text") > -1) || (type.indexOf("xml") > -1) || (type.indexOf("script") > -1)) { //ファイルがtext形式である場合 @@ -1088,9 +1088,9 @@ tar.dispatchEvent(ev); tar.ownerDocument.documentElement._svgload_limited--; if (tar.ownerDocument.documentElement._svgload_limited < 0) { - ev = tod.createEvent("SVGEvents"); + ev = tar.ownerDocument.createEvent("SVGEvents"); ev.initEvent("SVGLoad", false, false); - tod.documentElement.dispatchEvent(ev); + tar.ownerDocument.documentElement.dispatchEvent(ev); } tar = type = doc = str = ev = null; /*IEのメモリリーク対策として、空関数を入力*/ @@ -4479,14 +4479,8 @@ grad = ele = t = grad2 = href = stops = length = color = colors = opacity = null; return; } - while (grad2 && !grad2.hasChildNodes()) { //stopを子要素に持つgradient要素を探す - href = grad2.getAttributeNS("http://www.w3.org/1999/xlink", "href"); - if (href) { - href.match(/#(.+)/); - grad2 = grad2.ownerDocument.getElementById(RegExp.$1); - } else { - break; - } + if (grad._instance) { //xlink言語で呼び出されたノードが_instanceに収納されているならば + grad2 = grad._instance; } stops = grad2.getElementsByTagNameNS("http://www.w3.org/2000/svg", "stop"); if (!stops) { @@ -4515,6 +4509,10 @@ ele["o:opacity2"] = opacity[0]+ ""; /*SVGRadialGradientElementインターフェースで利用する*/ grad._color = color; + var gt = grad2.getAttributeNS(null, "gradientTransform"); + if (gt) { + grad.setAttributeNS(null, "transform", gt); + } grad = grad2 = ele = stops = length = color = colors = opacity = evt = t = href = stop = sstyle = ci = null; }, false); return this; @@ -4599,10 +4597,6 @@ cx = cx*wid + nx; cy = cy*hei + ny; rx = r*wid; ry = r*hei; nx = ny = wid = hei = null; } - var gt = grad.getAttributeNS(null, "gradientTransform"); - if (gt) { - grad.setAttributeNS(null, "transform", gt); - } var matrix = tar.getScreenCTM().multiply(grad.getCTM()); el = cx - rx; et = cy - ry; er = cx + rx; eb = cy + ry; var rrx = rx * 0.55228, rry = ry * 0.55228;