10910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/* libs/graphics/animator/SkDisplayEvent.h
20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
30910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Copyright 2006, The Android Open Source Project
40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
50910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
60910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** you may not use this file except in compliance with the License.
70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** You may obtain a copy of the License at
80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** See the License for the specific language governing permissions and
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** limitations under the License.
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkDisplayEvent_DEFINED
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkDisplayEvent_DEFINED
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayable.h"
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkMemberInfo.h"
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkIntArray.h"
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkKey.h"
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkEvent;
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayEvent : public SkDisplayable {
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    DECLARE_DISPLAY_MEMBER_INFO(Event);
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    enum Kind {
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kNo_kind,
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kKeyChar,
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kKeyPress,
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kKeyPressUp,    //i assume the order here is intended to match with skanimatorscript.cpp
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kMouseDown,
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kMouseDrag,
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kMouseMove,
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kMouseUp,
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kOnEnd,
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kOnload,
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        kUser
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    };
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayEvent();
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual ~SkDisplayEvent();
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool add(SkAnimateMaker& , SkDisplayable* child);
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool contains(SkDisplayable*);
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual SkDisplayable* contains(const SkString& );
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DEBUG
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void dumpEvent(SkAnimateMaker* );
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    bool enableEvent(SkAnimateMaker& );
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool getProperty(int index, SkScriptValue* ) const;
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void onEndElement(SkAnimateMaker& maker);
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void populateInput(SkAnimateMaker& , const SkEvent& fEvent);
550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool setProperty(int index, SkScriptValue& );
560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected:
570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkKey code;
580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkBool disable;
590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    Kind kind;
600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkString target;
610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkScalar x;
620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkScalar y;
630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkTDDisplayableArray fChildren;
640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    mutable SkString fKeyString;
650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkKey fLastCode; // last key to trigger this event
660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkKey fMax; // if the code expresses a range
670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayable* fTarget; // used by onEnd
680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void deleteMembers();
700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkEvents;
710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    typedef SkDisplayable INHERITED;
720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkDisplayEvent_DEFINED
750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
76