gfx/skia/trunk/src/animator/SkAnimateMaker.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gfx/skia/trunk/src/animator/SkAnimateMaker.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,160 @@
     1.4 +
     1.5 +/*
     1.6 + * Copyright 2006 The Android Open Source Project
     1.7 + *
     1.8 + * Use of this source code is governed by a BSD-style license that can be
     1.9 + * found in the LICENSE file.
    1.10 + */
    1.11 +
    1.12 +
    1.13 +#ifndef SkAnimateMaker_DEFINED
    1.14 +#define SkAnimateMaker_DEFINED
    1.15 +
    1.16 +// #define SK_DEBUG_ANIMATION_TIMING
    1.17 +
    1.18 +#include "SkAnimator.h"
    1.19 +#include "SkBitmap.h"
    1.20 +#include "SkIntArray.h"
    1.21 +#include "SkDisplayEvents.h"
    1.22 +#include "SkDisplayList.h"
    1.23 +#include "SkDisplayScreenplay.h"
    1.24 +#include "SkDisplayXMLParser.h"
    1.25 +#include "SkScript.h"
    1.26 +#include "SkString.h"
    1.27 +#include "SkTDict.h"
    1.28 +
    1.29 +// not sure where this little helper macro should go
    1.30 +
    1.31 +
    1.32 +class SkActive;
    1.33 +class SkAnimate;
    1.34 +class SkCanvas;
    1.35 +class SkDisplayable;
    1.36 +class SkDrawable;
    1.37 +class SkDump;
    1.38 +class SkEvent;
    1.39 +class SkEventSink;
    1.40 +class SkExtras;
    1.41 +class SkGroup;
    1.42 +class SkPaint;
    1.43 +class SkStream;
    1.44 +
    1.45 +class SkAnimateMaker {
    1.46 +public:
    1.47 +    SkAnimateMaker(SkAnimator* animator, SkCanvas* canvas, SkPaint* paint);
    1.48 +    ~SkAnimateMaker();
    1.49 +    void appendActive(SkActive* );
    1.50 +    void childrenAdd(SkDisplayable* child) { *fChildren.append() = child; }
    1.51 +    void clearExtraPropertyCallBack(SkDisplayTypes type);
    1.52 +    bool computeID(SkDisplayable* displayable, SkDisplayable* parent, SkString* newID);
    1.53 +    SkDisplayable* createInstance(const char name[], size_t len);
    1.54 +    bool decodeStream(SkStream* stream);
    1.55 +    bool decodeURI(const char uri[]);
    1.56 +    void delayEnable(SkApply* apply, SkMSec time);
    1.57 +    void doDelayedEvent();
    1.58 +    bool doEvent(const SkEvent& event);
    1.59 +#ifdef SK_DUMP_ENABLED
    1.60 +    void dump(const char* match);
    1.61 +#endif
    1.62 +    int dynamicProperty(SkString& nameStr, SkDisplayable**  );
    1.63 +    bool find(const char* str, SkDisplayable** displayablePtr) const {
    1.64 +        return fIDs.find(str, displayablePtr);
    1.65 +    }
    1.66 +    bool find(const char* str, size_t len, SkDisplayable** displayablePtr) const {
    1.67 +        return fIDs.find(str, len, displayablePtr);
    1.68 +    }
    1.69 +    bool findKey(SkDisplayable* displayable, const char** string) const {
    1.70 +        return fIDs.findKey(displayable, string);
    1.71 +    }
    1.72 +//  bool find(SkString& string, SkDisplayable** displayablePtr) {
    1.73 +//      return fIDs.find(string.c_str(), displayablePtr);
    1.74 +//  }
    1.75 +    SkAnimator* getAnimator() { return fAnimator; }
    1.76 +    SkMSec getAppTime() const; // call caller to get current time
    1.77 +#ifdef SK_DEBUG
    1.78 +    SkAnimator* getRoot();
    1.79 +#endif
    1.80 +    SkXMLParserError::ErrorCode getErrorCode() const { return fError.getErrorCode(); }
    1.81 +    SkMSec getInTime() { return fDisplayList.getTime(); }
    1.82 +    int getNativeCode() const { return fError.getNativeCode(); }
    1.83 +    bool hasError() { return fError.hasError(); }
    1.84 +    void helperAdd(SkDisplayable* trackMe);
    1.85 +    void helperRemove(SkDisplayable* alreadyTracked);
    1.86 +    void idsSet(const char* attrValue, size_t len, SkDisplayable* displayable) {
    1.87 +        fIDs.set(attrValue, len, displayable); }
    1.88 +//  void loadMovies();
    1.89 +    void notifyInval();
    1.90 +    void notifyInvalTime(SkMSec time);
    1.91 +    void postOnEnd(SkAnimateBase* animate, SkMSec end);
    1.92 +    void removeActive(SkActive* );
    1.93 +    void reset();
    1.94 +    bool resolveID(SkDisplayable* displayable, SkDisplayable* original);
    1.95 +    void setEnableTime(SkMSec appTime, SkMSec expectedTime);
    1.96 +    void setErrorCode(SkXMLParserError::ErrorCode err) { if (fError.hasError() == false) fError.INHERITED::setCode(err); }
    1.97 +    void setErrorCode(SkDisplayXMLParserError::ErrorCode err) { if (fError.hasError() == false) fError.setCode(err); }
    1.98 +    void setErrorNoun(const SkString& str) { if (fError.hasError() == false) fError.setNoun(str); }
    1.99 +    void setErrorString();
   1.100 +    void setExtraPropertyCallBack(SkDisplayTypes type, SkScriptEngine::_propertyCallBack , void* userStorage);
   1.101 +    void setID(SkDisplayable* displayable, const SkString& newID);
   1.102 +    void setInnerError(SkAnimateMaker* maker, const SkString& str) { fError.setInnerError(maker, str); }
   1.103 +    void setScriptError(const SkScriptEngine& );
   1.104 +#ifdef SK_DEBUG
   1.105 +    void validate() { fDisplayList.validate(); }
   1.106 +#else
   1.107 +    void validate() {}
   1.108 +#endif
   1.109 +    SkDisplayEvent* fActiveEvent;
   1.110 +    SkMSec fAdjustedStart;
   1.111 +    SkCanvas* fCanvas;
   1.112 +    SkMSec fEnableTime;
   1.113 +    int fEndDepth;  // passed parameter to onEndElement
   1.114 +    SkEvents fEvents;
   1.115 +    SkDisplayList fDisplayList;
   1.116 +    SkEventSinkID fHostEventSinkID;
   1.117 +    SkMSec fMinimumInterval;
   1.118 +    SkPaint* fPaint;
   1.119 +    SkAnimateMaker* fParentMaker;
   1.120 +    SkString fPrefix;
   1.121 +    SkDisplayScreenplay fScreenplay;
   1.122 +    const SkAnimator::Timeline* fTimeline;
   1.123 +    SkBool8 fInInclude;
   1.124 +    SkBool8 fInMovie;
   1.125 +    SkBool8 fFirstScriptError;
   1.126 +#if defined SK_DEBUG && defined SK_DEBUG_ANIMATION_TIMING
   1.127 +    SkMSec fDebugTimeBase;
   1.128 +#endif
   1.129 +#ifdef SK_DUMP_ENABLED
   1.130 +    SkString fDumpAnimated;
   1.131 +    SkBool8 fDumpEvents;
   1.132 +    SkBool8 fDumpGConditions;
   1.133 +    SkBool8 fDumpPosts;
   1.134 +#endif
   1.135 +private:
   1.136 +    void deleteMembers();
   1.137 +    static bool GetStep(const char* token, size_t len, void* stepPtr, SkScriptValue* );
   1.138 +    SkAnimateMaker& operator=(SkAnimateMaker& );
   1.139 +    SkTDDisplayableArray fChildren;
   1.140 +    SkTDDisplayableArray fDelayed; // SkApply that contain delayed enable events
   1.141 +    SkDisplayXMLParserError fError;
   1.142 +    SkString fErrorString;
   1.143 +    SkTDArray<SkExtras*> fExtras;
   1.144 +    SkString fFileName;
   1.145 +    SkTDDisplayableArray fHelpers;  // helper displayables
   1.146 +    SkBool8 fLoaded;
   1.147 +    SkTDDisplayableArray fMovies;
   1.148 +    SkTDict<SkDisplayable*> fIDs;
   1.149 +    SkAnimator* fAnimator;
   1.150 +    friend class SkAdd;
   1.151 +    friend class SkAnimateBase;
   1.152 +    friend class SkDisplayXMLParser;
   1.153 +    friend class SkAnimator;
   1.154 +    friend class SkAnimatorScript;
   1.155 +    friend class SkApply;
   1.156 +    friend class SkDisplayMovie;
   1.157 +    friend class SkDisplayType;
   1.158 +    friend class SkEvents;
   1.159 +    friend class SkGroup;
   1.160 +    friend struct SkMemberInfo;
   1.161 +};
   1.162 +
   1.163 +#endif // SkAnimateMaker_DEFINED

mercurial