OSDN Git Service

Support a underlying property of the object
authordhrname <dhrname@users.sourceforge.jp>
Fri, 3 Apr 2015 13:49:50 +0000 (22:49 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Fri, 3 Apr 2015 13:49:50 +0000 (22:49 +0900)
org/w3c/dom/smil.js
tool/Spec/spec/SvgDomSpec.js

index f25ad5f..fc54360 100644 (file)
@@ -469,6 +469,17 @@ base("$from").of( {
   \r
   /*$toオブジェクトにこのオブジェクトを適用させる関数*/\r
   call: function() {\r
+    if (this.numList) {\r
+      var additive = [],\r
+          accumlate = [],\r
+          tu = this.underlying;\r
+      for (var i=0;i<this.numList.length;++i) {\r
+        /*0で配列を初期化しておく*/\r
+        additive[i] = accumlate[i] = 0;\r
+      }\r
+      tu.additive = additive;\r
+      tu.accumlate = accumlate;\r
+    }\r
     /*文字部分の配置パターンは4通りあるので、ここでstrListを処理\r
      * (1) a 0 の場合\r
      * (2) 0 a\r
@@ -496,6 +507,12 @@ base("$from").of( {
    /*advanceメソッドで使われる有効数字の桁数 (小数点の桁数を決めるときに使う)*/\r
    degit: 0,\r
    \r
+   /*additve属性やaccumlate属性が設定された、累積アニメーションか、加法アニメーションで使われる*/\r
+   underlying: {\r
+     additive: [0],\r
+     accumlate: [0]\r
+   },\r
+   \r
    /*advance メソッド\r
     * アニメーションの進行具合を示す進捗率 t (0 <= t <= 1)をもとに、現在の呈示値を算出するためのもの\r
     * callメソッドが前もって呼び出されていることが前提となる*/\r
@@ -510,11 +527,12 @@ base("$from").of( {
           numList = this.numList,\r
           strList = this.strList,\r
           fromNumList = this.from,\r
-          deg = this.degit;\r
+          deg = this.degit,\r
+          underlying = this.underlying;\r
       \r
       for (var i=0,nuli=numList.length;i<nuli;++i) {\r
         /*$fromと$toを、原点Oからの二つのベクトル (n次空間のベクトル)と考える*/\r
-        str += ( t * numList[i] + (1 - t) * fromNumList[i] ).toFixed(deg);\r
+        str += ( t * numList[i] + (1 - t) * fromNumList[i] + underlying.additive[i] + underlying.accumlate[i]).toFixed(deg);\r
         strList && ( str += strList[i+1] );\r
       }\r
       /*文字列はcallメソッドにより、a0aのパターンになっているので、aの部分を追加*/\r
index 330cf28..bcc14a8 100644 (file)
@@ -2840,6 +2840,9 @@ describe("SMIL Animation Spec", function() {
       expect( function() {\r
         from.strList();\r
       } ).toThrow();\r
+      \r
+      expect(from.underlying.additive[0]).toEqual(0);\r
+      expect(from.underlying.accumlate[0]).toEqual(0);\r
     } );\r
     /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
     it("should be this for the value (the valid partion)", function() {\r