[Sie-announce] SIEコード [2895] SVGLinearGradientElementインターフェースの改良と、SVGURIReferenceインターフェースの修正

Back to archive index

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;




Sie-announce メーリングリストの案内
Back to archive index