00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#ifndef UXDISPLAY_HPP
00029
#define UXDISPLAY_HPP
00030
00031
#include "../uabstractdisplay.hpp"
00032
00033
namespace ufo {
00034
00035
class UVideoDriver;
00036
class UXContext;
00037
class UXFrame;
00038
00053 class UFO_EXPORT UXDisplay :
public UAbstractDisplay {
00054 UFO_DECLARE_DYNAMIC_CLASS(UXDisplay)
00055
public:
00056
friend class UXContext;
00057
public:
00062 UXDisplay(
const std::string & videoDriver =
"");
00063
virtual ~UXDisplay();
00064
00065
public:
00069
virtual bool isValid()
const;
00074
virtual UVideoDriver * getVideoDriver()
const;
00075
00082
virtual UXFrame * createFrame();
00083
00085
virtual std::vector<UXFrame*> getFrames()
const;
00086
00087
public:
00088
virtual void pumpEvents();
00089
virtual std::vector<UContext*> getContexts()
const;
00090
00091
public:
00097
virtual void setModState(UMod_t modifiers);
00104
virtual void pushMouseButtonDown(
UContext * context,
00105
int x,
int y, UMod_t button);
00112
virtual void pushMouseButtonUp(
UContext * context,
00113
int x,
int y, UMod_t button);
00121
virtual void pushMouseWheelDown(
UContext * context,
00122
int x,
int y,
int delta = -120,
int mouseWheelNum = 0);
00130
virtual void pushMouseWheelUp(
UContext * context,
00131
int x,
int y,
int delta = 120,
int mouseWheelNum = 0);
00137
virtual void pushMouseMove(
UContext * context,
00138
int x,
int y);
00144
virtual void pushKeyDown(
UContext * context,
00145 UKeyCode_t keyCode,
wchar_t keyChar);
00151
virtual void pushKeyUp(
UContext * context,
00152 UKeyCode_t keyCode,
wchar_t keyChar);
00153
00155 void pushMouseButtonDown(
UContext * context, UMod_t modifiers,
00156
int x,
int y, UMod_t button) {
00157 pushMouseButtonDown(context, x, y, button);
00158 }
00159
void pushMouseButtonUp(
UContext * context, UMod_t modifiers,
00160
int x,
int y, UMod_t button) {
00161 pushMouseButtonUp(context, x, y, button);
00162 }
00163
void pushMouseWheelDown(UContext * context, UMod_t modifiers,
00164
int x,
int y,
int delta = -120,
int mouseWheelNum = 0) {
00165 pushMouseWheelDown(context, x, y, delta, mouseWheelNum);
00166 }
00167
void pushMouseWheelUp(UContext * context, UMod_t modifiers,
00168
int x,
int y,
int delta = 120,
int mouseWheelNum = 0) {
00169 pushMouseWheelUp(context, x, y, delta, mouseWheelNum);
00170 }
00171
void pushMouseMove(UContext * context, UMod_t modifiers,
00172
int x,
int y) {
00173 pushMouseMove(context, x, y);
00174 }
00175
void pushKeyDown(UContext * context, UMod_t modifiers,
00176 UKeyCode_t keyCode,
wchar_t keyChar) {
00177 pushKeyDown(context, keyCode, keyChar);
00178 }
00179
void pushKeyUp(UContext * context, UMod_t modifiers,
00180 UKeyCode_t keyCode,
wchar_t keyChar) {
00181 pushKeyUp(context, keyCode, keyChar);
00182 }
00183
public:
00188
virtual bool dispatchMouseButtonDown(UContext * context,
00189
int x,
int y, UMod_t button);
00194
virtual bool dispatchMouseButtonUp(UContext * context,
00195
int x,
int y, UMod_t button);
00200
virtual bool dispatchMouseWheelDown(UContext * context,
00201
int x,
int y,
int delta = -120,
int mouseWheelNum = 0);
00205
virtual bool dispatchMouseWheelUp(UContext * context,
00206
int x,
int y,
int delta = 120,
int mouseWheelNum = 0);
00211
virtual bool dispatchMouseMove(UContext * context,
00212
int x,
int y);
00217
virtual bool dispatchKeyDown(UContext * context,
00218 UKeyCode_t keyCode,
wchar_t keyChar);
00223
virtual bool dispatchKeyUp(UContext * context,
00224 UKeyCode_t keyCode,
wchar_t keyChar);
00225
00226
protected:
00228
void registerContext(UXContext * context);
00229
void unregisterContext(UXContext * context);
00230
00231
virtual bool mouseButtonDown(UContext * context,
00232
int x,
int y, UMod_t button,
bool push =
true);
00233
virtual bool mouseButtonUp(UContext * context,
00234
int x,
int y, UMod_t button,
bool push =
true);
00235
virtual bool mouseWheelDown(UContext * context,
00236
int x,
int y,
int delta = -120,
int mouseWheelNum = 0,
bool push =
true);
00237
virtual bool mouseWheelUp(UContext * context,
00238
int x,
int y,
int delta = 120,
int mouseWheelNum = 0,
bool push =
true);
00239
virtual bool mouseMove(UContext * context,
00240
int x,
int y,
bool push =
true);
00241
virtual bool keyDown(UContext * context,
00242 UKeyCode_t keyCode,
wchar_t keyChar,
bool push =
true);
00243
virtual bool keyUp(UContext * context,
00244 UKeyCode_t keyCode,
wchar_t keyChar,
bool push =
true);
00245
00246
private:
00247 UVideoDriver * m_videoDriver;
00248 std::vector<UXFrame*> m_frames;
00249 std::vector<UContext*> m_contexts;
00250 UPoint m_lastMousePressPos;
00251 uint32_t m_lastMousePressTime;
00252 uint32_t m_clickDelay;
00253 uint32_t m_clickCount;
00254 UPoint m_mousePos;
00255 };
00256
00257 }
00258
00259
#endif // UXDISPLAY_HPP