1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkDisplayEvent_DEFINED
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkDisplayEvent_DEFINED
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDisplayable.h"
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMemberInfo.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkIntArray.h"
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkKey.h"
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkEvent;
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkDisplayEvent : public SkDisplayable {
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_DISPLAY_MEMBER_INFO(Event);
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    enum Kind {
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kNo_kind,
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kKeyChar,
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kKeyPress,
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kKeyPressUp,    //i assume the order here is intended to match with skanimatorscript.cpp
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kMouseDown,
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kMouseDrag,
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kMouseMove,
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kMouseUp,
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kOnEnd,
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kOnload,
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kUser
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    };
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDisplayEvent();
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual ~SkDisplayEvent();
3736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool addChild(SkAnimateMaker& , SkDisplayable* child) override;
3836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool contains(SkDisplayable*) override;
3936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    SkDisplayable* contains(const SkString& ) override;
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUG
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void dumpEvent(SkAnimateMaker* );
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    bool enableEvent(SkAnimateMaker& );
4436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool getProperty(int index, SkScriptValue* ) const override;
4536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void onEndElement(SkAnimateMaker& maker) override;
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void populateInput(SkAnimateMaker& , const SkEvent& fEvent);
4736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool setProperty(int index, SkScriptValue& ) override;
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkKey code;
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool disable;
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    Kind kind;
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkString target;
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar x;
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkScalar y;
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkTDDisplayableArray fChildren;
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    mutable SkString fKeyString;
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkKey fLastCode; // last key to trigger this event
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkKey fMax; // if the code expresses a range
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDisplayable* fTarget; // used by onEnd
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void deleteMembers();
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    friend class SkEvents;
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    typedef SkDisplayable INHERITED;
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif // SkDisplayEvent_DEFINED
67