3 * (c) 2011 K.Ohta <whatisthis.sowhat@gmail.com>
4 * Modified to Common Source code Project, License is changed to GPLv2.
16 //#include <SDL/SDL.h>
17 #if defined(_WINDOWS) || defined(Q_OS_WIN) || defined(Q_OS_CYGWIN)
20 #include <GL/wglext.h>
22 # if !defined(_USE_GLAPI_QT5_4) || !defined(_USE_GLAPI_QT5_1)
24 # include <GL/glxext.h>
33 #include "qt_gldraw.h"
34 #include "qt_glutil_gl2_0.h"
36 #include "csp_logger.h"
39 //extern USING_FLAGS *using_flags;
41 void GLDrawClass::drawGrids(void)
43 if(extfunc != NULL) extfunc->drawGrids();
46 void GLDrawClass::drawUpdateTexture(bitmap_t *p)
48 if(using_flags->get_osd() != NULL) using_flags->get_osd()->screen_mutex->lock();
51 // Will fix at implemenitin PX7.
52 if(using_flags->is_use_one_board_computer() || (using_flags->get_max_button() > 0)) {
53 extfunc->uploadMainTexture(&(p->pImage), true);
55 extfunc->uploadMainTexture(&(p->pImage), false);
59 if(using_flags->get_osd() != NULL) using_flags->get_osd()->screen_mutex->unlock();
62 void GLDrawClass::updateBitmap(QImage *p)
64 if(using_flags->is_use_one_board_computer()) {
65 if(extfunc != NULL) extfunc->updateBitmap(p);
69 void GLDrawClass::resizeGL(int width, int height)
72 extfunc->resizeGL(width, height);
78 //do_set_texture_size(imgptr, screen_texture_width, screen_texture_height);
79 csp_logger->debug_log(CSP_LOG_DEBUG, CSP_LOG_TYPE_GENERAL, "ResizeGL: %dx%d", width , height);
80 emit sig_resize_uibar(width, height);
81 emit sig_resize_osd(width);
86 * "Paint" Event handler
89 void GLDrawClass::paintGL(void)
91 SaveToPixmap(); // If save requested, then Save to Pixmap.
95 extfunc->setVirtualVramSize(vram_width, vram_height);
96 extfunc->resizeGL(draw_width, draw_height);
101 emit sig_draw_timing();
104 void GLDrawClass::do_set_display_osd(bool onoff)
106 emit sig_set_display_osd(onoff);
109 void GLDrawClass::do_display_osd_leds(int lednum, bool onoff)
111 if((lednum >= -1) && (lednum < 32)) {
112 emit sig_display_osd_leds(lednum, onoff);
116 //void GLDrawClass::paintEvent(QPaintEvent *ev)
119 // // http://doc.qt.io/qt-5/qopenglwidget.html#Threading
122 #ifndef GL_MULTISAMPLE
123 #define GL_MULTISAMPLE 0x809D
126 #if defined(_USE_GLAPI_QT5_4)
127 GLDrawClass::GLDrawClass(USING_FLAGS *p, CSP_Logger *logger, QWidget *parent, const QSurfaceFormat &fmt)
128 : QOpenGLWidget(parent, Qt::Widget)
130 GLDrawClass::GLDrawClass(USING_FLAGS *p, CSP_Logger *logger, QWidget *parent, const QGLFormat &fmt)
131 : QGLWidget(fmt, parent)
134 #if defined(_USE_GLAPI_QT5_4)
135 this->setFormat(fmt);
138 save_pixmap_req = false;
143 filename_screen_pixmap.clear();
146 vram_width = using_flags->get_screen_width();
147 vram_height = using_flags->get_screen_height();
148 draw_width = using_flags->get_screen_width();
149 draw_height = using_flags->get_screen_height();
150 delay_update = false;
151 is_mouse_enabled = false;
152 emu_launched = false;
157 GLDrawClass::~GLDrawClass()
159 if(extfunc != NULL) delete extfunc;
160 // this->releaseKeyCode();
165 void GLDrawClass::do_set_led_width(int bitwidth)
167 if(extfunc != NULL) {
168 extfunc->do_set_led_width(bitwidth);
171 void GLDrawClass::set_emu_launched()
174 if(extfunc != NULL) {
175 extfunc->set_emu_launched();
179 QSize GLDrawClass::minimumSizeHint() const
181 return QSize(50, 50);
184 QSize GLDrawClass::sizeHint() const
186 return QSize(400, 400);
189 QSize GLDrawClass::getCanvasSize(void)
191 return QSize(this->width(), this->height());
194 QSize GLDrawClass::getDrawSize(void)
196 return QSize(draw_width, draw_height);
199 void GLDrawClass::do_stop_run_vm()