From 456251861a160ca2b2bf203f743fe7078191dbe9 Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Thu, 18 Mar 2021 22:30:40 -0400 Subject: [PATCH] Added a targeting reticle icon that can be used as a mouse cursor on the main viewport of Qt GUI. Easier to aim with for zapper games emulated by mouse. --- icons/reticle.png | Bin 0 -> 29816 bytes resources.qrc | 1 + src/drivers/Qt/ConsoleVideoConf.cpp | 54 +++-------------- src/drivers/Qt/ConsoleWindow.cpp | 87 +++++++++++++++++++--------- src/drivers/Qt/ConsoleWindow.h | 2 + 5 files changed, 71 insertions(+), 73 deletions(-) create mode 100644 icons/reticle.png diff --git a/icons/reticle.png b/icons/reticle.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ff5fb9487444a45cd5bb061d34371af0f1bdbf GIT binary patch literal 29816 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 K6v}T{KKdUva9O+n literal 0 HcmV?d00001 diff --git a/resources.qrc b/resources.qrc index 58ea0097..c4d384c5 100644 --- a/resources.qrc +++ b/resources.qrc @@ -13,5 +13,6 @@ icons/timer.png icons/movie.png icons/camera.png + icons/reticle.png diff --git a/src/drivers/Qt/ConsoleVideoConf.cpp b/src/drivers/Qt/ConsoleVideoConf.cpp index d984e793..37e8a119 100644 --- a/src/drivers/Qt/ConsoleVideoConf.cpp +++ b/src/drivers/Qt/ConsoleVideoConf.cpp @@ -367,9 +367,11 @@ ConsoleVideoConfDialog_t::ConsoleVideoConfDialog_t(QWidget *parent) grid = new QGridLayout(); cursorSelect = new QComboBox(); - cursorSelect->addItem( tr("Arrow"), 0 ); - cursorSelect->addItem( tr("Cross"), 1 ); - cursorSelect->addItem( tr("Blank"), 2 ); + cursorSelect->addItem( tr("Arrow") , 0 ); + cursorSelect->addItem( tr("Cross") , 1 ); + cursorSelect->addItem( tr("Blank") , 2 ); + cursorSelect->addItem( tr("Reticle 1x"), 3 ); + cursorSelect->addItem( tr("Reticle 2x"), 4 ); setComboBoxFromProperty( cursorSelect, "SDL.CursorType" ); @@ -751,30 +753,15 @@ void ConsoleVideoConfDialog_t::regionChanged(int index) void ConsoleVideoConfDialog_t::cursorShapeChanged(int index) { int cursorSel; - Qt::CursorShape s; //printf("Scaler: %i : %i \n", index, scalerSelect->itemData(index).toInt() ); cursorSel = cursorSelect->itemData(index).toInt(); - switch ( cursorSel ) - { - case 2: - s = Qt::BlankCursor; - break; - case 1: - s = Qt::CrossCursor; - break; - default: - case 0: - s = Qt::ArrowCursor; - cursorSel = 0; - break; - } - consoleWindow->setViewerCursor( s ); - g_config->setOption ("SDL.CursorType", cursorSel); g_config->save (); + + consoleWindow->loadCursor(); } //---------------------------------------------------- void ConsoleVideoConfDialog_t::cursorVisChanged( int value ) @@ -787,32 +774,7 @@ void ConsoleVideoConfDialog_t::cursorVisChanged( int value ) g_config->setOption("SDL.CursorVis", vis ); g_config->save (); - if ( vis ) - { - int opt; - Qt::CursorShape s; - - g_config->getOption("SDL.CursorType", &opt ); - - switch ( opt ) - { - case 2: - s = Qt::BlankCursor; - break; - case 1: - s = Qt::CrossCursor; - break; - default: - case 0: - s = Qt::ArrowCursor; - break; - } - consoleWindow->setViewerCursor( s ); - } - else - { - consoleWindow->setViewerCursor( Qt::BlankCursor ); - } + consoleWindow->loadCursor(); } //---------------------------------------------------- QSize ConsoleVideoConfDialog_t::calcNewScreenSize(void) diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index fe5b3e51..91a509b7 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -90,7 +90,6 @@ consoleWin_t::consoleWin_t(QWidget *parent) int opt, xWinSize = 256, yWinSize = 240; int use_SDL_video = false; int setFullScreen = false; - int cursorVis = true; //QString libpath = QLibraryInfo::location(QLibraryInfo::PluginsPath); //printf("LibPath: '%s'\n", libpath.toStdString().c_str() ); @@ -193,32 +192,7 @@ consoleWin_t::consoleWin_t(QWidget *parent) recentRomMenuReset = false; // Viewport Cursor Type and Visibility - g_config->getOption("SDL.CursorVis", &cursorVis ); - - if ( cursorVis ) - { - int cursorType; - - g_config->getOption("SDL.CursorType", &cursorType ); - - switch ( cursorType ) - { - case 2: - setViewerCursor( Qt::BlankCursor ); - break; - case 1: - setViewerCursor( Qt::CrossCursor ); - break; - default: - case 0: - setViewerCursor( Qt::ArrowCursor ); - break; - } - } - else - { - setViewerCursor( Qt::BlankCursor ); - } + loadCursor(); } consoleWin_t::~consoleWin_t(void) @@ -352,6 +326,65 @@ QSize consoleWin_t::calcRequiredSize(void) return out; } +void consoleWin_t::loadCursor(void) +{ + int cursorVis; + + // Viewport Cursor Type and Visibility + g_config->getOption("SDL.CursorVis", &cursorVis ); + + if ( cursorVis ) + { + int cursorType; + + g_config->getOption("SDL.CursorType", &cursorType ); + + switch ( cursorType ) + { + case 4: + { + QPixmap reticle(":/icons/reticle.png"); + + setViewerCursor( QCursor(reticle.scaled(64,64)) ); + } + break; + case 3: + { + QPixmap reticle(":/icons/reticle.png"); + + setViewerCursor( QCursor(reticle.scaled(32,32)) ); + } + break; + case 2: + setViewerCursor( Qt::BlankCursor ); + break; + case 1: + setViewerCursor( Qt::CrossCursor ); + break; + default: + case 0: + setViewerCursor( Qt::ArrowCursor ); + break; + } + } + else + { + setViewerCursor( Qt::BlankCursor ); + } +} + +void consoleWin_t::setViewerCursor( QCursor s ) +{ + if ( viewport_GL ) + { + viewport_GL->setCursor(s); + } + else if ( viewport_SDL ) + { + viewport_SDL->setCursor(s); + } +} + void consoleWin_t::setViewerCursor( Qt::CursorShape s ) { if ( viewport_GL ) diff --git a/src/drivers/Qt/ConsoleWindow.h b/src/drivers/Qt/ConsoleWindow.h index 26ef4ce7..d9601827 100644 --- a/src/drivers/Qt/ConsoleWindow.h +++ b/src/drivers/Qt/ConsoleWindow.h @@ -119,6 +119,8 @@ class consoleWin_t : public QMainWindow QSize calcRequiredSize(void); + void loadCursor(void); + void setViewerCursor( QCursor s ); void setViewerCursor( Qt::CursorShape s ); Qt::CursorShape getViewerCursor(void); protected: