[Sie-announce] SIEコード [1777] style属性の解析に関するバグの修正

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2010年 4月 4日 (日) 00:17:48 JST


Revision: 1777
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1777
Author:   dhrname
Date:     2010-04-04 00:17:48 +0900 (Sun, 04 Apr 2010)

Log Message:
-----------
style属性の解析に関するバグの修正

Modified Paths:
--------------
    branches/ufltima/dom/svg.js

Modified: branches/ufltima/dom/svg.js
===================================================================
--- branches/ufltima/dom/svg.js	2010-04-03 15:17:15 UTC (rev 1776)
+++ branches/ufltima/dom/svg.js	2010-04-03 15:17:48 UTC (rev 1777)
@@ -209,7 +209,9 @@
         var a = sc.split(";");
         for (var i=0, ali=a.length;i<ali;++i) {
           var ai = a[i], m = ai.split(":");
-          style.setProperty(m[0], m[1]);
+          if (ai !== "") {
+            style.setProperty(m[0], m[1]);
+          }
           ai = m = null;
         }
         a = sc = null;
@@ -217,7 +219,7 @@
     } else if (name === "class") {
       tar.className = evt.newValue;
     } else if (name.indexOf("on") === 0) {           //event属性ならば
-      var s = eval("(function(){" +evt.newValue+ "})");
+      var s = eval("(function(evt){" +evt.newValue+ "})");
       tar.addEventListener(name.substring(2, name.length), s, false);
     } else if (evt.relatedNode.nodeName === "xml:base") { //xml:base属性ならば
       tar.xmlbase = evt.newValue;
@@ -1152,6 +1154,9 @@
       + "v\\:shape{width:100%;height:100%;" +vmlUrl;
   }
   if (xmlhttp) {
+    var oba = document.createElement("div");
+    oba.setAttribute("id","_NAIBU_outline");
+    document.body.appendChild(oba);
     //HTML内のobject要素を探し出して、メソッドを結びつける
     var obje = document.getElementsByTagName("object");
     for (var i=0, objli=1;i<objli;++i) {
@@ -1690,7 +1695,7 @@
 };
 for (var prop in SVGStringList.prototype) { //prototypeのコピーで継承を行う
   SVGPathSegList.prototype[prop] = SVGStringList.prototype[prop];
-}
+};
 
 function SVGPathElement() {
   SVGElement.apply(this, arguments);
@@ -2611,7 +2616,7 @@
       if (grad) {
         var grad2 = grad;
         while (grad2 && !grad2.hasChildNodes()) { //stopを子要素に持つgradient要素を探す
-          grad2.getAttributeNS("http://www.w3.org/xlink/1999", "xlink:href").match(/#(.+)/);
+          grad2.getAttributeNS("http://www.w3.org/1999/xlink", "href").match(/#(.+)/);
           grad2 = evt.target.ownerDocument.getElementById(RegExp.$1);
         }
         var stops = grad2.getElementsByTagNameNS("http://www.w3.org/svg/2000", "stop");
@@ -2659,7 +2664,7 @@
       if (!!!ele) { //まだ、path要素などが設定されていない場合
         return;
       }
-      angle = 270 - Math.atan2(this.y2.baseVal.value-this.y1.baseVal.value, this.x2.baseVal.value-this.x1.baseVal.value) * 180 / Math.PI;
+      angle = 270 - Math.atan2(grad.y2.baseVal.value-grad.y1.baseVal.value, grad.x2.baseVal.value-grad.x1.baseVal.value) * 180 / Math.PI;
       if (angle >= 360) {
         angle -= 360;
       }
@@ -2687,13 +2692,13 @@
     ele.setAttribute("type", "gradientTitle");
     ele.setAttribute("focus", "100%");
     ele.setAttribute("focusposition", "0.5 0.5");
-    if (this.tar.getAttribute("tag") === "rect") {
-      var cx = parseFloat((grad.getAttribute("cx") || "0.5"));
-      var cy = parseFloat((grad.getAttribute("cy") || "0.5"));
-      var r = rx = ry = parseFloat((grad.getAttribute("r") || "0.5"));
+    if (ele.localName === "rect") {
+      var cx = parseFloat((grad.getAttributeNS(null, "cx") || "0.5"));
+      var cy = parseFloat((grad.getAttribute(null, "cy") || "0.5"));
+      var r = rx = ry = parseFloat((grad.getAttributeNS(null, "r") || "0.5"));
       var el = this.w, et = this.h, er = 0, eb = 0;
       var data = this.tar.path.value;
-      var units = grad.getAttribute("gradientUnits");
+      var units = grad.getAttributeNS(null, "gradientUnits");
       if (!units || units === "objectBoundingBox") {
         //%の場合は小数点に変換(10% -> 0.1)
         cx = cx > 1 ? cx/100 : cx; cy = cy > 1 ? cy/100 : cy; r = r > 1 ? r/100 : r;
@@ -2709,10 +2714,10 @@
         degis = null;
         cx = cx*(er - el) + el; cy = cy*(eb - et) + et; rx = r*(er - el); ry = r*(eb - et);
       }
-      var gt = grad.getAttribute("gradientTransform");
+      var gt = grad.getAttributeNS(null, "gradientTransform");
       if (gt) {
-        grad.setAttribute("transform",gt);
-        matrix = NAIBU.transformToCTM(grad, matrix);
+        grad.setAttributeNS(null, "transform",gt);
+        matrix = grad.getCTM();
       }
       el = cx - rx; et = cy - ry; er = cx + rx; eb = cy + ry;
       var rrx = rx * 0.55228, rry = ry * 0.55228;
@@ -2733,8 +2738,8 @@
       background.filters[0].apply();
       background.innerHTML = circle;
       background.filters[0].play();
-      this.tar.parentNode.insertBefore(background, this.tar);
-      this.tar.filled = "false";
+      ele._tar.parentNode.insertBefore(background, ele.tar);
+      ele._tar.filled = "false";
       ellipse = circle = data = list = pl = plm = gt = cx = cy = r = null;
     }
   }, false);




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