[Sie-announce] SIEコード [1748] getPropertyValueメソッドを修正

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2010年 3月 22日 (月) 23:26:08 JST


Revision: 1748
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1748
Author:   dhrname
Date:     2010-03-22 23:26:08 +0900 (Mon, 22 Mar 2010)

Log Message:
-----------
getPropertyValueメソッドを修正

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

Modified: branches/ufltima/dom/css.js
===================================================================
--- branches/ufltima/dom/css.js	2010-03-22 11:27:03 UTC (rev 1747)
+++ branches/ufltima/dom/css.js	2010-03-22 14:26:08 UTC (rev 1748)
@@ -209,8 +209,28 @@
 /*CSSValue*/ getPropertyCSSValue : function( /*string*/ propertyName) {
     propertyName += ":";
     for (var i=0,tli=this._list.length;i<tli;++i) {
-      var ti = this._list[i];
-      if (ti.cssText.indexOf(propertyName) > -1) {  //プロパティ名に合致するCSSValueオブジェクトが見つかった場合
+      var ti = this._list[i], tc = ti.cssText;
+      if (tc.indexOf(propertyName) > -1) {                          //プロパティ名に合致するCSSValueオブジェクトが見つかった場合
+        if (propertyName === "fill" || propertyName === "stroke") { //fill、strokeプロパティは別途、SVGPaintで処理
+          ti = new SVGPaint();
+          var _urlreg = /url\(#([^)]+)/;
+          var paintType = SVGPaint.SVG_PAINTTYPE_UNKNOWN, uri = null, color = null;
+          if (tc.indexOf("none") > -1) {
+            paintType = SVGPaint.SVG_PAINTTYPE_NONE;
+          } else if (tc.indexOf("currentColor") > -1) {
+            paintType = SVGPaint.SVG_PAINTTYPE_CURRENTCOLOR;
+            color = style.getPropertyValue("color");
+          } else {
+            if (_urlreg.test(tc)) {                                  //fill属性の値がurl(#id)ならば
+              paintType = SVGPaint.SVG_PAINTTYPE_URI;
+              uri = RegExp.$1;
+            } else {
+              paintType = SVGPaint.SVG_PAINTTYPE_RGBCOLOR;
+              color = tc.substring(tc.indexOf(":")+1, tc.length);
+            }
+          }
+          ti.setPaint(paintType, uri, color, null);
+        }
         return ti;
       }
     }
@@ -670,7 +690,7 @@
       s._list = s._list.concat(elt.ownerDocument.getOverrideStyle(elt)._list); //まず、上書きスタイルシートから処理
       s._list = s._list.concat(elt.style._list);
       s._list = s._list.concat(elt._attributeStyle._list);  //プレゼンテーション属性を結びつける
-      elt = elt.parentNode;     
+      elt = elt.parentNode;
     } while (elt);
     s._list = s._list.concat(CSS2Properties._list);         //デフォルト値の設定
     return s;




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