• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  
2  /*
3   * Copyright 2006 The Android Open Source Project
4   *
5   * Use of this source code is governed by a BSD-style license that can be
6   * found in the LICENSE file.
7   */
8  
9  
10  #ifndef SkAnimateBase_DEFINED
11  #define SkAnimateBase_DEFINED
12  
13  #include "SkDisplayable.h"
14  #include "SkMath.h"
15  #include "SkMemberInfo.h"
16  #include "SkTypedArray.h"
17  
18  class SkApply;
19  class SkADrawable;
20  
21  class SkAnimateBase : public SkDisplayable {
22  public:
23      DECLARE_MEMBER_INFO(AnimateBase);
24      SkAnimateBase();
25      virtual ~SkAnimateBase();
26      virtual int components();
27      SkDisplayable* deepCopy(SkAnimateMaker* ) override;
28      void dirty() override;
29  #ifdef SK_DUMP_ENABLED
30      void dump(SkAnimateMaker* ) override;
31  #endif
entries()32      int entries() { return fValues.count() / components(); }
33      virtual bool hasExecute() const;
isDynamic()34      bool isDynamic() const { return SkToBool(fDynamic); }
35      SkDisplayable* getParent() const override;
36      bool getProperty(int index, SkScriptValue* value) const override;
getStart()37      SkMSec getStart() const { return fStart; }
getValues()38      SkOperand* getValues() { return fValues.begin(); }
getValuesType()39      SkDisplayTypes getValuesType() { return fValues.getType(); }
40      void onEndElement(SkAnimateMaker& ) override;
41      void packARGB(SkScalar [], int count, SkTDOperandArray* );
42      virtual void refresh(SkAnimateMaker& );
setChanged(bool changed)43      void setChanged(bool changed) { fChanged = changed; }
setHasEndEvent()44      void setHasEndEvent() { fHasEndEvent = true; }
45      bool setParent(SkDisplayable* ) override;
46      bool setProperty(int index, SkScriptValue& value) override;
47      void setTarget(SkAnimateMaker& );
48      virtual bool targetNeedsInitialization() const;
49  protected:
50      SkMSec begin;
51      SkTDScalarArray blend;
52      SkMSec dur;
53      // !!! make field part of a union with fFieldInfo, or fValues, something known later?
54      SkString field; // temporary; once target is known, this is reset
55      SkString formula;
56      SkString from;
57      SkString lval;
58      SkScalar repeat;
59      SkString target;    // temporary; once target is known, this is reset
60      SkString to;
61      SkApply* fApply;
62      const SkMemberInfo* fFieldInfo;
63      int fFieldOffset;
64      SkMSec fStart;  // corrected time when this apply was enabled
65      SkADrawable* fTarget;
66      SkTypedArray fValues;
67      unsigned fChanged : 1; // true when value referenced by script has changed
68      unsigned fDelayed : 1;  // enabled, but undrawn pending delay
69      unsigned fDynamic : 1;
70      unsigned fHasEndEvent : 1;
71      unsigned fHasValues : 1;        // set if 'values' passed instead of 'to'
72      unsigned fMirror : 1;
73      unsigned fReset : 1;
74      unsigned fResetPending : 1;
75      unsigned fTargetIsScope : 1;
76  private:
77      typedef SkDisplayable INHERITED;
78      friend class SkActive;
79      friend class SkApply;
80      friend class SkDisplayList;
81  };
82  
83  #endif // SkAnimateBase_DEFINED
84