1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 04:57:44 +00:00

SharedGraphics: Implement a simple PNG decoder.

This is extremely unoptimized, but it does successfully load "folder32.png"
so it must be at least somewhat correct. :^)
This commit is contained in:
Andreas Kling 2019-03-21 03:57:42 +01:00
parent ed2303e2d8
commit 42755e98cf
10 changed files with 1245 additions and 2 deletions

44
Userland/qs.cpp Normal file
View file

@ -0,0 +1,44 @@
#include <SharedGraphics/PNGLoader.h>
#include <LibGUI/GApplication.h>
#include <LibGUI/GWindow.h>
#include <LibGUI/GLabel.h>
#include <stdio.h>
int main(int argc, char** argv)
{
GApplication app(argc, argv);
#if 0
if (argc != 2) {
printf("usage: qs <image-file>\n");
return 0;
}
#endif
const char* path = "/res/icons/folder32.png";
if (argc > 1)
path = argv[1];
auto bitmap = load_png(path);
if (!bitmap) {
fprintf(stderr, "Failed to load %s\n", path);
return 1;
}
auto* window = new GWindow;
window->set_title(String::format("qs: %s", path));
window->set_rect(200, 200, bitmap->width(), bitmap->height());
auto* widget = new GWidget;
widget->set_fill_with_background_color(true);
window->set_main_widget(widget);
auto* label = new GLabel(widget);
label->set_relative_rect({ 0, 0, bitmap->width(), bitmap->height() });
label->set_icon(move(bitmap));
window->set_should_exit_event_loop_on_close(true);
window->show();
return app.exec();
}