qimageinterface fixes, remove old lodepng, address more comments
This commit is contained in:
parent
93aab2c109
commit
391e552927
6
externals/lodepng/CMakeLists.txt
vendored
6
externals/lodepng/CMakeLists.txt
vendored
@ -1,7 +1,7 @@
|
||||
add_library(lodepng
|
||||
lodepng.cpp
|
||||
lodepng.h
|
||||
lodepng/lodepng.cpp
|
||||
lodepng/lodepng.h
|
||||
)
|
||||
|
||||
create_target_directory_groups(lodepng)
|
||||
target_include_directories(lodepng INTERFACE .)
|
||||
target_include_directories(lodepng INTERFACE lodepng)
|
||||
|
21
externals/lodepng/LICENSE
vendored
21
externals/lodepng/LICENSE
vendored
@ -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.
|
||||
|
5992
externals/lodepng/lodepng.cpp
vendored
5992
externals/lodepng/lodepng.cpp
vendored
File diff suppressed because it is too large
Load Diff
1930
externals/lodepng/lodepng.h
vendored
1930
externals/lodepng/lodepng.h
vendored
File diff suppressed because it is too large
Load Diff
@ -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__
|
||||
|
@ -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>
|
||||
</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><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 name="text">
|
||||
<string>Dump Textures (Hardware Renderer only)</string>
|
||||
<string>Dump Textures</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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};
|
||||
}
|
||||
|
@ -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!");
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user