[Sie-announce] SIEコード [2523] getFloatValueメソッドについて、軽量化

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 3月 28日 (月) 23:27:05 JST


Revision: 2523
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2523
Author:   dhrname
Date:     2011-03-28 23:27:05 +0900 (Mon, 28 Mar 2011)

Log Message:
-----------
getFloatValueメソッドについて、軽量化

Modified Paths:
--------------
    branches/07x/074/org/w3c/dom/css.js

Modified: branches/07x/074/org/w3c/dom/css.js
===================================================================
--- branches/07x/074/org/w3c/dom/css.js	2011-03-28 14:04:14 UTC (rev 2522)
+++ branches/07x/074/org/w3c/dom/css.js	2011-03-28 14:27:05 UTC (rev 2523)
@@ -393,7 +393,7 @@
 CSSPrimitiveValue.prototype._percent = 0; //単位に%が使われていた場合、このプロパティの数値を1%として使う
 CSSPrimitiveValue.prototype._empercent = 0;
 /*void*/ CSSPrimitiveValue.prototype.setFloatValue = function(/*short*/ unitType, /*float*/ floatValue) {
-  if (CSSPrimitiveValue.CSS_UNKNOWN >= unitType && unitType >= CSSPrimitiveValue.CSS_STRING) { //浮動小数点数単位型をサポートしないCSS単位である場合
+  if ((/*CSSPrimitiveValue.CSS_UNKNOWN*/ 0 >= unitType) && (unitType >= /*CSSPrimitiveValue.CSS_STRING*/ 19)) { //浮動小数点数単位型をサポートしないCSS単位である場合
     throw new DOMException(DOMException.INVALID_ACCESS_ERR);
   }
   this.primitiveType = unitType;
@@ -403,40 +403,41 @@
  *別の単位に変換可能。
  */
 /*float*/ CSSPrimitiveValue.prototype.getFloatValue = function(/*short*/ unitType) {
-  if (CSSPrimitiveValue.CSS_UNKNOWN >= unitType && unitType >= CSSPrimitiveValue.CSS_STRING) { //浮動小数点数単位型をサポートしないCSS単位である場合
+  if ((/*CSSPrimitiveValue.CSS_UNKNOWN*/ 0 >= unitType) && (unitType >= /*CSSPrimitiveValue.CSS_STRING*/ 19)) { //浮動小数点数単位型をサポートしないCSS単位である場合
     throw new DOMException(DOMException.INVALID_ACCESS_ERR);
   }
-  var n = this.cssText.match(/\D+$/), type = 0, _parseFloat = parseFloat;
-  var s = _parseFloat(this.cssText.match(/[\d\.]+/));
+  var n = this.cssText.match(/\D+$/),
+      type = 0,
+      s = +(this.cssText.match(/[\d\.]+/));
   s = isNaN(s) ? 0 : s;
   if (!!n) {
     n = n[0];
   }
   if (!n) {
-    type = CSSPrimitiveValue.CSS_NUMBER;
+    type = /*CSSPrimitiveValue.CSS_NUMBER*/ 1;
   } else if (n === "%") {
     s *= this._percent;
-    type = CSSPrimitiveValue.CSS_PERCENTAGE;
+    type = /*CSSPrimitiveValue.CSS_PERCENTAGE*/ 2;
   } else if (n === "em") {
     s *= this._empercent;
-    type = CSSPrimitiveValue.CSS_EMS;
+    type = /*CSSPrimitiveValue.CSS_EMS*/ 3;
   } else if (n === "ex") {
-    type = CSSPrimitiveValue.CSS_EXS;
+    type = /*CSSPrimitiveValue.CSS_EXS*/ 4;
   } else if (n === "px") {
-    type = CSSPrimitiveValue.CSS_PX;
+    type = /*CSSPrimitiveValue.CSS_PX*/ 5;
   } else if (n === "cm") {
-    type = CSSPrimitiveValue.CSS_CM;
+    type = /*CSSPrimitiveValue.CSS_CM*/ 6;
   } else if (n === "mm") {
-    type = CSSPrimitiveValue.CSS_MM;
+    type = /*CSSPrimitiveValue.CSS_MM*/ 7;
   } else if (n === "in") {
-    type = CSSPrimitiveValue.CSS_IN;
+    type = /*CSSPrimitiveValue.CSS_IN*/ 8;
   } else if (n === "pt") {
-    type = CSSPrimitiveValue.CSS_PT;
+    type = /*CSSPrimitiveValue.CSS_PT*/ 9;
   } else if (n === "pc") {
-    type = CSSPrimitiveValue.CSS_PC;
+    type = /*CSSPrimitiveValue.CSS_PC*/ 10;
   }
-  this.setFloatValue(type, s);
-  return (this._value / this._n[unitType-1]);
+  this._value = s * this._n[unitType-1];  //値はあらかじめ、利用しやすいように変換しておく
+  return (this._value);
 };
 /*void*/ CSSPrimitiveValue.prototype.setStringValue = function(/*short*/ stringType, /*string*/ stringValue) {
   if (CSSPrimitiveValue.CSS_DIMENSION >= stringType && stringType >= CSSPrimitiveValue.CSS_COUNTER) { //文字列型をサポートしないCSS単位である場合




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