[Sie-announce] SIEコード [1725] 1, baseValプロパティを付けていない部分があったので、それを修正追加

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2010年 3月 13日 (土) 20:14:40 JST


Revision: 1725
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1725
Author:   dhrname
Date:     2010-03-13 20:14:40 +0900 (Sat, 13 Mar 2010)

Log Message:
-----------
1, baseValプロパティを付けていない部分があったので、それを修正追加
2, VMLの名前空間を付ける作業を追加
3, 作業2に伴い、windowオブジェクトのonloadイベントに登録する作業を追加

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

Modified: branches/ufltima/dom/svg.js
===================================================================
--- branches/ufltima/dom/svg.js	2010-03-13 11:12:48 UTC (rev 1724)
+++ branches/ufltima/dom/svg.js	2010-03-13 11:14:40 UTC (rev 1725)
@@ -182,7 +182,7 @@
       var a,b,c,d,e,f,lis,deg,rad,degli;
       //transform属性の値を、SVGTransformListであるtransformプロパティに結びつける
       for (var j=0,cli=coma.length;j<cli;j++) {
-        var s = evt.currentTarget.createSVGTransform();
+        var s = evt.target.ownerDocument.documentElement.createSVGTransform();
         lis = list[j], com = coma[j];
         deg = lis.match(degR);
         degli = deg.length;
@@ -218,7 +218,7 @@
             }
           }
         }
-        tar.transform.appendItem(s);
+        tar.transform.baseVal.appendItem(s);
         lis = com = deg = rad = null;
       }
       list = coma = mat = null;
@@ -293,15 +293,15 @@
 /*SVGMatrix*/ SVGElement.prototype.getCTM = function() {
   var s;
   if (this.parentNode) {
-    s = this.parentNode.getCTM().multiply(this.transform.consolidate());
+    s = this.parentNode.getCTM().multiply(this.transform.baseVal.consolidate() || this.ownerDocument.documentElement.createSVGMatrix());
   } else {
-    s = this.transform.consolidate();
+    s = this.transform.baseVal.consolidate() || this.ownerDocument.documentElement.createSVGMatrix();
   }
   return s;
 };
 
 /*SVGMatrix*/ SVGElement.prototype.getScreenCTM = function(){
-  if (this.parentNode) {
+  if (!this.parentNode) {
     return null;
   }
   var view = this.nearestViewportElement || this.ownerDocument.documentElement;
@@ -1088,6 +1088,16 @@
       xmlhttp = false;
     }
   }
+  if (!document.namespaces["v"]) {
+    document.namespaces.add("v","urn:schemas-microsoft-com:vml");
+    document.namespaces.add("o","urn:schemas-microsoft-com:office:office");
+    var st = document.createStyleSheet();
+    var vmlUrl = "behavior: url(#default#VML);display: inline-block;} "; //inline-blockはIEのバグ対策
+    st.cssText = "v\\:rect{" +vmlUrl+ "v\\:image{" +vmlUrl+ "v\\:fill{" +vmlUrl+ "v\\:stroke{" +vmlUrl+ "o\\:opacity2{" +vmlUrl
+      + "dn\\:defs{display:none}"
+      + "v\\:group{text-indent:0px;position:relative;width:100%;height:100%;" +vmlUrl
+      + "v\\:shape{width:100%;height:100%;" +vmlUrl;
+  }
   if (xmlhttp) {
     //HTML内のobject要素を探し出して、メソッドを結びつける
     var obje = document.getElementsByTagName("object");
@@ -1103,7 +1113,7 @@
             str = xmlhttp.responseText.replace(/!DOCTYPE/,"!--").replace(/(dtd">|\]>)/,"-->");
             doc.loadXML(str);
             var s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg");
-            s.importNode(doc.documentElement);
+            s.importNode(doc.documentElement, true);
             return s;
           };
           alert(objei.getSVGDocument());
@@ -1329,6 +1339,7 @@
 
 function SVGTransformList() { 
   /*readonly unsigned long*/ this.numberOfItems = 0;
+  this._list = [];
   return this;
 };
 for (var prop in SVGStringList.prototype) { //prototypeのコピーで継承を行う
@@ -1874,6 +1885,8 @@
           }
         }
       }
+      var vi = tar.ownerDocument.documentElement.viewport;
+      var w = vi.width, h = vi.hight;
       tar._tar.path = dat + " e";
       tar._tar.coordsize = w + " " + h;
       matrix = dat = x = y = null;
@@ -2083,7 +2096,8 @@
       }
       var dat = list.join(" ");
       //VMLに結び付けていく
-      var ele = tar._tar;
+      var ele = tar._tar, vi = tar.ownerDocument.documentElement.viewport;
+      var w = vi.width, h = vi.hight;
       ele.path = dat;
       ele.coordsize = w + " " + h;
       list = dat = ele = null;
@@ -2825,4 +2839,13 @@
   view:            SVGViewElement,
   vkern:           SVGVKernElement
 };
-GetSVGDocument();
\ No newline at end of file
+NAIBU.addEvent = function(evt,lis){
+  if (window.addEventListener) {
+    window.addEventListener(evt, lis, false);
+  } else if (window.attachEvent) {
+    window.attachEvent('on'+evt, lis);
+  } else {
+    window['on'+evt] = lis;
+  }
+};
+NAIBU.addEvent("load", GetSVGDocument);
\ No newline at end of file




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