qimageinterface fixes, remove old lodepng, address more comments

This commit is contained in:
Khangaroo 2019-08-07 14:21:47 -04:00 committed by James Rowe
parent 93aab2c109
commit 391e552927
10 changed files with 32 additions and 7959 deletions

View file

@ -18,8 +18,19 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent)
SetConfiguration();
ui->hw_renderer_group->setEnabled(ui->toggle_hw_renderer->isChecked());
connect(ui->toggle_hw_renderer, &QCheckBox::toggled, ui->hw_renderer_group,
&QWidget::setEnabled);
connect(ui->toggle_hw_renderer, &QCheckBox::toggled, this, [this] {
auto checked = ui->toggle_hw_renderer->isChecked();
ui->hw_renderer_group->setEnabled(checked);
ui->toggle_custom_textures->setEnabled(checked);
ui->toggle_dump_textures->setEnabled(checked);
ui->toggle_preload_textures->setEnabled(checked);
if (!checked) {
ui->toggle_custom_textures->setChecked(false);
ui->toggle_dump_textures->setChecked(false);
ui->toggle_preload_textures->setChecked(false);
}
});
ui->hw_shader_group->setEnabled(ui->toggle_hw_shader->isChecked());
connect(ui->toggle_hw_shader, &QCheckBox::toggled, ui->hw_shader_group, &QWidget::setEnabled);
#ifdef __APPLE__

View file

@ -340,7 +340,7 @@
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Replace textures with PNG files.&lt;/p&gt;&lt;p&gt;Textures are loaded from load/textures/[Title ID]/.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Use Custom Textures (Hardware Renderer only)</string>
<string>Use Custom Textures</string>
</property>
</widget>
</item>
@ -350,7 +350,7 @@
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Dump textures to PNG files.&lt;/p&gt;&lt;p&gt;Textures are dumped to dump/textures/[Title ID]/.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Dump Textures (Hardware Renderer only)</string>
<string>Dump Textures</string>
</property>
</widget>
</item>

View file

@ -21,9 +21,9 @@ bool QtImageInterface::DecodePNG(std::vector<u8>& dst, u32& width, u32& height,
height = image.height();
// Write RGBA8 to vector
for (u32 y = 1; y < image.height() + 1; y++) {
for (u32 x = 1; x < image.width() + 1; x++) {
const QColor pixel(image.pixel(y, x));
for (int y = 0; y < image.height(); y++) {
for (int x = 0; x < image.width(); x++) {
const QColor pixel(image.pixelColor(x, y));
dst.push_back(pixel.red());
dst.push_back(pixel.green());
dst.push_back(pixel.blue());
@ -38,7 +38,7 @@ bool QtImageInterface::EncodePNG(const std::string& path, const std::vector<u8>&
u32 height) {
QImage image(src.data(), width, height, QImage::Format_RGBA8888);
if (!image.save(QString::fromStdString(path))) {
if (!image.save(QString::fromStdString(path), "PNG")) {
LOG_ERROR(Frontend, "Failed to save {}", path);
return false;
}

View file

@ -24,11 +24,11 @@ bool CustomTexCache::IsTextureCached(u64 hash) const {
return custom_textures.find(hash) != custom_textures.end();
}
const CustomTexInfo& CustomTexCache::LookupTexture(const u64 hash) {
const CustomTexInfo& CustomTexCache::LookupTexture(u64 hash) {
return custom_textures.at(hash);
}
void CustomTexCache::CacheTexture(const u64 hash, const std::vector<u8>& tex, u32 width,
void CustomTexCache::CacheTexture(u64 hash, const std::vector<u8>& tex, u32 width,
u32 height) {
custom_textures[hash] = {width, height, tex};
}

View file

@ -13,6 +13,9 @@ namespace Frontend {
class ImageInterface {
public:
ImageInterface() = default;
~ImageInterface() = default;
// Error logging should be handled by the frontend
virtual bool DecodePNG(std::vector<u8>& dst, u32& width, u32& height, const std::string& path) {
LOG_CRITICAL(Frontend, "Attempted to decode PNG without an image interface!");

View file

@ -955,11 +955,13 @@ void CachedSurface::UploadGLTexture(const Common::Rectangle<u32>& rect, GLuint r
if (Settings::values.custom_textures)
use_custom_tex = LoadCustomTexture(tex_hash, custom_tex_info, custom_rect);
if (Settings::values.dump_textures && !use_custom_tex)
if (auto temp_dump_path = GetDumpPath(tex_hash)) {
dump_path = temp_dump_path.value();
if (Settings::values.dump_textures && !use_custom_tex) {
auto temp_dump_path = GetDumpPath(tex_hash);
if (temp_dump_path.has_value()) {
dump_path = *temp_dump_path;
dump_tex = true;
}
}
// Load data from memory to the surface
GLint x0 = static_cast<GLint>(custom_rect.left);