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;