1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-06-25 05:49:34 +00:00

New GUI layout by Ryan Rosser aka Aquatakat.

Feature: new GUI #1213
This commit is contained in:
Sergey Lipskiy 2016-12-04 12:37:28 +07:00
parent cb2da455b6
commit 37b6323281
23 changed files with 4648 additions and 2445 deletions

View File

@ -116,6 +116,5 @@ void Config::resetToDefaults()
onScreenDisplay.vis = 0;
onScreenDisplay.fps = 0;
onScreenDisplay.percent = 0;
onScreenDisplay.verticalPos = posBottom;
onScreenDisplay.horisontalPos = posLeft;
onScreenDisplay.pos = posBottomLeft;
}

View File

@ -4,7 +4,7 @@
#include <string>
#include "Types.h"
#define CONFIG_VERSION_CURRENT 15U
#define CONFIG_VERSION_CURRENT 16U
#define BILINEAR_3POINT 0
#define BILINEAR_STANDARD 1
@ -155,22 +155,22 @@ struct Config
f32 level;
} gammaCorrection;
enum HorisontalPosition {
posLeft,
posRight
};
enum VerticalPosition {
posBottom,
posTop
enum CountersPosition {
posTopLeft = 1,
posTopCenter = 2,
posTopRight = 4,
posTop = posTopLeft | posTopCenter | posTopRight,
posBottomLeft = 8,
posBottomCenter = 16,
posBottomRight = 32,
posBottom = posBottomLeft | posBottomCenter | posBottomRight
};
struct {
u32 vis;
u32 fps;
u32 percent;
u32 verticalPos;
u32 horisontalPos;
u32 pos;
} onScreenDisplay;
void resetToDefaults();

File diff suppressed because it is too large Load Diff

BIN
src/GLideNUI/BottomLeft.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -132,40 +132,26 @@ void ConfigDialog::_init()
ui->fixTexrectForceRadioButton->setChecked(true);
break;
}
ui->nativeRes2D_checkBox->toggle();
ui->nativeRes2D_checkBox->setChecked(config.generalEmulation.enableNativeResTexrects != 0);
if (ui->nativeRes2D_checkBox->isChecked()) {
ui->texrectsBlackLinesLabel->setEnabled(false);
ui->fixTexrectDisableRadioButton->setEnabled(false);
ui->fixTexrectSmartRadioButton->setEnabled(false);
ui->fixTexrectForceRadioButton->setEnabled(false);
}
ui->bufferSwapComboBox->setCurrentIndex(config.frameBufferEmulation.bufferSwapMode);
ui->frameBufferGroupBox->setChecked(config.frameBufferEmulation.enable != 0);
switch (config.frameBufferEmulation.copyToRDRAM) {
case Config::ctDisable:
ui->copyBufferDisableRadioButton->setChecked(true);
break;
case Config::ctSync:
ui->copyBufferSyncRadioButton->setChecked(true);
break;
case Config::ctAsync:
ui->copyBufferAsyncRadioButton->setChecked(true);
break;
}
ui->frameBufferSwapComboBox->setCurrentIndex(config.frameBufferEmulation.bufferSwapMode);
ui->fbInfoEnableCheckBox->toggle();
ui->fbInfoEnableCheckBox->setChecked(config.frameBufferEmulation.fbInfoDisabled == 0);
ui->frameBufferCheckBox->toggle();
const bool fbEmulationEnabled = config.frameBufferEmulation.enable != 0;
ui->frameBufferCheckBox->setChecked(fbEmulationEnabled);
ui->frameBufferInfoFrame->setVisible(!fbEmulationEnabled);
ui->frameBufferInfoFrame2->setVisible(!fbEmulationEnabled);
ui->frameBufferInfoFrame3->setVisible(!fbEmulationEnabled);
ui->copyColorBufferComboBox->setCurrentIndex(config.frameBufferEmulation.copyToRDRAM);
ui->copyDepthBufferComboBox->setCurrentIndex(config.frameBufferEmulation.copyDepthToRDRAM);
ui->RenderFBCheckBox->setChecked(config.frameBufferEmulation.copyFromRDRAM != 0);
switch (config.frameBufferEmulation.copyDepthToRDRAM) {
case Config::cdDisable:
ui->copyDepthDisableRadioButton->setChecked(true);
break;
case Config::cdCopyFromVRam:
ui->copyDepthVRamRadioButton->setChecked(true);
break;
case Config::cdSoftwareRender:
ui->copyDepthSoftwareRadioButton->setChecked(true);
break;
}
ui->n64DepthCompareCheckBox->setChecked(config.frameBufferEmulation.N64DepthCompare != 0);
switch (config.frameBufferEmulation.aspect) {
case Config::aStretch:
ui->aspectStretchRadioButton->setChecked(true);
@ -180,13 +166,30 @@ void ConfigDialog::_init()
ui->aspectAdjustRadioButton->setChecked(true);
break;
}
ui->resolutionFactorSlider->setValue(config.frameBufferEmulation.nativeResFactor);
ui->resolutionFactorSlider->valueChanged(2);
ui->factor0xRadioButton->toggle();
ui->factor1xRadioButton->toggle();
ui->factorXxRadioButton->toggle();
switch (config.frameBufferEmulation.nativeResFactor) {
case 0:
ui->factor0xRadioButton->setChecked(true);
break;
case 1:
ui->factor1xRadioButton->setChecked(true);
break;
default:
ui->factorXxRadioButton->setChecked(true);
ui->resolutionFactorSlider->setValue(config.frameBufferEmulation.nativeResFactor);
break;
}
ui->copyAuxBuffersCheckBox->setChecked(config.frameBufferEmulation.copyAuxToRDRAM != 0);
ui->fbInfoDisableCheckBox->setChecked(config.frameBufferEmulation.fbInfoDisabled != 0);
ui->readColorChunkCheckBox->setChecked(config.frameBufferEmulation.fbInfoReadColorChunk != 0);
ui->readColorChunkCheckBox->setEnabled(config.frameBufferEmulation.fbInfoDisabled == 0);
ui->readColorChunkCheckBox->setEnabled(fbEmulationEnabled && config.frameBufferEmulation.fbInfoDisabled == 0);
ui->readDepthChunkCheckBox->setChecked(config.frameBufferEmulation.fbInfoReadDepthChunk != 0);
ui->readDepthChunkCheckBox->setEnabled(config.frameBufferEmulation.fbInfoDisabled == 0);
ui->readDepthChunkCheckBox->setEnabled(fbEmulationEnabled && config.frameBufferEmulation.fbInfoDisabled == 0);
// Texture filter settings
QStringList textureFiltersList;
@ -205,7 +208,8 @@ void ConfigDialog::_init()
ui->deposterizeCheckBox->setChecked(config.textureFilter.txDeposterize != 0);
ui->ignoreBackgroundsCheckBox->setChecked(config.textureFilter.txFilterIgnoreBG != 0);
ui->texturePackGroupBox->setChecked(config.textureFilter.txHiresEnable != 0);
ui->texturePackOnCheckBox->toggle();
ui->texturePackOnCheckBox->setChecked(config.textureFilter.txHiresEnable != 0);
ui->alphaChannelCheckBox->setChecked(config.textureFilter.txHiresFullAlphaChannel != 0);
ui->alternativeCRCCheckBox->setChecked(config.textureFilter.txHresAltCRC != 0);
ui->textureDumpCheckBox->setChecked(config.textureFilter.txDump != 0);
@ -232,9 +236,9 @@ void ConfigDialog::_init()
ui->blurAmountSlider->setValue(config.bloomFilter.blurAmount);
ui->blurStrengthSlider->setValue(config.bloomFilter.blurStrength);
ui->forceGammaCorrectionCheckBox->setChecked(config.gammaCorrection.force != 0);
ui->gammaCorrectionGroupBox->setChecked(config.gammaCorrection.force != 0);
ui->gammaLevelSpinBox->setValue(config.gammaCorrection.level);
ui->gammaLevelSpinBox->setEnabled(ui->forceGammaCorrectionCheckBox->isChecked());
ui->gammaLevelSpinBox->setEnabled(ui->gammaCorrectionGroupBox->isChecked());
// OSD settings
QString fontName(config.font.name.c_str());
@ -244,25 +248,38 @@ void ConfigDialog::_init()
ui->fontNameLabel->setText(m_font.family() + " - " + strSize);
m_color = QColor(config.font.color[0], config.font.color[1], config.font.color[2]);
ui->fontColorLabel->setFont(m_font);
ui->fontColorLabel->setText(m_color.name());
ui->fontPreviewLabel->setFont(m_font);
ui->fontColorLabel->setText(m_color.name());
QPalette palette;
palette.setColor(QPalette::Window, Qt::black);
palette.setColor(QPalette::WindowText, m_color);
ui->fontColorLabel->setAutoFillBackground(true);
ui->fontColorLabel->setPalette(palette);
ui->fontPreviewLabel->setAutoFillBackground(true);
ui->fontPreviewLabel->setPalette(palette);
switch (config.onScreenDisplay.pos) {
case Config::posTopLeft:
ui->topLeftPushButton->setChecked(true);
break;
case Config::posTopCenter:
ui->topPushButton->setChecked(true);
break;
case Config::posTopRight:
ui->topRightPushButton->setChecked(true);
break;
case Config::posBottomLeft:
ui->bottomLeftPushButton->setChecked(true);
break;
case Config::posBottomCenter:
ui->bottomPushButton->setChecked(true);
break;
case Config::posBottomRight:
ui->bottomRightPushButton->setChecked(true);
break;
}
ui->fpsCheckBox->setChecked(config.onScreenDisplay.fps != 0);
ui->visCheckBox->setChecked(config.onScreenDisplay.vis != 0);
ui->percentCheckBox->setChecked(config.onScreenDisplay.percent != 0);
if (config.onScreenDisplay.horisontalPos == Config::posLeft)
ui->leftRadioButton->setChecked(true);
else
ui->rightRadioButton->setChecked(true);
if (config.onScreenDisplay.verticalPos == Config::posTop)
ui->topRadioButton->setChecked(true);
else
ui->bottoRadioButton->setChecked(true);
}
void ConfigDialog::_getTranslations(QStringList & _translationFiles) const
@ -357,30 +374,25 @@ void ConfigDialog::accept()
config.generalEmulation.enableHWLighting = ui->enableHWLightingCheckBox->isChecked() ? 1 : 0;
config.generalEmulation.enableShadersStorage = ui->enableShadersStorageCheckBox->isChecked() ? 1 : 0;
config.generalEmulation.enableCustomSettings = ui->customSettingsCheckBox->isChecked() ? 1 : 0;
if (ui->fixTexrectDisableRadioButton->isChecked())
config.generalEmulation.correctTexrectCoords = Config::tcDisable;
else if (ui->fixTexrectSmartRadioButton->isChecked())
config.generalEmulation.correctTexrectCoords = Config::tcSmart;
else if (ui->fixTexrectForceRadioButton->isChecked())
config.generalEmulation.correctTexrectCoords = Config::tcForce;
config.generalEmulation.enableNativeResTexrects = ui->nativeRes2D_checkBox->isChecked() ? 1 : 0;
config.frameBufferEmulation.bufferSwapMode = ui->bufferSwapComboBox->currentIndex();
config.frameBufferEmulation.enable = ui->frameBufferGroupBox->isChecked() ? 1 : 0;
if (ui->copyBufferDisableRadioButton->isChecked())
config.frameBufferEmulation.copyToRDRAM = Config::ctDisable;
else if (ui->copyBufferSyncRadioButton->isChecked())
config.frameBufferEmulation.copyToRDRAM = Config::ctSync;
else if (ui->copyBufferAsyncRadioButton->isChecked())
config.frameBufferEmulation.copyToRDRAM = Config::ctAsync;
config.frameBufferEmulation.enable = ui->frameBufferCheckBox->isChecked() ? 1 : 0;
config.frameBufferEmulation.bufferSwapMode = ui->frameBufferSwapComboBox->currentIndex();
config.frameBufferEmulation.copyToRDRAM = ui->copyColorBufferComboBox->currentIndex();
config.frameBufferEmulation.copyDepthToRDRAM = ui->copyDepthBufferComboBox->currentIndex();
config.frameBufferEmulation.copyFromRDRAM = ui->RenderFBCheckBox->isChecked() ? 1 : 0;
if (ui->copyDepthDisableRadioButton->isChecked())
config.frameBufferEmulation.copyDepthToRDRAM = Config::cdDisable;
else if (ui->copyDepthVRamRadioButton->isChecked())
config.frameBufferEmulation.copyDepthToRDRAM = Config::cdCopyFromVRam;
else if (ui->copyDepthSoftwareRadioButton->isChecked())
config.frameBufferEmulation.copyDepthToRDRAM = Config::cdSoftwareRender;
config.frameBufferEmulation.N64DepthCompare = ui->n64DepthCompareCheckBox->isChecked() ? 1 : 0;
if (ui->aspectStretchRadioButton->isChecked())
config.frameBufferEmulation.aspect = Config::aStretch;
else if (ui->aspect43RadioButton->isChecked())
@ -389,9 +401,16 @@ void ConfigDialog::accept()
config.frameBufferEmulation.aspect = Config::a169;
else if (ui->aspectAdjustRadioButton->isChecked())
config.frameBufferEmulation.aspect = Config::aAdjust;
config.frameBufferEmulation.nativeResFactor = ui->resolutionFactorSlider->value();
if (ui->factor0xRadioButton->isChecked())
config.frameBufferEmulation.nativeResFactor = 0;
else if (ui->factor1xRadioButton->isChecked())
config.frameBufferEmulation.nativeResFactor = 1;
else if (ui->factorXxRadioButton->isChecked())
config.frameBufferEmulation.nativeResFactor = ui->resolutionFactorSlider->value();
config.frameBufferEmulation.copyAuxToRDRAM = ui->copyAuxBuffersCheckBox->isChecked() ? 1 : 0;
config.frameBufferEmulation.fbInfoDisabled = ui->fbInfoDisableCheckBox->isChecked() ? 1: 0;
config.frameBufferEmulation.fbInfoDisabled = ui->fbInfoEnableCheckBox->isChecked() ? 0 : 1;
config.frameBufferEmulation.fbInfoReadColorChunk = ui->readColorChunkCheckBox->isChecked() ? 1 : 0;
config.frameBufferEmulation.fbInfoReadDepthChunk = ui->readDepthChunkCheckBox->isChecked() ? 1 : 0;
@ -403,7 +422,7 @@ void ConfigDialog::accept()
config.textureFilter.txDeposterize = ui->deposterizeCheckBox->isChecked() ? 1 : 0;
config.textureFilter.txFilterIgnoreBG = ui->ignoreBackgroundsCheckBox->isChecked() ? 1 : 0;
config.textureFilter.txHiresEnable = ui->texturePackGroupBox->isChecked() ? 1 : 0;
config.textureFilter.txHiresEnable = ui->texturePackOnCheckBox->isChecked() ? 1 : 0;
config.textureFilter.txHiresFullAlphaChannel = ui->alphaChannelCheckBox->isChecked() ? 1 : 0;
config.textureFilter.txHresAltCRC = ui->alternativeCRCCheckBox->isChecked() ? 1 : 0;
config.textureFilter.txDump = ui->textureDumpCheckBox->isChecked() ? 1 : 0;
@ -428,7 +447,7 @@ void ConfigDialog::accept()
config.bloomFilter.blurAmount = ui->blurAmountSlider->value();
config.bloomFilter.blurStrength = ui->blurStrengthSlider->value();
config.gammaCorrection.force = ui->forceGammaCorrectionCheckBox->isChecked() ? 1 : 0;
config.gammaCorrection.force = ui->gammaCorrectionGroupBox->isChecked() ? 1 : 0;
config.gammaCorrection.level = ui->gammaLevelSpinBox->value();
// OSD settings
@ -448,11 +467,23 @@ void ConfigDialog::accept()
config.font.colorf[2] = m_color.blueF();
config.font.colorf[3] = m_color.alphaF();
if (ui->topLeftPushButton->isChecked())
config.onScreenDisplay.pos = Config::posTopLeft;
else if (ui->topPushButton->isChecked())
config.onScreenDisplay.pos = Config::posTopCenter;
else if (ui->topRightPushButton->isChecked())
config.onScreenDisplay.pos = Config::posTopRight;
else if (ui->bottomLeftPushButton->isChecked())
config.onScreenDisplay.pos = Config::posBottomLeft;
else if (ui->bottomPushButton->isChecked())
config.onScreenDisplay.pos = Config::posBottomCenter;
else if (ui->bottomRightPushButton->isChecked())
config.onScreenDisplay.pos = Config::posBottomRight;
config.onScreenDisplay.fps = ui->fpsCheckBox->isChecked() ? 1 : 0;
config.onScreenDisplay.vis = ui->visCheckBox->isChecked() ? 1 : 0;
config.onScreenDisplay.percent = ui->percentCheckBox->isChecked() ? 1 : 0;
config.onScreenDisplay.horisontalPos = ui->leftRadioButton->isChecked() ? Config::posLeft : Config::posRight;
config.onScreenDisplay.verticalPos = ui->topRadioButton->isChecked() ? Config::posTop : Config::posBottom;
writeSettings(m_strIniPath);
@ -471,7 +502,7 @@ void ConfigDialog::on_selectFontButton_clicked()
QString strSize;
strSize.setNum(m_font.pointSize());
ui->fontNameLabel->setText(m_font.family() + " - " + strSize);
ui->fontColorLabel->setFont(m_font);
ui->fontPreviewLabel->setFont(m_font);
}
void ConfigDialog::on_PickFontColorButton_clicked()
@ -486,7 +517,7 @@ void ConfigDialog::on_PickFontColorButton_clicked()
palette.setColor(QPalette::Window, Qt::black);
palette.setColor(QPalette::WindowText, m_color);
ui->fontColorLabel->setText(m_color.name());
ui->fontColorLabel->setPalette(palette);
ui->fontPreviewLabel->setPalette(palette);
}
void ConfigDialog::on_buttonBox_clicked(QAbstractButton *button)
@ -525,32 +556,35 @@ void ConfigDialog::on_texPackPathButton_clicked()
ui->txPathLabel->setText(directory);
}
void ConfigDialog::on_fbInfoDisableCheckBox_toggled(bool checked)
{
ui->readColorChunkCheckBox->setEnabled(!checked);
ui->readDepthChunkCheckBox->setEnabled(!checked);
}
void ConfigDialog::on_windowedResolutionComboBox_currentIndexChanged(int index)
{
const bool bCustom = index == numWindowedModes - 1;
ui->windowWidthLabel->setEnabled(bCustom);
ui->windowWidthSpinBox->setValue(bCustom ? config.video.windowedWidth : WindowedModes[index].width);
ui->windowWidthSpinBox->setEnabled(bCustom);
ui->windowHeightLabel->setEnabled(bCustom);
ui->windowHeightSpinBox->setValue(bCustom ? config.video.windowedHeight : WindowedModes[index].height);
ui->windowHeightSpinBox->setEnabled(bCustom);
}
void ConfigDialog::on_nativeRes2D_checkBox_toggled(bool checked)
{
ui->texrectsBlackLinesLabel->setEnabled(!checked);
ui->fixTexrectDisableRadioButton->setEnabled(!checked);
ui->fixTexrectSmartRadioButton->setEnabled(!checked);
ui->fixTexrectForceRadioButton->setEnabled(!checked);
}
void ConfigDialog::on_cropImageComboBox_currentIndexChanged(int index)
{
const bool bCustom = index == Config::cmCustom;
ui->cropImageWidthLabel->setEnabled(bCustom);
ui->cropImageWidthSpinBox->setEnabled(bCustom);
ui->cropImageHeightLabel->setEnabled(bCustom);
ui->cropImageHeightSpinBox->setEnabled(bCustom);
}
void ConfigDialog::on_frameBufferCheckBox_toggled(bool checked)
{
if (!checked) {
ui->nativeRes2DFrame->setEnabled(true);
} else {
ui->nativeRes2DFrame->setEnabled(!ui->factor1xRadioButton->isChecked());
}
ui->readColorChunkCheckBox->setEnabled(checked && ui->fbInfoEnableCheckBox->isChecked());
ui->readDepthChunkCheckBox->setEnabled(checked && ui->fbInfoEnableCheckBox->isChecked());
}

View File

@ -33,14 +33,12 @@ private slots:
void on_texPackPathButton_clicked();
void on_fbInfoDisableCheckBox_toggled(bool checked);
void on_windowedResolutionComboBox_currentIndexChanged(int index);
void on_nativeRes2D_checkBox_toggled(bool checked);
void on_cropImageComboBox_currentIndexChanged(int index);
void on_frameBufferCheckBox_toggled(bool checked);
private:
void _init();
void _getTranslations(QStringList & _translationFiles) const;

BIN
src/GLideNUI/Down.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -43,3 +43,5 @@ TRANSLATIONS = gliden64_fr.ts \
gliden64_pl.ts \
gliden64_pt_BR.ts \
gliden64_ja.ts
DISTFILES +=

BIN
src/GLideNUI/Icon-48.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 47 KiB

BIN
src/GLideNUI/Info.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/GLideNUI/Left.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/GLideNUI/Right.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -113,8 +113,7 @@ void _loadSettings(QSettings & settings)
config.onScreenDisplay.fps = settings.value("showFPS", config.onScreenDisplay.fps).toInt();
config.onScreenDisplay.vis = settings.value("showVIS", config.onScreenDisplay.vis).toInt();
config.onScreenDisplay.percent = settings.value("showPercent", config.onScreenDisplay.percent).toInt();
config.onScreenDisplay.horisontalPos = settings.value("osdHorisontalPos", config.onScreenDisplay.horisontalPos).toInt();
config.onScreenDisplay.verticalPos = settings.value("osdVerticalPos", config.onScreenDisplay.verticalPos).toInt();
config.onScreenDisplay.pos = settings.value("osdPos", config.onScreenDisplay.pos).toInt();
settings.endGroup();
}
@ -229,8 +228,7 @@ void writeSettings(const QString & _strIniFolder)
settings.setValue("showFPS", config.onScreenDisplay.fps);
settings.setValue("showVIS", config.onScreenDisplay.vis);
settings.setValue("showPercent", config.onScreenDisplay.percent);
settings.setValue("osdHorisontalPos", config.onScreenDisplay.horisontalPos);
settings.setValue("osdVerticalPos", config.onScreenDisplay.verticalPos);
settings.setValue("osdPos", config.onScreenDisplay.pos);
settings.endGroup();
}

BIN
src/GLideNUI/TopLeft.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/GLideNUI/TopRight.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/GLideNUI/Up.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/GLideNUI/Warning.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,16 @@
<RCC>
<qresource prefix="/">
<file>Icon.ico</file>
<file>Icon-48.ico</file>
<file>Warning.ico</file>
<file>Info.ico</file>
<file>Up.ico</file>
<file>Right.ico</file>
<file>Down.ico</file>
<file>Left.ico</file>
<file>TopLeft.ico</file>
<file>TopRight.ico</file>
<file>BottomRight.ico</file>
<file>BottomLeft.ico</file>
</qresource>
</RCC>

View File

@ -1973,12 +1973,22 @@ void OGLRender::_drawOSD(const char *_pText, float _x, float & _y)
{
float tW, tH;
_getTextSize(_pText, tW, tH);
if (config.onScreenDisplay.horisontalPos == config.posRight)
const bool top = (config.posTop & config.onScreenDisplay.pos) != 0;
const bool right = (config.onScreenDisplay.pos == Config::posTopRight) || (config.onScreenDisplay.pos == Config::posBottomRight);
const bool center = (config.onScreenDisplay.pos == Config::posTopCenter) || (config.onScreenDisplay.pos == Config::posBottomCenter);
if (center)
_x = -tW * 0.5f;
else if (right)
_x -= tW;
if (config.onScreenDisplay.verticalPos == config.posTop)
if (top)
_y -= tH;
drawText(_pText, _x, _y);
if (config.onScreenDisplay.verticalPos == config.posTop)
if (top)
_y -= tH * 0.5f;
else
_y += tH * 1.5f;
@ -2001,8 +2011,12 @@ void OGLRender::drawOSD()
gSP.changed |= CHANGED_VIEWPORT;
gDP.changed |= CHANGED_SCISSOR;
const float hp = config.onScreenDisplay.horisontalPos == config.posLeft ? -1 : 1;
const float vp = config.onScreenDisplay.verticalPos == config.posBottom ? -1 : 1;
const bool bottom = (config.posBottom & config.onScreenDisplay.pos) != 0;
const bool left = (config.onScreenDisplay.pos == Config::posTopLeft) || (config.onScreenDisplay.pos == Config::posBottomLeft);
const float hp = left ? -1 : 1;
const float vp = bottom ? -1 : 1;
float hShift, vShift;
_getTextSize("0", hShift, vShift);

View File

@ -181,9 +181,8 @@ bool Config_SetDefault()
assert(res == M64ERR_SUCCESS);
res = ConfigSetDefaultBool(g_configVideoGliden64, "ShowPercent", config.onScreenDisplay.percent, "Show percent counter.");
assert(res == M64ERR_SUCCESS);
res = ConfigSetDefaultInt(g_configVideoGliden64, "CountersHPos", config.onScreenDisplay.horisontalPos, "Counters horisontal position (0=left, 1=right)");
assert(res == M64ERR_SUCCESS);
res = ConfigSetDefaultInt(g_configVideoGliden64, "CountersVPos", config.onScreenDisplay.verticalPos, "Counters vertical position (0=bottom, 1=top)");
res = ConfigSetDefaultInt(g_configVideoGliden64, "CountersPos", config.onScreenDisplay.pos,
"Counters position (1=top left, 2=top center, 4=top right, 8=bottom left, 16=bottom center, 32=bottom right)");
assert(res == M64ERR_SUCCESS);
return ConfigSaveSection("Video-GLideN64") == M64ERR_SUCCESS;
@ -310,8 +309,7 @@ void Config_LoadConfig()
config.onScreenDisplay.fps = ConfigGetParamBool(g_configVideoGliden64, "ShowFPS");
config.onScreenDisplay.vis = ConfigGetParamBool(g_configVideoGliden64, "ShowVIS");
config.onScreenDisplay.percent = ConfigGetParamBool(g_configVideoGliden64, "ShowPercent");
config.onScreenDisplay.horisontalPos = ConfigGetParamInt(g_configVideoGliden64, "CountersHPos");
config.onScreenDisplay.verticalPos = ConfigGetParamInt(g_configVideoGliden64, "CountersVPos");
config.onScreenDisplay.pos = ConfigGetParamInt(g_configVideoGliden64, "CountersPos");
config.generalEmulation.hacks = hacks;
}