qimageinterface fixes, remove old lodepng, address more comments
This commit is contained in:
parent
93aab2c109
commit
391e552927
|
@ -1,7 +1,7 @@
|
||||||
add_library(lodepng
|
add_library(lodepng
|
||||||
lodepng.cpp
|
lodepng/lodepng.cpp
|
||||||
lodepng.h
|
lodepng/lodepng.h
|
||||||
)
|
)
|
||||||
|
|
||||||
create_target_directory_groups(lodepng)
|
create_target_directory_groups(lodepng)
|
||||||
target_include_directories(lodepng INTERFACE .)
|
target_include_directories(lodepng INTERFACE lodepng)
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
Copyright (c) 2005-2018 Lode Vandevenne
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
|
|
||||||
3. This notice may not be removed or altered from any source
|
|
||||||
distribution.
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -18,8 +18,19 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent)
|
||||||
SetConfiguration();
|
SetConfiguration();
|
||||||
|
|
||||||
ui->hw_renderer_group->setEnabled(ui->toggle_hw_renderer->isChecked());
|
ui->hw_renderer_group->setEnabled(ui->toggle_hw_renderer->isChecked());
|
||||||
connect(ui->toggle_hw_renderer, &QCheckBox::toggled, ui->hw_renderer_group,
|
connect(ui->toggle_hw_renderer, &QCheckBox::toggled, this, [this] {
|
||||||
&QWidget::setEnabled);
|
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());
|
ui->hw_shader_group->setEnabled(ui->toggle_hw_shader->isChecked());
|
||||||
connect(ui->toggle_hw_shader, &QCheckBox::toggled, ui->hw_shader_group, &QWidget::setEnabled);
|
connect(ui->toggle_hw_shader, &QCheckBox::toggled, ui->hw_shader_group, &QWidget::setEnabled);
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
|
|
@ -340,7 +340,7 @@
|
||||||
<string><html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html></string>
|
<string><html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Use Custom Textures (Hardware Renderer only)</string>
|
<string>Use Custom Textures</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -350,7 +350,7 @@
|
||||||
<string><html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html></string>
|
<string><html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Dump Textures (Hardware Renderer only)</string>
|
<string>Dump Textures</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -21,9 +21,9 @@ bool QtImageInterface::DecodePNG(std::vector<u8>& dst, u32& width, u32& height,
|
||||||
height = image.height();
|
height = image.height();
|
||||||
|
|
||||||
// Write RGBA8 to vector
|
// Write RGBA8 to vector
|
||||||
for (u32 y = 1; y < image.height() + 1; y++) {
|
for (int y = 0; y < image.height(); y++) {
|
||||||
for (u32 x = 1; x < image.width() + 1; x++) {
|
for (int x = 0; x < image.width(); x++) {
|
||||||
const QColor pixel(image.pixel(y, x));
|
const QColor pixel(image.pixelColor(x, y));
|
||||||
dst.push_back(pixel.red());
|
dst.push_back(pixel.red());
|
||||||
dst.push_back(pixel.green());
|
dst.push_back(pixel.green());
|
||||||
dst.push_back(pixel.blue());
|
dst.push_back(pixel.blue());
|
||||||
|
@ -38,7 +38,7 @@ bool QtImageInterface::EncodePNG(const std::string& path, const std::vector<u8>&
|
||||||
u32 height) {
|
u32 height) {
|
||||||
QImage image(src.data(), width, height, QImage::Format_RGBA8888);
|
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);
|
LOG_ERROR(Frontend, "Failed to save {}", path);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,11 +24,11 @@ bool CustomTexCache::IsTextureCached(u64 hash) const {
|
||||||
return custom_textures.find(hash) != custom_textures.end();
|
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);
|
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) {
|
u32 height) {
|
||||||
custom_textures[hash] = {width, height, tex};
|
custom_textures[hash] = {width, height, tex};
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,9 @@ namespace Frontend {
|
||||||
|
|
||||||
class ImageInterface {
|
class ImageInterface {
|
||||||
public:
|
public:
|
||||||
|
ImageInterface() = default;
|
||||||
|
~ImageInterface() = default;
|
||||||
|
|
||||||
// Error logging should be handled by the frontend
|
// Error logging should be handled by the frontend
|
||||||
virtual bool DecodePNG(std::vector<u8>& dst, u32& width, u32& height, const std::string& path) {
|
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!");
|
LOG_CRITICAL(Frontend, "Attempted to decode PNG without an image interface!");
|
||||||
|
|
|
@ -955,11 +955,13 @@ void CachedSurface::UploadGLTexture(const Common::Rectangle<u32>& rect, GLuint r
|
||||||
if (Settings::values.custom_textures)
|
if (Settings::values.custom_textures)
|
||||||
use_custom_tex = LoadCustomTexture(tex_hash, custom_tex_info, custom_rect);
|
use_custom_tex = LoadCustomTexture(tex_hash, custom_tex_info, custom_rect);
|
||||||
|
|
||||||
if (Settings::values.dump_textures && !use_custom_tex)
|
if (Settings::values.dump_textures && !use_custom_tex) {
|
||||||
if (auto temp_dump_path = GetDumpPath(tex_hash)) {
|
auto temp_dump_path = GetDumpPath(tex_hash);
|
||||||
dump_path = temp_dump_path.value();
|
if (temp_dump_path.has_value()) {
|
||||||
|
dump_path = *temp_dump_path;
|
||||||
dump_tex = true;
|
dump_tex = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Load data from memory to the surface
|
// Load data from memory to the surface
|
||||||
GLint x0 = static_cast<GLint>(custom_rect.left);
|
GLint x0 = static_cast<GLint>(custom_rect.left);
|
||||||
|
|
Reference in New Issue