• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* libs/graphics/animator/SkAnimateActive.h
2 **
3 ** Copyright 2006, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 #ifndef SkAnimateActive_DEFINED
19 #define SkAnimateActive_DEFINED
20 
21 #include "SkDisplayApply.h"
22 #include "SkOperandInterpolator.h"
23 #include "SkIntArray.h"
24 
25 class SkAnimateMaker;
26 
27 class SkActive {
28 public:
29     SkActive(SkApply& , SkAnimateMaker& );
30     ~SkActive();
31     void advance();
32     void append(SkApply* );
33     void calcDurations(int index);
34     void create(SkDrawable* scope, SkMSec time);
draw()35     bool draw() { return immediate(false); }
enable()36     bool enable() { return immediate(true); }
37     void init( );
38     SkMSec getTime(SkMSec inTime, int animatorIndex);
39     void pickUp(SkActive* existing);
reset()40     void reset() { fDrawIndex = 0; }
41     void setInterpolator(int index, SkOperand* from);
42     void start();
43 #ifdef SK_DEBUG
44     void validate();
45 #endif
46 private:
47     void appendSave(int oldCount);
48     void fixInterpolator(SkBool save);
49     bool immediate(bool enable);
50     bool initializeSave();
51     void initState(SkApply* , int offset);
52     void resetInterpolators();
53     void resetState();
54     void restoreInterpolatorValues(int index);
55     void saveInterpolatorValues(int index);
56     void setSteps(int steps);
57     struct SkState {
58 //      void bumpSave();
59         SkMSec getRelativeTime(SkMSec time);
60         SkApply::Mode fMode;
61         SkApply::Transition fTransition;
62         SkBool8 fPickup;
63         SkBool8 fRestore;
64         SkBool8 fStarted;
65         SkBool8 fUnpostedEndEvent;
66         int32_t fSteps;
67         SkMSec fBegin;
68         SkMSec fStartTime;
69         SkMSec fDuration;
70         SkMSec fSave;
71         SkMSec fTicks;
72     };
73     SkActive& operator= (const SkActive& );
74     SkTDArray<SkOperandInterpolator*> fInterpolators;
75     SkApply& fApply;
76     SkTDArray<SkState> fState;  // one per animator
77     SkTDOperandPtrArray fSaveRestore;   // if apply has restore="true"
78     SkTDOperandPtrArray fSaveInterpolators;
79     SkTDAnimateArray fAnimators;
80     SkMSec fMaxTime;    // greatest of all animation durations; only used by immediate mode
81     SkAnimateMaker& fMaker;
82     int fDrawIndex;
83     int fDrawMax;
84     friend class SkApply;
85 };
86 
87 #endif // SkAnimateActive_DEFINED
88