[Sie-announce] SIEコード [1331] 0. 51統合

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2009年 10月 13日 (火) 20:42:10 JST


Revision: 1331
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1331
Author:   dhrname
Date:     2009-10-13 20:42:10 +0900 (Tue, 13 Oct 2009)

Log Message:
-----------
0.51統合

Modified Paths:
--------------
    trunk/sie.js

Property Changed:
----------------
    trunk/sie.js

Modified: trunk/sie.js
===================================================================
--- trunk/sie.js	2009-10-12 13:18:32 UTC (rev 1330)
+++ trunk/sie.js	2009-10-13 11:42:10 UTC (rev 1331)
@@ -56,9 +56,10 @@
   //引数にtrueがあれば、例外処理のログを作動させる
   stlog = new STLog(false);
   var ary = document.getElementsByTagName("script");
-  for (var i=0; i < ary.length; i++)  {//全script要素をチェックして、type属性がimage/svg+xmlならば、中身をSVGとして処理する
+  //全script要素をチェックして、type属性がimage/svg+xmlならば、中身をSVGとして処理する
+  for (var i=0; i < ary.length; i++) {
     var hoge = ary[i].type;
-    if (ary[i].type === "image/svg+xml")  {
+    if (ary[i].type === "image/svg+xml") {
       var ait = ary[i].text;
       if (sieb_s && ait.match(/&lt;svg/)) {
         //ソース内のタグを除去
@@ -69,9 +70,10 @@
       if (isMSIE) {
         setVMLNameSpace();
         var da = {};
-        da.obj = []; da.obj[i] = ary[i]; da.num = i + 1; da.content = ait; da.success = true;
+        da.obj = []; da.obj[i] = ary[i]; da.num = i + 1; da.content = ait.replace(/\shref=/g, " target='_top' xlink:href="); da.success = true;
         ca(da);
-      }  else{
+      } else {
+        ait = ait.replace(/\shref=/g, " target='_top' xlink:href=");
         var s = textToSVG(ait,ary[i].getAttribute("width"),ary[i].getAttribute("height"));
         ary[i].parentNode.insertBefore(s,ary[i]);
       }
@@ -185,7 +187,7 @@
   //以下、画像を切り取り
   trstyle.overflow = "hidden";
   var backrs = backr.currentStyle;
-  var viewWidth = w > sw ? sw : w, viewHeight = h > sh ? sh : h;
+  var viewWidth = w > sw ? sw : w, viewHeight = h > sh ? sh : h; //ウィンドウ枠の長さを決定する
   var bfl = parseFloat(backrs.left), bft = parseFloat(backrs.top);
   var bl = -this.vi._tx, bt = -this.vi._ty;
   if (bfl !== 0 && !isNaN(bfl)) { //内部の図形にずれが生じたとき(isNaNはIE8でautoがデフォルト値のため)
@@ -314,6 +316,7 @@
       try {
         getURL(this.emd[n].src,ca,this.emd,n+1);
       } catch(e) {stlog.add(e,185);this.next();}
+  } else { //全要素の読み込みが終われば
   }
   } catch(e) {stlog.add(e,293);this.onumber++;this.next();}
 }
@@ -350,7 +353,7 @@
   stvsetob(this.children,sw,sh);
   this.children = this.transformable = null;
   } catch(e){stlog.addd(e,3145)}
-}
+};
 STGroupElement.prototype.chset = SVGtoVML.prototype.chset;
 
 //a要素の処理
@@ -422,7 +425,7 @@
   } catch(e) {stlog.add(e,236);}
   try {
     //以下は、テキストの幅であるtextLengthを算出する
-    var arr = this.tspan, textLength = 0, fontSize = this.paint.fontSize, atfontSize = 0, fij = /[fijlt.,:;]/g; //fontSizeは親要素の文字サイズ。atfontSizeは各span要素のサイズ。
+    var arr = this.tspan, textLength = 0, fontSize = this.paint.fontSize, atfontSize = 0, fij = /[fijlt.,:;1]/g; //fontSizeは親要素の文字サイズ。atfontSizeは各span要素のサイズ。
     for (var i=0,s={dx:0,dy:0},arri=arr.length;i<arri;++i) {
       var ari = arr[i];
       ari.paint.fset(w,h,ari.transformable);
@@ -543,7 +546,7 @@
   this.transformable = NAIBU.transformToCTM(ele,matrix);
   return this;
 }
-STPath.prototype.set = function shapeset( /*float*/ w, /*float*/ h) {
+STPath.prototype.set = function ( /*float*/ w, /*float*/ h) {
   var dat = "";
   try {
     var dd = this.d
@@ -640,7 +643,7 @@
     this.paint.set(w, h, ttm);
     dat = this.paint = ttm = this.transformable = this.d = preCom = x = y = x0 = y0 = dx = dy = tma = tmb = tmc = tmd = tme = tmf = w = h = null; //解放
   } catch(e) {stlog.add(e,372);}
-}
+};
 
 //QからCに変換
 NAIBU.qtoc = function (/*float*/ x, /*float*/ y, /*Array*/ F) {
@@ -952,7 +955,7 @@
   }
 }
   return this;
-}
+};
 //デフォルト値のリスト
 NAIBU.PaintColor.prototype.defaults = {
   fill: "black",
@@ -982,8 +985,8 @@
     }
     return cache[id];
   }
-}
-NAIBU.PaintColor.prototype.getAttribute = function pcgetAttribute( /*string*/ name) {
+};
+NAIBU.PaintColor.prototype.getAttribute = function ( /*string*/ name) {
   try {
     var element = this.tar;
     var style = element.style[name];
@@ -994,20 +997,20 @@
     var s = attribute ? attribute.nodeValue : null;
     return s;
   } catch(e) {stlog.add(e,659); return null;}
-}
+};
 //内部プロパティを、styleに設定する
 NAIBU.PaintColor.prototype.setStyle = function() {
   try {
     var tst = this.tar
     for (var i in this) {
       if ((typeof this[i]) === "string") { //string型以外は除く
-        tst.style[name] = this[i];
+        tst.style[i] = this[i];
       }
     }
   } catch(e) {stlog.add(e,899); return "";}
-}
+};
 NAIBU.PaintColor.prototype._urlreg = /url\(#([^)]+)/;
-NAIBU.PaintColor.prototype.set = function pcset(/*float*/ w, /*float*/ h, /*Matrix*/ matrix) {
+NAIBU.PaintColor.prototype.set = function (/*float*/ w, /*float*/ h, /*Matrix*/ matrix) {
   var el = this.tar;
   if (this.fill === "none") {
     el.filled = "false";
@@ -1083,7 +1086,7 @@
     this.tar.style.cursor = this.cursor;
   }
   w = h = null;
-}
+};
 //色キーワード
 NAIBU.PaintColor.prototype.keywords = {
   aliceblue: "#F0F8FF",
@@ -1229,9 +1232,9 @@
     });
   }
   return color;
-}
+};
 //linearGradient、radialGradient要素を処理
-NAIBU.PaintColor.prototype.gradient = function pcgradient( /*element*/ ele, /*string*/ id, /*Matrix*/ matrix) {
+NAIBU.PaintColor.prototype.gradient = function ( /*element*/ ele, /*string*/ id, /*Matrix*/ matrix) {
   var grad = document.getElementById(id);
   if (grad) {
   var grad2 = grad;
@@ -1339,7 +1342,7 @@
   }
   stops = type = lengh = color = colors = opacity = null;
   return false;
-}
+};
 
 //font属性、関連プロパティを処理する
 //PaintColorを継承
@@ -1391,7 +1394,7 @@
         tst.style[sname] = ti;
       }
     }
-  } catch(e) {stlog.add(e,899); return "";}
+  } catch(e) {stlog.add(e,1396); return "";}
 }
 NAIBU.FontStyle.prototype.fset = function( /*float*/ w, /*float*/ h, /*Matrix*/ matrix) {
   try{
@@ -1406,6 +1409,7 @@
   }
   this.writingMode = tts.writingMode;
   tts.marginTop = (this.writingMode === "tb-rl") ? "0px" : -parseFloat(tts.fontSize)+ "px";
+  tts.textIndent = "0px";
  } catch(e){stlog.add(e,1185);}
 }
 
@@ -1421,33 +1425,35 @@
     var coma = tft.match(NAIBU.comaR); //コマンド文字にマッチ translate
     var list = tft.match(NAIBU.listR); //カッコ内のリストにマッチ (10 20 30...)
     var a,b,c,d,e,f,lis,deg,rad,degli,matri;
-    for (var j=0;j<coma.length;j++) {
+    for (var j=0,cli=coma.length;j<cli;j++) {
       lis = list[j], com = coma[j];
       deg = lis.match(NAIBU.degR);
-      rad = parseFloat(deg[0]) / 180 * Math.PI;
       degli = deg.length;
       if (degli === 6) {
         a = parseFloat(deg[0]); b = parseFloat(deg[1]); c = parseFloat(deg[2]); d = parseFloat(deg[3]); e = parseFloat(deg[4]); f = parseFloat(deg[5]);
-      } else if (degli === 3) {
-        var cx = parseFloat(deg[1]), cy = parseFloat(deg[2]);
-        a = Math.cos(rad); b = Math.sin(rad); c = -b; d = a; e = (1-a)*cx-c*cy; f = -b*cx+(1-d)*cy;
-      } else if (degli <= 2) {
-        switch (com) {
-        case "translate":
-          a = 1; b = 0; c = 0; d = 1; e = parseFloat(deg[0]); f = parseFloat(deg[1] || 0);
-        break;
-        case "scale":
-          a = parseFloat(deg[0]); b = 0; c = 0; d = parseFloat(deg[1] || deg[0]); e = 0; f = 0;
-        break;
-        case "rotate":
-          a = Math.cos(rad); b = Math.sin(rad); c = -b; d = a; e = 0; f = 0;
-        break;
-        case "skewX":
-          a = 1; b = 0; c = Math.tan(rad); d = 1; e = 0; f = 0;
-        break;
-        case "skewY":
-          a = 1; b = Math.tan(rad); c = 0; d = 1; e = 0; f = 0;
-        break;
+      } else {
+        rad = parseFloat(deg[0]) / 180 * Math.PI;
+        if (degli === 3) {
+          var cx = parseFloat(deg[1]), cy = parseFloat(deg[2]);
+          a = Math.cos(rad); b = Math.sin(rad); c = -b; d = a; e = (1-a)*cx-c*cy; f = -b*cx+(1-d)*cy;
+        } else if (degli <= 2) {
+          switch (com) {
+          case "translate":
+            a = 1; b = 0; c = 0; d = 1; e = parseFloat(deg[0]); f = parseFloat(deg[1] || 0);
+          break;
+          case "scale":
+            a = parseFloat(deg[0]); b = 0; c = 0; d = parseFloat(deg[1] || deg[0]); e = 0; f = 0;
+          break;
+          case "rotate":
+            a = Math.cos(rad); b = Math.sin(rad); c = -b; d = a; e = 0; f = 0;
+          break;
+          case "skewX":
+            a = 1; b = 0; c = Math.tan(rad); d = 1; e = 0; f = 0;
+          break;
+          case "skewY":
+            a = 1; b = Math.tan(rad); c = 0; d = 1; e = 0; f = 0;
+          break;
+          }
         }
       }
       matri = new Matrix(a,b,c,d,e,f);
@@ -1458,21 +1464,21 @@
   }
   }  catch(e) {stlog.add(e,816);}
   return matrix;
-}
+};
 
 //SVGPointを参照
 function Point( /*number*/ x, /*number*/ y) {
   this.x = x; this.y = y;
   return this;
 }
-Point.prototype.matrixTransform = function pmatrixtransform( /*Matrix*/ m) {
+Point.prototype.matrixTransform = function ( /*Matrix*/ m) {
   var x = parseInt(m.a * this.x + m.c * this.y + m.e);
   var y = parseInt(m.b * this.x + m.d * this.y + m.f);
   if (-1 < x && x < 1) {x=1;}
   if (-1 < y && y < 1) {y=1;}
   var s = new Point(x,y);
   return s;
-}
+};
 
 //Pointのリスト。一括で処理できる
 function PList( /*Array*/ d) {
@@ -1502,14 +1508,14 @@
   return this;
 }
 //Matrix同士の積を算出
-Matrix.prototype.multiply = function matrixmultiply( /*Matrix*/ m) {
+Matrix.prototype.multiply = function ( /*Matrix*/ m) {
   var s = new Matrix(this.a * m.a + this.c * m.b,this.b * m.a + this.d * m.b,this.a * m.c + this.c * m.d,this.b * m.c + this.d * m.d,this.a * m.e + this.c * m.f + this.e,this.b * m.e + this.d * m.f + this.f);
   return s;
-}
+};
 //行列式
 Matrix.prototype.determinant = function() {
   return (this.a * this.d - this.b * this.c);
-}
+};
 
 //SVGViewSpecを参照
 function STViewSpec( /*element*/ ele) {
@@ -1748,12 +1754,12 @@
   "px": 5,
   "%":  2
 }
-STLength.prototype.newValueSpecifiedUnits = function stlengthnvsu( /*number*/ ut, /*number*/ value) {
+STLength.prototype.newValueSpecifiedUnits = function ( /*number*/ ut, /*number*/ value) {
   this.unitType = ut;
   this.value = value * this._n[ut-1];
   this.valueInSpecifiedUnits = value;
   this._n[1] = 0.01; //初期化
-}
+};
 //XLink言語を処理
 NAIBU.XLink = function( /*element*/ ele) {
   this.tar = ele;
@@ -1808,8 +1814,7 @@
         }  else{
           uri.match(/#(.+)$/);
           this.resource = document.getElementById(RegExp.$1);
-          var dc = this.resource.cloneNode(true);
-          this.tar.appendChild(dc);
+          this.tar.innerHTML = this.resource.outerHTML.replace(/<\/?v\:(fill|stroke)>/g, "");
         }
       break;
       case "new":


Property changes on: trunk/sie.js
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/04x/040/sie.js:812-829
/branches/04x/041/sie.js:891-923
/branches/04x/042/sie.js:927-967
/branches/04x/043/sie.js:969-1013
/branches/04x/044/sie.js:1015-1067
/branches/04x/045/sie.js:1069-1078
/branches/04x/046/sie.js:1080-1129
/branches/04x/047/sie.js:1131-1164
/branches/04x/048/sie.js:1166-1180
/branches/04x/sie.js:830-1181
/branches/05x/050/sie.js:1183-1201
/branches/05x/sie.js:1183-1209
   + /branches/04x/040/sie.js:812-829
/branches/04x/041/sie.js:891-923
/branches/04x/042/sie.js:927-967
/branches/04x/043/sie.js:969-1013
/branches/04x/044/sie.js:1015-1067
/branches/04x/045/sie.js:1069-1078
/branches/04x/046/sie.js:1080-1129
/branches/04x/047/sie.js:1131-1164
/branches/04x/048/sie.js:1166-1180
/branches/04x/sie.js:830-1181
/branches/05x/050/sie.js:1183-1201
/branches/05x/051/sie.js:1207-1323
/branches/05x/sie.js:1183-1328




Sie-announce メーリングリストの案内
アーカイブの一覧に戻る