Added current window and viewport size readouts to Qt video config window.

This commit is contained in:
mjbudd77 2021-02-23 22:22:03 -05:00
parent dda6cb33bb
commit 2f83d11baa
5 changed files with 82 additions and 12 deletions

View File

@ -266,7 +266,6 @@ ConsoleVideoConfDialog_t::ConsoleVideoConfDialog_t(QWidget *parent)
main_hbox->addLayout( vbox2 );
vbox2->addWidget( gbox, 1 );
vbox2->addStretch( 5 );
gbox->setLayout(grid);
ntsc_start = new QLineEdit();
@ -337,28 +336,64 @@ ConsoleVideoConfDialog_t::ConsoleVideoConfDialog_t(QWidget *parent)
grid->addWidget( pal_end , 2, 2, Qt::AlignLeft);
grid->addWidget( clipSidesCbx, 3, 0, 1, 3);
gbox = new QGroupBox( tr("Current Dimensions") );
grid = new QGridLayout();
vbox2->addWidget( gbox, 1 );
gbox->setLayout(grid);
winSizeReadout = new QLineEdit();
winSizeReadout->setFont( font );
winSizeReadout->setReadOnly(true);
winSizeReadout->setAlignment(Qt::AlignCenter);
vpSizeReadout = new QLineEdit();
vpSizeReadout->setFont( font );
vpSizeReadout->setReadOnly(true);
vpSizeReadout->setAlignment(Qt::AlignCenter);
grid->addWidget( new QLabel( tr("Window:") ), 0, 0, Qt::AlignLeft);
grid->addWidget( new QLabel( tr("Viewport:") ), 1, 0, Qt::AlignLeft);
grid->addWidget( winSizeReadout, 0, 1, Qt::AlignLeft);
grid->addWidget( vpSizeReadout, 1, 1, Qt::AlignLeft);
vbox2->addStretch( 5 );
setLayout( main_vbox );
updateReadouts();
updateTimer = new QTimer( this );
connect( updateTimer, &QTimer::timeout, this, &ConsoleVideoConfDialog_t::periodicUpdate );
updateTimer->start( 500 ); // 2Hz
}
//----------------------------------------------------
ConsoleVideoConfDialog_t::~ConsoleVideoConfDialog_t(void)
{
printf("Destroy Video Config Window\n");
updateTimer->stop();
}
//----------------------------------------------------------------------------
void ConsoleVideoConfDialog_t::closeEvent(QCloseEvent *event)
{
printf("Video Config Close Window Event\n");
done(0);
printf("Video Config Close Window Event\n");
done(0);
deleteLater();
event->accept();
event->accept();
}
//----------------------------------------------------------------------------
void ConsoleVideoConfDialog_t::periodicUpdate(void)
{
updateReadouts();
}
//----------------------------------------------------------------------------
void ConsoleVideoConfDialog_t::closeWindow(void)
{
//printf("Video Config Close Window\n");
done(0);
//printf("Video Config Close Window\n");
done(0);
deleteLater();
}
//----------------------------------------------------
@ -370,6 +405,34 @@ void ConsoleVideoConfDialog_t::resetVideo(void)
fceuWrapperUnLock();
}
//----------------------------------------------------
void ConsoleVideoConfDialog_t::updateReadouts(void)
{
if ( consoleWindow )
{
QSize w, v;
char stmp[128];
w = consoleWindow->size();
if ( consoleWindow->viewport_GL )
{
v = consoleWindow->viewport_GL->size();
}
else if ( consoleWindow->viewport_SDL )
{
v = consoleWindow->viewport_SDL->size();
}
sprintf( stmp, "%i x %i ", w.width(), w.height() );
winSizeReadout->setText( tr(stmp) );
sprintf( stmp, "%i x %i ", v.width(), v.height() );
vpSizeReadout->setText( tr(stmp) );
}
}
//----------------------------------------------------
void ConsoleVideoConfDialog_t::ntscStartScanLineChanged(const QString &txt)
{
int opt, opt2;
@ -714,6 +777,8 @@ void ConsoleVideoConfDialog_t::applyChanges( void )
}
consoleWindow->resize( s );
updateReadouts();
}
}

View File

@ -29,6 +29,7 @@ class ConsoleVideoConfDialog_t : public QDialog
protected:
void closeEvent(QCloseEvent *bar);
QTimer *updateTimer;
QComboBox *driverSelect;
QComboBox *scalerSelect;
QComboBox *regionSelect;
@ -48,18 +49,22 @@ class ConsoleVideoConfDialog_t : public QDialog
QLineEdit *ntsc_end;
QLineEdit *pal_start;
QLineEdit *pal_end;
QLineEdit *winSizeReadout;
QLineEdit *vpSizeReadout;
void setCheckBoxFromProperty( QCheckBox *cbx, const char *property );
void setComboBoxFromProperty( QComboBox *cbx, const char *property );
//void setSliderFromProperty( QSlider *slider, QLabel *lbl, const char *property );
void resetVideo(void);
void updateReadouts(void);
QSize calcNewScreenSize(void);
public slots:
void closeWindow(void);
private slots:
void periodicUpdate(void);
void openGL_linearFilterChanged( int value );
void autoScaleChanged( int value );
void sqrPixChanged( int value );

View File

@ -260,8 +260,8 @@ InitConfig()
config->addOption("doublebuf", "SDL.DoubleBuffering", 1);
config->addOption("autoscale", "SDL.AutoScale", 1);
config->addOption("keepratio", "SDL.KeepRatio", 1);
config->addOption("xscale", "SDL.XScale", 2.0);
config->addOption("yscale", "SDL.YScale", 2.0);
config->addOption("xscale", "SDL.XScale", 2.000);
config->addOption("yscale", "SDL.YScale", 2.000);
config->addOption("xstretch", "SDL.XStretch", 0);
config->addOption("ystretch", "SDL.YStretch", 0);
config->addOption("noframe", "SDL.NoFrame", 0);

View File

@ -34,9 +34,9 @@ nes_shm_t *open_nes_shm(void)
memset( vaddr, 0, sizeof(struct nes_shm_t));
vaddr->video.ncol = 240;
vaddr->video.nrow = 256;
vaddr->video.pitch = 256 * 4;
vaddr->video.ncol = GL_NES_WIDTH;
vaddr->video.nrow = GL_NES_HEIGHT;
vaddr->video.pitch = GL_NES_WIDTH * 4;
vaddr->video.scale = 1;
vaddr->video.xyRatio = 1;
vaddr->video.preScaler = 0;

View File

@ -10,7 +10,7 @@
#define GL_WIN_DOUBLE_BUFFER 0x0002
#define GL_NES_WIDTH 256
#define GL_NES_HEIGHT 256
#define GL_NES_HEIGHT 240
#define NES_AUDIO_BUFLEN 480000
struct nes_shm_t