⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skl_event.h

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 H
字号:
/********************************************************
 * Some code. Copyright (C) 2003 by Pascal Massimino.   *
 * All Rights Reserved.      (http://skal.planet-d.net) *
 * For Educational/Academic use ONLY. See 'LICENSE.TXT'.*
 ********************************************************/
/*
 * skl_event.h
 *
 * base class for event queue
 ********************************************************/

#ifndef _SKL_EVENT_H_
#define _SKL_EVENT_H_

#include "skl.h"
#include "skl_2d/skl_pt.h"

//////////////////////////////////////////////////////////
// SKL_EVENT
//////////////////////////////////////////////////////////

class SKL_EVENT
{
    SKL_DEL_OP(SKL_EVENT)

  public:

    typedef int (*EVENT_HANDLER)(SKL_EVENT *);

    typedef enum {
      NO_EVENT   = 0x00,
      CLICK1     = 0x01,
      CLICK2     = 0x02,
      CLICK3     = 0x04,
      MOVE       = 0x08,
      RELEASE1   = 0x10,
      RELEASE2   = 0x20,
      RELEASE3   = 0x40,
      KEY_PRESS  = 0x80,
      CLICK      = (0x01|0x02|0x04),
      RELEASE    = (0x10|0x20|0x40),
      HAS_DATA   = 0x100
    } EVENT_TYPE;

    typedef enum {
      NO_MODIFIER    = 0x00,
      ALT_MODIFIER   = 0x01,
      CTRL_MODIFIER  = 0x02,
      SHIFT_MODIFIER = 0x04,
      UP_MODIFIER    = 0x08,
      DOWN_MODIFIER  = 0x10,
      LEFT_MODIFIER  = 0x20,
      RIGHT_MODIFIER = 0x40
    } MODIFIER;

    typedef enum {
      ESCAPE=0xff,
      F1=0xfe, F2=0xfd, F3=0xfc, F4=0xfb,
      F5=0xfa, F6=0xf9, F7=0xf8, F8=0xf7,
      F9=0xf6,F10=0xf5,F11=0xf4,F12=0xf3
    } SPECIAL_KEYS;

  protected:

    int       _Type;
    int       _Key, _Modifier;
    SKL_2D_PT _Pos;
    SKL_ANY   _Data;

  public:

    SKL_EVENT() : _Type(NO_EVENT), _Modifier(NO_MODIFIER) {}
    ~SKL_EVENT() {}

    void Reset()                             { _Type=NO_EVENT; _Modifier=0; _Key=0; }

    int Get_Type() const                     { return _Type; }
    int Has_Type(EVENT_TYPE Type) const      { return ((_Type&Type)!=0); }
    int Is_Empty() const                     { return (_Type==NO_EVENT); }
    void Set_Type(EVENT_TYPE Type)           { _Type = Type; }
    void Add_Type(EVENT_TYPE Type)           { _Type |= Type; }
    void Add_Types(int Types)                { _Type |= Types; }
    void Remove_Type(EVENT_TYPE Type)        { _Type &= ~Type; }

    void Set_Data( SKL_ANY Data )            { Add_Type(HAS_DATA); _Data = Data; }
    SKL_ANY Get_Data() const                 { return _Data; }

    void Set_Key(int Key)                    { Add_Type(KEY_PRESS); _Key = Key; }
    int Get_Key() const                      { return _Key; }

    void Add_Modifier(int Modifier)          { _Modifier |= Modifier; }
    int Get_Modifier() const                 { return _Modifier; }
    int Is_Modified_By(int Modifier) const   { return ((_Modifier&Modifier)!=0); }

    void Set_Position(int x, int y)          { _Pos = SKL_2D_PT(x,y); } /* no Type set here.. */
    SKL_2D_PT Get_Position() const           { return _Pos; }
    SKL_2D_PT &Get_Position()                { return _Pos; }
    void Get_Position(int &x, int &y) const  { x = _Pos.x; y = _Pos.y; }
    int Get_x() const                        { return _Pos.x; }
    int Get_y() const                        { return _Pos.y; }
};

//////////////////////////////////////////////////////////

#endif  /* _SKL_EVENT_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -