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 SkDisplayEvent_DEFINED
11#define SkDisplayEvent_DEFINED
12
13#include "SkDisplayable.h"
14#include "SkMemberInfo.h"
15#include "SkIntArray.h"
16#include "SkKey.h"
17
18class SkEvent;
19
20class SkDisplayEvent : public SkDisplayable {
21    DECLARE_DISPLAY_MEMBER_INFO(Event);
22    enum Kind {
23        kNo_kind,
24        kKeyChar,
25        kKeyPress,
26        kKeyPressUp,    //i assume the order here is intended to match with skanimatorscript.cpp
27        kMouseDown,
28        kMouseDrag,
29        kMouseMove,
30        kMouseUp,
31        kOnEnd,
32        kOnload,
33        kUser
34    };
35    SkDisplayEvent();
36    virtual ~SkDisplayEvent();
37    virtual bool add(SkAnimateMaker& , SkDisplayable* child);
38    virtual bool contains(SkDisplayable*);
39    virtual SkDisplayable* contains(const SkString& );
40#ifdef SK_DEBUG
41    void dumpEvent(SkAnimateMaker* );
42#endif
43    bool enableEvent(SkAnimateMaker& );
44    virtual bool getProperty(int index, SkScriptValue* ) const;
45    virtual void onEndElement(SkAnimateMaker& maker);
46    void populateInput(SkAnimateMaker& , const SkEvent& fEvent);
47    virtual bool setProperty(int index, SkScriptValue& );
48protected:
49    SkKey code;
50    SkBool disable;
51    Kind kind;
52    SkString target;
53    SkScalar x;
54    SkScalar y;
55    SkTDDisplayableArray fChildren;
56    mutable SkString fKeyString;
57    SkKey fLastCode; // last key to trigger this event
58    SkKey fMax; // if the code expresses a range
59    SkDisplayable* fTarget; // used by onEnd
60private:
61    void deleteMembers();
62    friend class SkEvents;
63    typedef SkDisplayable INHERITED;
64};
65
66#endif // SkDisplayEvent_DEFINED
67
68