2013-01-14 00:29:42 +01:00
|
|
|
#include "qtemugl.h"
|
|
|
|
|
2013-04-20 00:11:07 +02:00
|
|
|
#include <QMouseEvent>
|
|
|
|
|
2013-04-18 17:40:30 +02:00
|
|
|
#include "base/display.h"
|
|
|
|
#include "base/timeutil.h"
|
|
|
|
|
2013-01-14 00:29:42 +01:00
|
|
|
QtEmuGL::QtEmuGL(QWidget *parent) :
|
2013-04-18 17:40:30 +02:00
|
|
|
QGLWidget(parent)
|
2013-01-14 00:29:42 +01:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void QtEmuGL::init(InputState *inputState)
|
|
|
|
{
|
2013-04-18 17:40:30 +02:00
|
|
|
input_state = inputState;
|
2013-01-14 00:29:42 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
void QtEmuGL::initializeGL()
|
|
|
|
{
|
2013-04-18 17:40:30 +02:00
|
|
|
#ifndef USING_GLES2
|
|
|
|
glewInit();
|
|
|
|
#endif
|
|
|
|
NativeInitGraphics();
|
2013-01-14 00:29:42 +01:00
|
|
|
}
|
|
|
|
void QtEmuGL::paintGL()
|
|
|
|
{
|
2013-04-18 17:40:30 +02:00
|
|
|
NativeUpdate(*input_state);
|
|
|
|
NativeRender();
|
|
|
|
EndInputState(input_state);
|
2013-02-05 22:22:14 +01:00
|
|
|
|
2013-04-18 17:40:30 +02:00
|
|
|
time_update();
|
2013-01-14 00:29:42 +01:00
|
|
|
}
|
2013-02-10 16:36:06 +01:00
|
|
|
|
|
|
|
void QtEmuGL::mouseDoubleClickEvent(QMouseEvent *)
|
|
|
|
{
|
|
|
|
emit doubleClick();
|
|
|
|
}
|
2013-04-20 00:11:07 +02:00
|
|
|
|
|
|
|
void QtEmuGL::mousePressEvent(QMouseEvent *e)
|
|
|
|
{
|
2013-07-25 14:29:12 +10:00
|
|
|
TouchInput input;
|
2013-04-20 00:11:07 +02:00
|
|
|
input_state->pointer_down[0] = true;
|
|
|
|
input_state->pointer_x[0] = e->x();
|
|
|
|
input_state->pointer_y[0] = e->y();
|
2013-07-25 14:29:12 +10:00
|
|
|
|
|
|
|
input.x = e->x();
|
|
|
|
input.y = e->y();
|
|
|
|
input.flags = TOUCH_DOWN;
|
|
|
|
input.id = 0;
|
|
|
|
NativeTouch(input);
|
2013-04-20 00:11:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void QtEmuGL::mouseReleaseEvent(QMouseEvent *e)
|
|
|
|
{
|
2013-07-25 14:29:12 +10:00
|
|
|
TouchInput input;
|
2013-04-20 00:11:07 +02:00
|
|
|
input_state->pointer_down[0] = false;
|
2013-07-25 14:29:12 +10:00
|
|
|
|
|
|
|
input.x = e->x();
|
|
|
|
input.y = e->y();
|
|
|
|
input.flags = TOUCH_UP;
|
|
|
|
input.id = 0;
|
|
|
|
NativeTouch(input);
|
2013-04-20 00:11:07 +02:00
|
|
|
}
|
2013-08-25 22:18:23 +02:00
|
|
|
|
|
|
|
void QtEmuGL::mouseMoveEvent(QMouseEvent *e)
|
|
|
|
{
|
|
|
|
TouchInput input;
|
|
|
|
input.x = e->x();
|
|
|
|
input.y = e->y();
|
|
|
|
input.flags = TOUCH_MOVE;
|
|
|
|
input.id = 0;
|
|
|
|
NativeTouch(input);
|
|
|
|
}
|
|
|
|
|
|
|
|
void QtEmuGL::wheelEvent(QWheelEvent *e)
|
|
|
|
{
|
|
|
|
KeyInput key;
|
|
|
|
key.deviceId = DEVICE_ID_MOUSE;
|
|
|
|
key.keyCode = e->delta()<0 ? NKCODE_EXT_MOUSEWHEEL_DOWN : NKCODE_EXT_MOUSEWHEEL_UP;
|
|
|
|
key.flags = KEY_DOWN;
|
|
|
|
NativeKey(key);
|
|
|
|
}
|