From 7c0a185970b7d1053eeef464ec81f8490717587d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 22 Mar 2019 00:19:53 +0100 Subject: [PATCH] Use the PNG loader for all images, and get rid of the .rgb files. --- Applications/About/main.cpp | 6 +- .../FileManager/DirectoryTableModel.cpp | 10 +-- Applications/FileManager/main.cpp | 8 +- Applications/IRCClient/IRCAppWindow.cpp | 12 +-- Applications/Launcher/main.cpp | 10 +-- .../ProcessManager/ProcessTableModel.cpp | 8 +- Applications/ProcessManager/main.cpp | 6 +- Applications/TextEditor/main.cpp | 18 ++--- Base/res/icons/16x16/delete.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/irc-close-query.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/irc-join.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/irc-nick.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/irc-open-query.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/irc-part.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/irc-whois.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/mkdir.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/new.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/open.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/redo.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/save.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/undo.rgb | Bin 1024 -> 0 bytes Base/res/icons/16x16/window.png | Bin 0 -> 171 bytes Base/res/icons/FileManager.rgb | Bin 4096 -> 0 bytes Base/res/icons/FontEditor.rgb | Bin 4096 -> 0 bytes Base/res/icons/Serenity.rgb | Bin 4096 -> 0 bytes Base/res/icons/Terminal.rgb | Bin 4096 -> 0 bytes Base/res/icons/TextEditor.rgb | Bin 4096 -> 0 bytes Base/res/icons/TextEditor16.rgb | Bin 1024 -> 0 bytes Base/res/icons/continue16.rgb | Bin 1024 -> 0 bytes Base/res/icons/copyfile16.rgb | Bin 1024 -> 0 bytes Base/res/icons/cut16.rgb | Bin 1024 -> 0 bytes Base/res/icons/executable16.rgb | Bin 1024 -> 0 bytes Base/res/icons/file.rgb | Bin 4096 -> 0 bytes Base/res/icons/file16.rgb | Bin 1024 -> 0 bytes Base/res/icons/folder.rgb | Bin 4096 -> 0 bytes Base/res/icons/folder16.rgb | Bin 1024 -> 0 bytes Base/res/icons/folder32.rgb | Bin 4096 -> 0 bytes Base/res/icons/gear16.rgb | Bin 1024 -> 0 bytes Base/res/icons/highpriority16.rgb | Bin 1024 -> 0 bytes Base/res/icons/kill16.rgb | Bin 1024 -> 0 bytes Base/res/icons/link16.png | Bin 1385 -> 5356 bytes Base/res/icons/link16.rgb | Bin 1024 -> 0 bytes Base/res/icons/lowpriority16.rgb | Bin 1024 -> 0 bytes Base/res/icons/mkdir16.rgb | Bin 1024 -> 0 bytes Base/res/icons/normalpriority16.rgb | Bin 1024 -> 0 bytes Base/res/icons/parentdirectory16.rgb | Bin 1024 -> 0 bytes Base/res/icons/paste16.rgb | Bin 1024 -> 0 bytes Base/res/icons/serenity.png | Bin 0 -> 2114 bytes Base/res/icons/socket16.rgb | Bin 1024 -> 0 bytes Base/res/icons/stop16.rgb | Bin 1024 -> 0 bytes Base/res/icons/trash16.rgb | Bin 1024 -> 0 bytes Base/res/icons/window16.rgb | Bin 1024 -> 0 bytes Servers/WindowServer/WSWindow.cpp | 2 +- SharedGraphics/GraphicsBitmap.cpp | 8 +- SharedGraphics/GraphicsBitmap.h | 1 + SharedGraphics/PNGLoader.cpp | 75 ++++++++++-------- 56 files changed, 90 insertions(+), 74 deletions(-) delete mode 100644 Base/res/icons/16x16/delete.rgb delete mode 100644 Base/res/icons/16x16/irc-close-query.rgb delete mode 100644 Base/res/icons/16x16/irc-join.rgb delete mode 100644 Base/res/icons/16x16/irc-nick.rgb delete mode 100644 Base/res/icons/16x16/irc-open-query.rgb delete mode 100644 Base/res/icons/16x16/irc-part.rgb delete mode 100644 Base/res/icons/16x16/irc-whois.rgb delete mode 100644 Base/res/icons/16x16/mkdir.rgb delete mode 100644 Base/res/icons/16x16/new.rgb delete mode 100644 Base/res/icons/16x16/open.rgb delete mode 100644 Base/res/icons/16x16/redo.rgb delete mode 100644 Base/res/icons/16x16/save.rgb delete mode 100644 Base/res/icons/16x16/undo.rgb create mode 100644 Base/res/icons/16x16/window.png delete mode 100644 Base/res/icons/FileManager.rgb delete mode 100644 Base/res/icons/FontEditor.rgb delete mode 100644 Base/res/icons/Serenity.rgb delete mode 100644 Base/res/icons/Terminal.rgb delete mode 100644 Base/res/icons/TextEditor.rgb delete mode 100644 Base/res/icons/TextEditor16.rgb delete mode 100644 Base/res/icons/continue16.rgb delete mode 100644 Base/res/icons/copyfile16.rgb delete mode 100644 Base/res/icons/cut16.rgb delete mode 100644 Base/res/icons/executable16.rgb delete mode 100644 Base/res/icons/file.rgb delete mode 100644 Base/res/icons/file16.rgb delete mode 100644 Base/res/icons/folder.rgb delete mode 100644 Base/res/icons/folder16.rgb delete mode 100644 Base/res/icons/folder32.rgb delete mode 100644 Base/res/icons/gear16.rgb delete mode 100644 Base/res/icons/highpriority16.rgb delete mode 100644 Base/res/icons/kill16.rgb delete mode 100644 Base/res/icons/link16.rgb delete mode 100644 Base/res/icons/lowpriority16.rgb delete mode 100644 Base/res/icons/mkdir16.rgb delete mode 100644 Base/res/icons/normalpriority16.rgb delete mode 100644 Base/res/icons/parentdirectory16.rgb delete mode 100644 Base/res/icons/paste16.rgb create mode 100644 Base/res/icons/serenity.png delete mode 100644 Base/res/icons/socket16.rgb delete mode 100644 Base/res/icons/stop16.rgb delete mode 100644 Base/res/icons/trash16.rgb delete mode 100644 Base/res/icons/window16.rgb diff --git a/Applications/About/main.cpp b/Applications/About/main.cpp index 045b02681d5..eb360e2d839 100644 --- a/Applications/About/main.cpp +++ b/Applications/About/main.cpp @@ -11,7 +11,7 @@ int main(int argc, char** argv) auto* window = new GWindow; window->set_title("About Serenity"); - Rect window_rect { 0, 0, 240, 120 }; + Rect window_rect { 0, 0, 240, 150 }; window_rect.center_within({ 0, 0, 1024, 768 }); window->set_rect(window_rect); window->set_should_exit_event_loop_on_close(true); @@ -24,9 +24,9 @@ int main(int argc, char** argv) widget->layout()->set_spacing(8); auto* icon_label = new GLabel(widget); - icon_label->set_icon(GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/Serenity.rgb", { 32, 32 })); + icon_label->set_icon(GraphicsBitmap::load_from_file("/res/icons/serenity.png")); icon_label->set_size_policy(SizePolicy::Fixed, SizePolicy::Fixed); - icon_label->set_preferred_size({ 32, 32 }); + icon_label->set_preferred_size(icon_label->icon()->size()); auto* label = new GLabel(widget); label->set_font(Font::default_bold_font()); diff --git a/Applications/FileManager/DirectoryTableModel.cpp b/Applications/FileManager/DirectoryTableModel.cpp index a1a0967eabd..82aba2f8c8f 100644 --- a/Applications/FileManager/DirectoryTableModel.cpp +++ b/Applications/FileManager/DirectoryTableModel.cpp @@ -9,11 +9,11 @@ DirectoryTableModel::DirectoryTableModel() { - m_directory_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/folder16.rgb", { 16, 16 }); - m_file_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/file16.rgb", { 16, 16 }); - m_symlink_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/link16.rgb", { 16, 16 }); - m_socket_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/socket16.rgb", { 16, 16 }); - m_executable_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/executable16.rgb", { 16, 16 }); + m_directory_icon = GraphicsBitmap::load_from_file("/res/icons/folder16.png"); + m_file_icon = GraphicsBitmap::load_from_file("/res/icons/file16.png"); + m_symlink_icon = GraphicsBitmap::load_from_file("/res/icons/link16.png"); + m_socket_icon = GraphicsBitmap::load_from_file("/res/icons/socket16.png"); + m_executable_icon = GraphicsBitmap::load_from_file("/res/icons/executable16.png"); setpwent(); while (auto* passwd = getpwent()) diff --git a/Applications/FileManager/main.cpp b/Applications/FileManager/main.cpp index f94fbbcd302..6405d9df67d 100644 --- a/Applications/FileManager/main.cpp +++ b/Applications/FileManager/main.cpp @@ -54,11 +54,11 @@ int main(int argc, char** argv) directory_table_view->open(editor.text()); }; - auto open_parent_directory_action = GAction::create("Open parent directory", { Mod_Alt, Key_Up }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/parentdirectory16.rgb", { 16, 16 }), [directory_table_view] (const GAction&) { + auto open_parent_directory_action = GAction::create("Open parent directory", { Mod_Alt, Key_Up }, GraphicsBitmap::load_from_file("/res/icons/parentdirectory16.png"), [directory_table_view] (const GAction&) { directory_table_view->open_parent_directory(); }); - auto mkdir_action = GAction::create("New directory...", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/mkdir.rgb", { 16, 16 }), [&] (const GAction&) { + auto mkdir_action = GAction::create("New directory...", GraphicsBitmap::load_from_file("/res/icons/16x16/mkdir.png"), [&] (const GAction&) { GInputBox input_box("Enter name:", "New directory", window); if (input_box.exec() == GInputBox::ExecOK && !input_box.text_value().is_empty()) { auto new_dir_path = String::format("%s/%s", @@ -75,11 +75,11 @@ int main(int argc, char** argv) } }); - auto copy_action = GAction::create("Copy", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/copyfile16.rgb", { 16, 16 }), [] (const GAction&) { + auto copy_action = GAction::create("Copy", GraphicsBitmap::load_from_file("/res/icons/copyfile16.png"), [] (const GAction&) { dbgprintf("'Copy' action activated!\n"); }); - auto delete_action = GAction::create("Delete", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/delete.rgb", { 16, 16 }), [] (const GAction&) { + auto delete_action = GAction::create("Delete", GraphicsBitmap::load_from_file("/res/icons/16x16/delete.png"), [] (const GAction&) { dbgprintf("'Delete' action activated!\n"); }); diff --git a/Applications/IRCClient/IRCAppWindow.cpp b/Applications/IRCClient/IRCAppWindow.cpp index 98edbc4030c..f2befab2c31 100644 --- a/Applications/IRCClient/IRCAppWindow.cpp +++ b/Applications/IRCClient/IRCAppWindow.cpp @@ -56,33 +56,33 @@ void IRCAppWindow::setup_client() void IRCAppWindow::setup_actions() { - m_join_action = GAction::create("Join channel", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/irc-join.rgb", { 16, 16 }), [&] (auto&) { + m_join_action = GAction::create("Join channel", GraphicsBitmap::load_from_file("/res/icons/16x16/irc-join.png"), [&] (auto&) { GInputBox input_box("Enter nickname:", "Join channel", this); if (input_box.exec() == GInputBox::ExecOK && !input_box.text_value().is_empty()) m_client.handle_join_action(input_box.text_value()); }); - m_part_action = GAction::create("Part from channel", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/irc-part.rgb", { 16, 16 }), [] (auto&) { + m_part_action = GAction::create("Part from channel", GraphicsBitmap::load_from_file("/res/icons/16x16/irc-part.png"), [] (auto&) { printf("FIXME: Implement part action\n"); }); - m_whois_action = GAction::create("Whois user", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/irc-whois.rgb", { 16, 16 }), [&] (auto&) { + m_whois_action = GAction::create("Whois user", GraphicsBitmap::load_from_file("/res/icons/16x16/irc-whois.png"), [&] (auto&) { GInputBox input_box("Enter nickname:", "IRC WHOIS lookup", this); if (input_box.exec() == GInputBox::ExecOK && !input_box.text_value().is_empty()) m_client.handle_whois_action(input_box.text_value()); }); - m_open_query_action = GAction::create("Open query", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/irc-open-query.rgb", { 16, 16 }), [&] (auto&) { + m_open_query_action = GAction::create("Open query", GraphicsBitmap::load_from_file("/res/icons/16x16/irc-open-query.png"), [&] (auto&) { GInputBox input_box("Enter nickname:", "Open IRC query with...", this); if (input_box.exec() == GInputBox::ExecOK && !input_box.text_value().is_empty()) m_client.handle_open_query_action(input_box.text_value()); }); - m_close_query_action = GAction::create("Close query", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/irc-close-query.rgb", { 16, 16 }), [] (auto&) { + m_close_query_action = GAction::create("Close query", GraphicsBitmap::load_from_file("/res/icons/16x16/irc-close-query.png"), [] (auto&) { printf("FIXME: Implement close-query action\n"); }); - m_change_nick_action = GAction::create("Change nickname", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/irc-nick.rgb", { 16, 16 }), [this] (auto&) { + m_change_nick_action = GAction::create("Change nickname", GraphicsBitmap::load_from_file("/res/icons/16x16/irc-nick.png"), [this] (auto&) { GInputBox input_box("Enter nickname:", "Change nickname", this); if (input_box.exec() == GInputBox::ExecOK && !input_box.text_value().is_empty()) m_client.handle_change_nick_action(input_box.text_value()); diff --git a/Applications/Launcher/main.cpp b/Applications/Launcher/main.cpp index 616df66b0bf..b28b6887f19 100644 --- a/Applications/Launcher/main.cpp +++ b/Applications/Launcher/main.cpp @@ -40,7 +40,7 @@ public: , m_executable_path(exec_path) { set_button_style(GButtonStyle::CoolBar); - set_icon(GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, icon_path, { 32, 32 })); + set_icon(GraphicsBitmap::load_from_file(icon_path)); set_preferred_size({ 50, 50 }); set_size_policy(SizePolicy::Fixed, SizePolicy::Fixed); on_click = [this] (GButton&) { @@ -69,10 +69,10 @@ GWindow* make_launcher_window() widget->layout()->set_margins({ 5, 5, 5, 5 }); window->set_main_widget(widget); - new LauncherButton("/res/icons/Terminal.rgb", "/bin/Terminal", widget); - new LauncherButton("/res/icons/FontEditor.rgb", "/bin/FontEditor", widget); - new LauncherButton("/res/icons/folder32.rgb", "/bin/FileManager", widget); - new LauncherButton("/res/icons/TextEditor.rgb", "/bin/TextEditor", widget); + new LauncherButton("/res/icons/Terminal.png", "/bin/Terminal", widget); + new LauncherButton("/res/icons/FontEditor.png", "/bin/FontEditor", widget); + new LauncherButton("/res/icons/folder32.png", "/bin/FileManager", widget); + new LauncherButton("/res/icons/TextEditor.png", "/bin/TextEditor", widget); return window; } diff --git a/Applications/ProcessManager/ProcessTableModel.cpp b/Applications/ProcessManager/ProcessTableModel.cpp index ffe20f210c3..df5ce5be99e 100644 --- a/Applications/ProcessManager/ProcessTableModel.cpp +++ b/Applications/ProcessManager/ProcessTableModel.cpp @@ -11,10 +11,10 @@ ProcessTableModel::ProcessTableModel() m_usernames.set(passwd->pw_uid, passwd->pw_name); endpwent(); - m_generic_process_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/gear16.rgb", { 16, 16 }); - m_high_priority_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/highpriority16.rgb", { 16, 16 }); - m_low_priority_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/lowpriority16.rgb", { 16, 16 }); - m_normal_priority_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/normalpriority16.rgb", { 16, 16 }); + m_generic_process_icon = GraphicsBitmap::load_from_file("/res/icons/gear16.png"); + m_high_priority_icon = GraphicsBitmap::load_from_file("/res/icons/highpriority16.png"); + m_low_priority_icon = GraphicsBitmap::load_from_file("/res/icons/lowpriority16.png"); + m_normal_priority_icon = GraphicsBitmap::load_from_file("/res/icons/normalpriority16.png"); } ProcessTableModel::~ProcessTableModel() diff --git a/Applications/ProcessManager/main.cpp b/Applications/ProcessManager/main.cpp index 38bfdde050a..6a350f9a527 100644 --- a/Applications/ProcessManager/main.cpp +++ b/Applications/ProcessManager/main.cpp @@ -23,19 +23,19 @@ int main(int argc, char** argv) new MemoryStatsWidget(widget); - auto kill_action = GAction::create("Kill process", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/kill16.rgb", { 16, 16 }), [process_table_view] (const GAction&) { + auto kill_action = GAction::create("Kill process", GraphicsBitmap::load_from_file("/res/icons/kill16.png"), [process_table_view] (const GAction&) { pid_t pid = process_table_view->selected_pid(); if (pid != -1) kill(pid, SIGKILL); }); - auto stop_action = GAction::create("Stop process", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/stop16.rgb", { 16, 16 }), [process_table_view] (const GAction&) { + auto stop_action = GAction::create("Stop process", GraphicsBitmap::load_from_file("/res/icons/stop16.png"), [process_table_view] (const GAction&) { pid_t pid = process_table_view->selected_pid(); if (pid != -1) kill(pid, SIGSTOP); }); - auto continue_action = GAction::create("Continue process", GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/continue16.rgb", { 16, 16 }), [process_table_view] (const GAction&) { + auto continue_action = GAction::create("Continue process", GraphicsBitmap::load_from_file("/res/icons/continue16.png"), [process_table_view] (const GAction&) { pid_t pid = process_table_view->selected_pid(); if (pid != -1) kill(pid, SIGCONT); diff --git a/Applications/TextEditor/main.cpp b/Applications/TextEditor/main.cpp index f07ab128aa8..05db2abd4f4 100644 --- a/Applications/TextEditor/main.cpp +++ b/Applications/TextEditor/main.cpp @@ -44,40 +44,40 @@ int main(int argc, char** argv) text_editor->set_text(String::from_byte_buffer(file.read_all())); } - auto new_action = GAction::create("New document", { Mod_Ctrl, Key_N }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/new.rgb", { 16, 16 }), [] (const GAction&) { + auto new_action = GAction::create("New document", { Mod_Ctrl, Key_N }, GraphicsBitmap::load_from_file("/res/icons/16x16/new.png"), [] (const GAction&) { dbgprintf("FIXME: Implement File/New\n"); }); - auto open_action = GAction::create("Open document", { Mod_Ctrl, Key_O }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/open.rgb", { 16, 16 }), [] (const GAction&) { + auto open_action = GAction::create("Open document", { Mod_Ctrl, Key_O }, GraphicsBitmap::load_from_file("/res/icons/16x16/open.png"), [] (const GAction&) { dbgprintf("FIXME: Implement File/Open\n"); }); - auto save_action = GAction::create("Save document", { Mod_Ctrl, Key_S }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/save.rgb", { 16, 16 }), [&] (const GAction&) { + auto save_action = GAction::create("Save document", { Mod_Ctrl, Key_S }, GraphicsBitmap::load_from_file("/res/icons/16x16/save.png"), [&] (const GAction&) { dbgprintf("Writing document to '%s'\n", path.characters()); text_editor->write_to_file(path); }); - auto undo_action = GAction::create("Undo", { Mod_Ctrl, Key_Z }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/undo.rgb", { 16, 16 }), [&] (const GAction&) { + auto undo_action = GAction::create("Undo", { Mod_Ctrl, Key_Z }, GraphicsBitmap::load_from_file("/res/icons/16x16/undo.png"), [&] (const GAction&) { // FIXME: Undo }); - auto redo_action = GAction::create("Redo", { Mod_Ctrl, Key_Y }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/redo.rgb", { 16, 16 }), [&] (const GAction&) { + auto redo_action = GAction::create("Redo", { Mod_Ctrl, Key_Y }, GraphicsBitmap::load_from_file("/res/icons/16x16/redo.png"), [&] (const GAction&) { // FIXME: Redo }); - auto cut_action = GAction::create("Cut", { Mod_Ctrl, Key_X }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/cut16.rgb", { 16, 16 }), [&] (const GAction&) { + auto cut_action = GAction::create("Cut", { Mod_Ctrl, Key_X }, GraphicsBitmap::load_from_file("/res/icons/cut16.png"), [&] (const GAction&) { text_editor->cut(); }); - auto copy_action = GAction::create("Copy", { Mod_Ctrl, Key_C }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/copyfile16.rgb", { 16, 16 }), [&] (const GAction&) { + auto copy_action = GAction::create("Copy", { Mod_Ctrl, Key_C }, GraphicsBitmap::load_from_file("/res/icons/copyfile16.png"), [&] (const GAction&) { text_editor->copy(); }); - auto paste_action = GAction::create("Paste", { Mod_Ctrl, Key_V }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/paste16.rgb", { 16, 16 }), [&] (const GAction&) { + auto paste_action = GAction::create("Paste", { Mod_Ctrl, Key_V }, GraphicsBitmap::load_from_file("/res/icons/paste16.png"), [&] (const GAction&) { text_editor->paste(); }); - auto delete_action = GAction::create("Delete", { 0, Key_Delete }, GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/16x16/delete.rgb", { 16, 16 }), [&] (const GAction&) { + auto delete_action = GAction::create("Delete", { 0, Key_Delete }, GraphicsBitmap::load_from_file("/res/icons/16x16/delete.png"), [&] (const GAction&) { text_editor->do_delete(); }); diff --git a/Base/res/icons/16x16/delete.rgb b/Base/res/icons/16x16/delete.rgb deleted file mode 100644 index 460cd225d1b986aa7672378ed3e470c3d3338ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZRe8fegDV3_)!fuTy5I3v51AnHM?LHeft7ZREAA0h_gPm~AAVB&Tagqji~h#>oxJKN0vqQD@ZR4;|f!JdO_}p^GEmxSuHj;%q|dJV1`fu;)8Id9zqPA z1(Jv1hzN99{BEe#Ldb*60EGdj2@o||wwN*?Jur;Vjj;5GZURg%h;C6smqq1cQv(u% aVO(y9nF5mUP=@g!G)OEejQIQq(FFhiK7h~w diff --git a/Base/res/icons/16x16/irc-close-query.rgb b/Base/res/icons/16x16/irc-close-query.rgb deleted file mode 100644 index f72eb4885fea5fc6a31b69ca5b490c929de44e82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZR;0d#b9{v%@?%CHK9^x50n|F^TZ`)_Aw|KHZu4r~@y#b|;cy>@nX|LyGU|J#H0 z+Wxn;w*GHrWkr-3F#Wc6cK>Z`ZT?$ZTm84RwEAyhZcb1?Os}1t?SC5^oB!5U*8eRn zEdQIEoBua8HT`d5VuIHUkbYZRh+Zp8%m0=Z7XQsadd*D#8yg${H!?E9s~;2;ATvOI zwSek1F*W&bY-0T1(9jU9S4T$&qzoqp=?CjIgSgko*!aJJp}~KBeSNTgoEniNKxTma zYG`BxwpWh?y)a`yW*8V4{MXmh|1YDJ4#qG!5RFX?Bo4zM{d#(O|8;eBzzm6^hgV@;Ifo!L~f&PDeJ-z=r zI=cULbwOC?zmBfXe_e1s(gnL6W-p9J)(^55WIsp`nAXt&n*%Zr+3g@XWIo6YkQhD; NQV+t&YCwDt1^{RK_96fP diff --git a/Base/res/icons/16x16/irc-join.rgb b/Base/res/icons/16x16/irc-join.rgb deleted file mode 100644 index cf60fe758d20c782a1951728945c338e75f92d3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZRe5-9LjXDIYnXDIMj|6k~@{vSlcj0UmM#b9zU8l-ncnKj6a{|gH&z-A!H{hyU% zh9U-&!)EWi0t>MHAUi=AWdDq8GZZnHeq?(W6k7hDUtsZnUcUMNIeF&)XXl##pP6I! zAEb9$mg)a#nWq1zW}2Y51DpMG^UP7~0@)AK2XYSx!|aFA$nKb(i|SX9`Y9Qx_QLeR zXk`5$H-q#b$^D;{Zj9n?m>i5o);}ZL6h$q_tchvF>z|&5seeMM(SOBs890X7i!J;> zVFd~^ki8%bV)vy$^jq#V0GolVACzuDYGCmL3M-I*L2m9xvlpfx<`!)BgY<&T1KAD2 zAhjTU=olo9%^efa!V07ghCyb)*dQ8NKPV1h_JU}b9LNnI3{nr%50fK>2I+@km_7ic C{3Cn- diff --git a/Base/res/icons/16x16/irc-nick.rgb b/Base/res/icons/16x16/irc-nick.rgb deleted file mode 100644 index e830764336973368cbaff5b5b2f9a20c4c1c8ff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZR;0d#b9{v%@?%CHK9^u2iT;y(;uy?PaF7FNY*g6MidW`OitSy>Tf224K#1H*q1 z2I;l5wEAyhZcb1?OfSezkX{f5={Gkw|8Ht)`rpLF1g{y$`ax!ZFi5|tndyIHW8?ou zMn-t`gMtFt43J(EQlmAA>#{Ufr4gTxv>x1>< z)QBVjG6SUF(8vgEuO10{Va9;WFfcIqudheEy)eBX8l+!OPw&63E+id-#E8KleF&@z z_A`Qy+bozGh@HCsb#-+A>*zu-hz)ax4oF-_2b8wp&H?GwH_-pDuc!APB(JNh`+s?+ z*nb^eo&UPvd<5k~*&uO{Jj?))evrK&8YcIkUlC%44n!}4uLBl`@j+&Q^?}WX_z%Pf NnGd327#km?7XW(B6gB_= diff --git a/Base/res/icons/16x16/irc-open-query.rgb b/Base/res/icons/16x16/irc-open-query.rgb deleted file mode 100644 index 615ed0ede494c93746127cc53984184e198e13b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZR;0d#b9{v%@?%CHK9^x50n|F^TZ`)_Aw|KHZu4r~@y#b|;cy>@nX|LyGU|J#H0 z+Wxn;w*GHrWkr-3F#Wc6cK>Z`ZT?$ZTm84RwEAyhZcb1?Os}1t?SC5^oB!5U*8eRn zEdQIEoBua8HT`d5VuIHUkbYZRh+Zp8%m0=Z7XQsadd*D#8yg${H!?E9s~;2;ATvOI zwSek1F*W&bY-0T1(9jU9S4T$&qzoqp=?CjIgSgko*!aJJp}~KBeSNTgoEniNKxTma zYG`BxwpWh?y)a`yW*8V4{MXk**sGW>^B;y`>TuB@{d#(O|8;dC=@6t2q}Ot<0oV)> z9~%bgLttI7pF#Ry7^WY_hnWG>1F=*0zpjq%e;r*22B`(*|8A&VL&F#RBVLFRz;fN32ausI0xbiwAp^n=uZ S^nx&mO$>(F38F#jL3#nNHuSOp diff --git a/Base/res/icons/16x16/irc-part.rgb b/Base/res/icons/16x16/irc-part.rgb deleted file mode 100644 index bfd08df556ecd91c62df6d86034376ae03ae67bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZRe5-9LjXDIYnXDIMj|6k~@{vSlcj0UmM#b9zU8l-ncnKj6a{|gH&z-A!H{hyU% zh9U-&!)EWi0t>MHAUi=AWdDq8GZZnHeq?(W6k7hDUtsZnUcUMNIeF&)XXl##pP6I! zAEb9$mg)a#nWq1zW}2Y51DpMG^UP7~0@)AK2XYSx!|aFA$nKb(i|SX9`Y9Qx_QLeR zXk`5$H-q#b$^D;{Zj9n?m>i5o);}ZL6h$q_tchvF>z|&5s$WJc{XYnU%z@bl;)5`@ z@B@VvD9k|WK^UaYz-uqu3}ik?KPcUR)WhNj6jmVrg52DnYV^N1#R#kyW(JG~xdo&j zD4b=?5QN= diff --git a/Base/res/icons/16x16/irc-whois.rgb b/Base/res/icons/16x16/irc-whois.rgb deleted file mode 100644 index 7e398663ffe3252e2ac6d09b77b5ae47ab7b65e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZR;0d#b9{v%@?%CHK9^x50n|F^TZ`)_Aw|KHZu4r~@y#b|;cy>@nX|LyGU|J#H0 z+Wxn;w*GHrWkr-3F#Wc6cK>Z`ZT?$ZTm84RwEAyhZcb1?Os}1t?SC5^oB!5U*8eRn zEdQIEoBua8HT^Hvw;YbqoDJrJ^xN7(^jcY3{Gt05$_82T~6*1DAe~ zJV+f#uc49Ae?vpV|9blR@USDK7o;DAL1q{j82s1QBV8{{zn-4ne_dTjIs}OkV>ifN z1l9$+8^PBBhXcqgbPQ7iu~YZIu8!`19bE_pv0?7e0g3DA{72Rg(yMQv|6gBE?>|Uh zS63I}Ze5-Ky5M{SF$bg$8)Oc`JYBHcVetl%2k8Z25Sv&G Kwjb;!h#vs1sT8~b diff --git a/Base/res/icons/16x16/mkdir.rgb b/Base/res/icons/16x16/mkdir.rgb deleted file mode 100644 index a32de690b742ec64965a1805428ad04e3714de4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZReGidtp|06alZPWYzBV%l8Kw?cl{{IKj$QY(iJD~JG48z1=bo2XfVDmxxL1OLS z|GtEo0pi2-O*!!9KQ7$$@%R7e@BjaUXpkOs{V;vqJ750q-1+i<$JS^6o4)@053&=4 zL3&{r#0O!J86dMj_Jj0y?|kvUYsd5d9owG%Z{7Ulf6Jyv{~Omo_}{Sh?*F!TKf(65 zzWV|83rH^rBkS+l@dB*3ZS$l5EgK*GZ`g4EfBov)|Jy(P{$IJ`2G}hni!S^Jg$GD4 z2qWw7-2Uu;>y{_~n>RlA-?aYT|N6Ce|JSa(`M+xUwf_}MFN5_L%sq$G{Dqa zzi#c_|1~Rb{;ynq{eSt=%l}IkUHsqpTg1IJj!iE}3?zq+(aiwKgVYj(L25_!qlN$|Oo$0PkQ$I$RNeT~4@eI( O9dSo*|d~N@d|Jr^<|F!%I|7-i?f!zyI3&J4%AR2}> z+*81Ifb@aP0nyrig>W$tpH!^vTL9MIy7Aus=Jj{~H?6z#zkbcF|8=Ww{I6MY?SIv> ztN$yOT>f9S=;HsheTzeaAZ|%w(P`y{+_LeL-|G#+NIk3I?vrb{?2kTvZ^M4&k?~1Gc ztCphbEt+@sf5F@{|MO>``ky=V1Q^5IUcLP4e-MV~z4pIy>6QQGOD=)^3$hoa7v$gk zStr5zvZfycyB!w(AicFKum7(G`xmD7!he|Ff;p%EgWQ}m^Thw`>Bs(OPCbgDA7lo| z-ijrcz+qgv;QW7(y&%1LNcMvCrcXYMp}%U`mH*|7A$m*ZpTp3bJq==S`lLf}y)gHK z;ufU0Y|(}P#S1`s&-{nkn=|A1|E%f9|7T7)@*iYx>coR6`eA0k!jc#oqz8rpk!kr2 diff --git a/Base/res/icons/16x16/redo.rgb b/Base/res/icons/16x16/redo.rgb deleted file mode 100644 index 6534f5c346161395a414483d588741ef3904c62f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZP=oIu;p&+k7Bli)R=d2 zoS@wxwJ?1!8YBk7AU=r3he2x4F-$#39L6Sxrc^&MVNb|igTW0je+&}05DGG|JOGYY BL^J>Z diff --git a/Base/res/icons/16x16/save.rgb b/Base/res/icons/16x16/save.rgb deleted file mode 100644 index 2de1a3395c04f17214bb8fb615420bad6cab5316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmebC^ZQQ`JPFfeH2awbAO%J*l zNG-A$h>whs<*>0qYLUYO#7D>2^dXCZ)FbmrWe=o&sNE=WK#KdJ`bp6OR}0lkvfUtk TAdDPua6<_&$kj){Sg literal 0 HcmV?d00001 diff --git a/Base/res/icons/FileManager.rgb b/Base/res/icons/FileManager.rgb deleted file mode 100644 index cea2d6efbcf06df9b80f62791e705804aaf5c0ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZP=1*0J_8Uk2Dz&5>~0fezi(pb#>4E@4k-N(!!R*iG>QQfazJ*# z?45Gp&3|GrNDsB*3S<_@ewe-8J750q-1+i<$JS^6TQ@)c-?Hi9|Hk$A|JSd%{l9kA z&Ht6luYs{`djB5^y$;rnY=8I87yr9UUB1p`O?e(OBP)KV_MkX zx&7Jy)-6x|H*b9KziIuw|MhF{{;yqm^MBRyYyT^tb{EV&_aB65VSgJqzCmGr|9>4Q z%vXZq`#RX)g)@)*Ppp{yKQb}+S1t#|_vQateVhJ=M?`__!-ju_g@uKaX+5aS1Lu2C`fpkXO6Pa}*Q~ttziRmn zaF`d)I0Cmju57~p?VH#9KeT7l|Mg2I{0j>Un;jMw267X~4P=D_vj6MX-u_<$3-iU7 z|CcPh@IR??GRXY@@nsYKAKAO<|KU9wzP z%4JvomqG0=oPQ1y-(g|@w{Knxw)fDkwf{jFX8(&b6C0pm@R%I?L3%)Lz-2!ut%1xx z1ob0hfz0- ph65g|y@$vajPYkvci2&LC9|~x}?uqaDU+-K0Kg}fVe~f<2|6r})|47y|(85lb znIOC0PI&wO|AhblpOruRe?I&C|5f3uP}~4gODjyQ{m|eCrvqfRjEu~G5C*vqM1wG~ zY>+ty1_u8Z-T3~0+s;@2H*9+Le}4CY{{^$QfWjYy!O;LR52O}^(b*vTKo}$rqCuEg zHpo1X{RY4P{g=FQ?LWh#r~esNuKLfgV;9J75Qf_iGLsgVSo=Y41!0gIKr{$b$_9ni zP_ZB6S6bkq;(t(lgD@xzKr{$b$|fcLL3YssQyTsZ3=E)r3NDvOWs~B6PXj+g#!qK+yN*oS|Yr$WOGuL&g7~cm-il7=Ypp zgh6bO7zmTY2AKi!|Fp{=|978z|G#MKwg2gh5B`sxybheF!Iduq1GxPKGM^ThSo=YK z1YwXHK<)-%5E~>0!sM_)W`Hor4TXh;|HH$>|NHs*q4*sX2Iyvk^nftBILI9!OsqJ_ z3=jsXmz0zQ+YjP{>_o;Od3s=w-5`6A?FO+yVjzEkFghEg2ZTZ5AR2_Jzy?_h#~|}S ic7rfF8)P2{gTz5J2vdO#w;RL&nMY3yvU3zOFaQ9#;**L1 diff --git a/Base/res/icons/Serenity.rgb b/Base/res/icons/Serenity.rgb deleted file mode 100644 index e351698cab653331979f016f80fb936a2ed434d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZP=1tf=nr{}i+FuZ5a9)`@!Op?u@L<7if28QDQjEr9YLFUlYevsWDJdpN->;_?a z`yb?Q5C+)|!UJJH$X*zxr~M#*gD}i)5KV9UL3Sczdf5;1HwYu!4Pw*Nevp0Wm>%|n z{0+kBc7ymJ`!h2${}Y2jm)#)ynV7)kAE*q(iH(em{(~^NcH^@jYA#N@85kJI zwj1PLe0GEUPso0dJP3o#A{B$|24Rprn7HUa149waZ(#p3Gc$u}ke^`~WH+d80%3CO z$F#TjKSZqPKQl9`{V+RWG{|l!W-u}`BFTDhZ%F+Pu?uD=GEJQQAWKQL8>9ym?rdyc z{|RA`|6u+_ra|IROtRlW_7lR<(a~TfAUlxlg|VUHG_f0GF+Tf2c0=)i*$;9fIq?qC zM-0a0f2hAf`I2US2e}WQ{UCW-`W<9GHv8%2cYOAPEa>*$)z@hu=Z= dAp4)*en+z(#06t|`5j~#lK(+ma9$_ZegHPcj|Tt% diff --git a/Base/res/icons/Terminal.rgb b/Base/res/icons/Terminal.rgb deleted file mode 100644 index ea24005df56d4b8b542fe8ff8122ee358f9e821c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZP=1%o04;^N}|(-R|m8f5Rvl`H?#6NBu8xdFrm*$txUfhSI!2o7s(_A@Xt{0CzO zhW`vu%*4d}pNX02KMOOC3y$IJVl4`eq#$ZmoELPA3SMMOpZi;0Q+7nczK zFDW5Ol>H!o|NH;{KNBO&UwM<98$Ij z{udDz0b_A7nB9nUE+;GZUtU4(zoG)j--`cLRFwa#si_gPA5^};(i#^x$lpBw!C}q^ zDqHye3xLv^kkEf&5uyL0!Xn^u4HVy!5+J)l{+9g@vRh7G;lF}B$ZjRD-Kwf;|J5}# z2-?ri0m@?_e?!VtNIK{J&j-rm@c0ImEh7I#MMeKhh)evJ5SRQfEiL(92Aan}>0C)s z5ggxOe}n8+Q~R%}sY%d&P7cohpmL3en;YzJUS3{sc`hg@04~dggkfci7`RN80Qp-= z^1rN%^nY17S+JiK6%_v~DJuO}QBnbixrT=Ne@!jT|JvGG1nmchUq)8uzl@yRe>nyD|BCV;e=Gi1Q3l1g>VFM& zwf`DgTK{#lwf<}CXcM%biyKszaR2Ay0hKKR|M>+$WttGUTm#uH3QFgoG8N=+X{rA* zGSdHLWI_Ix`>y~>Yl_PMm6cWhL*iTgzlMg^e=TjT|GK(5|Mm3r2-**?O9TX0=<5F0)6@NL zXlO{3{rvoV{{;j=c^s6#L3WG&2j?*fNLrHwmFLpZ|K&mPEhqn95oA9oe=9@mR#R91 zuc4{=UrSs2zqXFxeO?-A$BV%DgIYcg`_n#bxejg5@{o0*ytv|mU7Qhy7B>u<6D;$q_eB|vQlX{rCR;QTEMj&D$1qO7d=Us)BJ z*3{JhYl8g^No)FgdjAa!4E`G%8UHsnHvVsBYWCmU!h)dv1KIurwF~KmLH>lbe?c^e OPfrZ8a}*DJ2mkHlM5V*XQ;4KfRtoiK5b8d})h-roMdt*s60 zADCU}w4a|J11;?bxdCK8y1g(y)c!v&U%vc5bLPzdAR2@zWp{RV{x2#j`cH)YU_1X) z5fl^@{2xgBLH;Jk{(t}e{fFW||Ni|W6@&GHf{|SNL3*L~gUup`4Kjlg`{&P}|DPNT zb1NnGgUtB*_b*v~hv}olevn>}8z{jbGe*O|i0u4NN!Ww*j)wn#aJf%T`3DL+P#98z zL1v7m|B;#gL2(blAU3%eZ$|3O@0X^>hN_Ve@mUr|xmbx<{r#;>2KNJpj56TKfP1 diff --git a/Base/res/icons/continue16.rgb b/Base/res/icons/continue16.rgb deleted file mode 100644 index 0dc0f08b92c6763afd44fba82e0b2f39eacc6459..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZRe0Vr>n|DRlAL3$4!zxN+RlVb)*-`4FX2Zer+ThK8fKY`SP+>Z^=hsJT5nY~g#Dzh2VRJvS TdXO4i7+o)nkE|XhMh_YQW*9iH diff --git a/Base/res/icons/copyfile16.rgb b/Base/res/icons/copyfile16.rgb deleted file mode 100644 index 3d772ced7ca8c49c334ea3a5e89e6a3a955b48ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZR;0{r~^{$s;flwuVE>HUueKw=<_RRaS914s@TgS1baIPpISgV-Rs-Me>#-G$8z zkUU5o2qUvWd=LhSf%Jngh>dOrNDQP7WFImc#0QCk#LzLa86Y{3IuJ%?gZS7mNDVgq zAp1aaAUz;9HVl#jsllcnCI_PNVO;t__JQO;dO>V#7$gT$Gu-V5`4bl=r{txA1r9kp2DJfXh!1ROEVABi|2Vq?LL3&_jfY|7mkY12_n0}C2 z5Fds?d=SQGH%u+e3>Y6o6RQ`b7N#Gh2gC=_AWV$iAoU;&GXumXRWC>nOg~632$Nzr zNIwX}%pgavQB>1^W#?pYdV;Y*W)g!z>a_z(!TLe!(fJ@TTo|Snn|@?5Z2Dn(VR9h% zgV-Q(5Dmik%mAqa$%E8^FeUmy<{;|_@j+&SXqY&NkB&idFpMk*69du6;vhBv7(lyV diff --git a/Base/res/icons/executable16.rgb b/Base/res/icons/executable16.rgb deleted file mode 100644 index d6232a6530172bb12f8618dcfb7adcdb833446a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZP=KHxtC0|O}--RJ+cy?Xx}2TlEN9X;p2bIRiX-npy(2bXR5A6>uWe^UGY|5+1` q{V$q%7G?*AeoF2CPb7fagJD0B+Htynr0a)4a->p3X^ diff --git a/Base/res/icons/file.rgb b/Base/res/icons/file.rgb deleted file mode 100644 index 7c71465d85dd126315fac4c64a7e940432a540af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZP=1w$zW{xdKzkb3^`@AKpRy4R*^vy2d}) zuh4KrVZ*{3ka D8XZ%e diff --git a/Base/res/icons/file16.rgb b/Base/res/icons/file16.rgb deleted file mode 100644 index ca21f9272a0d43af556160142d338c57851c29e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZReBJlI``;QG1YXwN}e>4CR17Tv!0I36MpEz;ie-H+-L1Mdi?*_YzkQpGgAU((! zBnHwC!XP$2GeGhny&$_m7{msNp<`TTfYgEX;KLv_g!F^##)d)W5~Cla4i_dyKQ_BT nVjwe#(GOCG3lpOsWEVCJGLsnnAa%Gft@VSt=;gS-!SYypHb+40Yj+W z#-acDLGCb$fVqKE8lNBj^Bac#=QD)bX&m-nzzF1?u>br<;s5!KBmWDSMEn;pjsjzT zlc@jvCei-|Or!q`n#TMWFpd2$0H$O93!26K7ch(aFKCwVU%)&biW6XN$K{6q{2;#@ zg@VHY6z=@Spl}HPFJKJ95W7M43YbLw2Vs8G=>GyHF<|@oVRnPu0k%K>zaY$Ri-iAz z7770aEE4g#0UXu>#$o^YjKg5+Xi1}o1H}Kvkn|Sbd+2{y_o4s6od^C0cI^Kj*uM9F zK=bbZ{>?l7`!sC(?^VC$zeml+|L)c6|GQPJ`R`J;`oB}j^8fZlOaI&EFaB?xJO96B z*1Z4bnX~?zrA_~DoHFIVQPQOUdU5^#^<(;A{z7)ce~{lnc`vNz$p28N-N7CE{s*@1 z`S0Jd>%V`~j{m+5TmO64Z~gBHvb$>if7i-2|6NK!cCY;JP_*p7ZQi2));SCQTV~Jw zZ;>(kzj^BP|0XF@{u?Jv{;wb3|6eb*@4t3b&ws7(4sf z&;P)d-T(btcK-Km*ao)St9BFE->y|_!FD^AtoZL(wDiAS{^I{OxeNbWf$g64-z8<+}ea<*WZYm#+BlSiJPVZNZ}dHhCbs=l!?Ln)BZ*ZN`6- zl&N5U8^%xkuNMQdyZgUZWaod4u=fAzAuX8pL-TnMD9+mucKbH$0Q(zcHz>Z{E7tvY zEnoBBv25jk$KvJx?Ftq{?FPj;$nKe7yN!}2|2K@E@LxZ!|G!QQ$nK8+n&A+;Rf3x^ z?Kgq=Kd58h|A5xr|NUAZ{`RWd`X3bLp4A)wyH>6T``f7u;&1zcCI4;n7W}u$p8ww> zbIyPB^jZH+)24y_ZIl2C_x}I7(LMjQBfI`IiLZ{jV0(^j|fw@xPLPE!Zxk3;-_QKKY*2j9{coND%V(4S8zoEzr#BtA zzae(31~>m#32OYWk}8%rtezf8*pS{|ysC`E0^}z1SXbTGxyK#d+(0b&%Zw_5YRp>;5bFR{dA- zsRY}F?0-<%3i3a=e5nJ4`=FlDO3N0(z<@a#Q(anP`g3#4YnH;-wpqjKz{dw*e&Z- z{$Iwk4AXv7NcelyZv5{7E?3w6cP?G?-?0>w-j;#O7u%eL|E;n>`D`{kkAuopgZPR6 z^<#Vg>qK?`*N*7=5AwHKNDCys{Tu!(_*MT`^sV|Y=T-4v*1i0{lv@dg{jl)&s9FEt zwPNjm=W;~33d`fx;Pf^dT(*JA7o+4!{|yr%Wg9r3MRfev2ygqZ7SjA*HK_5wazOom zMZenr3O?2U<-9BY%X*gmmvJlpFXdWtP zU*4e6j`Q4@Hzm!Yie{skB|6-1LV7rj>pP+dxSj?#y6y{4IVV=9-za_X_ zoeeHmO_HbnH%x%!Gf-OB0ofhV@n1cp^}lLR(|;9EI`^;rujp6(U%?xa-oSRdLhP1s zF8D9*ko#ZEJ_l?Uvi$<)abPj~!o}cn)h2hre=CsP86dksZHTG=;bnSE?|+?0NS&e) z*79FH1RCf5wf_~sdA#bstXCO0&ZS*T{!6+Pg2PqL+*bO`)sgXDE6B|{BM`H z_`h`yD35{4m)ZZ#)2IJ8NuKuKIC1iSgE&YY*8#O5BHI6}gW@|BlGc^{>;EhI*8G?E z1=(HkU&f>Kzm$6sIIW307yK7<$ontmkn>;IKKsA0T^73iAg6%yxJ}-I|CU*h_KR66 zq8>L$0F|qd@�ng7TRE`F&Lx=W(J52(ht+uz4PV& z&Yds+cWiz3zjgED|1Fyy{%>4=|9}0O+y84<-TYs<{2JJ=*z|YreDS|)$MgRk+n)Y! z-TdT#%ce*F8`nSh->~-X|C&{|{#P!${=aO=6`cCJcDw-VZQK0lf6K;4{~I>k|6jlQ zHbn1=8~@9fUjARQ=mJjto!g)NZ{70bfAhu%|C`p|`(MBI?*H1AH~&{HzxKZZs<&Y7 zIh^|2!2Sif`TqYpkegS6{Cgd2Z|S0o{|n}x{hv4I6i)rk8z25}Tz3!bUy!|(%R&CV z{J(h7h5tqK&i>Dxb?SfS^kX>nH?0GO^PT@SD{uX;T7CoU=F){1{}+Pnoq6hi){Nu- z)2AH9slR^h?f*3}H!r^YzhvQs|Aq4)ZqA-@?0?3T!~atz?8ne=moedg?W!AKT)FJ( t|1y}~`RD%U%{uizYx=SO=~IvVPoB8{e?rf06#bxd07^roV33}{fB_{V$l?G1 diff --git a/Base/res/icons/folder32.rgb b/Base/res/icons/folder32.rgb deleted file mode 100644 index 8bd9289ead94b33bc60fe274c4e631c30a9dbecf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZP=1%oOCY}5Py;KQ_ZEXZE%z_S0^0cHO|v`#?Tf1QBR|Jwc~5bRg{AEbsBZUC99 z4YCVtcPYf)fRg{(AnafKU)!$;j6v!s!2fZ%9b~3XU@64kfiQm;|JMfF4YI%Rzm{L& ze=XmF|60EJ|FwMb{%d*XLUHzgEiVwx`mgDk`Cro`^S`EN#(zzZ^#7XfY5z6dQ^8on zEd^)zf$WF)zw|$t28Vg^|0xIF{GYu4HPtbCIM}B5L&6+vFDSl?!FGb|pS1tg|A~8F z{hzSs`TxG%&;R%Cc>2G4`;-4&TOa@L*z)jy+ot>fTQ}bQ-@N|L|E6`f|2M3;`M-Yk zjsLYPul=uHe)WIVvMc{9mt6W^zWCz*vW4gWmn=B@KeT=|N?d^auj3C&YoIVM0{a_e z_vC%A|4-ce@_+xH=l^?mJ%if)_yKh77hJ<;|%4`3t zmS6c_xeR3YrT=A%A^wKjJ?GT_{MjdQ*kANt%dgI0|NXn3!~Na0?GZT4Vg3f$ z-LwwkZ%|y=l&PXKl{HB6yI}B{m+|q;(zXpWB+qz z9Q&U&?Fd%;;pK`?F4+H_+aCSz*b4D?E0Vt(*4~7q^Hm_bAz@w#xBEOK%wcxV2HAb` zf6mNf|Ffna1>2o5fiT2v3Czv`?b8X z{%d(={@3!z0Q(`v&}jn#gb-$C^z$p0XJ*R6)e^$JkA0xi>^{w|&m3iH$d3!(nbopl15zm9^_S^DII z|5HKn4YIor;_rl>J^vGM_#aYdXZ+XjNCW%74pgpy%QRS7e(8VNq6^?U3{tK@{GB%& zQl^2@87ObV(m34TeS80d{0zpuAp3Fn-viWU0JRq&_SdYu`oC)V)&HQp4a#5O_+9`> z=Y@06fXg&cT!YF}P?-j@J97#s%n$wt*$ql(Ng%s>cZ2;5iuZ)x-TxDNaoL{+_B*J( z0t$avJp!t?%aO{{LQpz~mZv#0kN?k^ehiYgCnM}m>EHK12^8i%yZ?j2JP}IcwIAM2 zN(P5NyewY`N#~$?8?`(I*?shX=CmXK!D)OF%-{R}C-&_H`xE46kbhxr0I@+BOZ(%$ zhFj`?4Y%a~8txGLLH>r6D~PfjRHo(4KJg#qZ%}-L>;}bmIy9Z7^ds2~@-ryxK{N=1 x!yYs5!P;V=Hc(jon*T5yTEFH$^)YI@3uZTr2DJl0?w}DyY4gGC9Hj>?1OU1uN7MiS diff --git a/Base/res/icons/gear16.rgb b/Base/res/icons/gear16.rgb deleted file mode 100644 index 032dd46ee0a4ee6a120261fadb859fe8a012bc21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZR;5B@VSFn}>dyw>PL_s7zXHEk57UE8X*>puvS<3*4@!78r*APi!YVg^V(NFOo=i4kK4NFB01WHv~SkQpE~FbvZR f6O!K|jb3Fifn!hnhM7pwdQP diff --git a/Base/res/icons/kill16.rgb b/Base/res/icons/kill16.rgb deleted file mode 100644 index dd93ba0b50a25e58c60a439720e9df985766940b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZP|188cl{SU&N3=RKD)xKrRmj83+%pprZOfNb5VR}LChGAmek4rBx`eAxuZYITU zWW6B$APmwEvKNH$h5b;}s}j)-P8%S9B4e1J@%a~|SHLFYKcBuoiWxAy_`(aO7o;DA wVP=5zf-tFiVeW+K#it)+7syT!2C-p!VKhiD2*dd3G)NB&qsxK#`1FG00eSuEqW}N^ diff --git a/Base/res/icons/link16.png b/Base/res/icons/link16.png index 83044421161d1c9e6b7674b9d1a83b8814e6ae39..c8b03fc3b30ddf10eff4323e543dc0d408ac9dae 100644 GIT binary patch literal 5356 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 B;&lK3 delta 1316 zcmaE(`I2jbM7;nT0|SG9va%8b1M}0Wkcg6?#Bzm#qWrYXoK%I9%7Rpd)QZeB28N1T zd#7hkd#%CK`afHAFN=zy9=q|J%hoTRerHWiUla0b>8`V#2YH3;frx9y`_24ZSUs2oT2r>bJixQJAXd}Jlv;t*6P;d zc?QQbTyC#CF8llayryXr4l>s-cfNl8y7u{(1+|L%9jmte=>DgD$%NIG?MvST``63= zzR~+z(pyrr`_|3h#m{H|JM>&k-O}pA*SO^Ox%RQ!41DWj3 z9Z~$I!KtdG%Jpc4(h0LEhdNm$tfSY>*;zch^dXb@S`*F{u3Z}9PU$Q?DyfgQEv_$^ z&hSBWg)8?V$BWv_^=-EM7VkbJC>`F{@*+_pS?A}93)YjXzM^A5+h0i~4odhkk8n);Vx5Lb$?DRK40fu7#oTjxujT z^A#4IY}rTZH##Iv`OPgoS1BG-ax!&&UCNB_2m8&l_@r_Q4z>#7$ynTN*CvtN zW$78Tr!dyZZrO~WQ-Tk^|)9wky zEz_T^FHmlna9_cl`L6U6xt+F)!#@96blEdw$wPsw8k_3ZFTa;GZN_o)r>AG_oBbj0 zuf4>pdrxm3d*5(7s{1^D_lxj5J0*7ItlwDkwBuuT7UQXO? z{(r4ff76A{CoGyDNX}C)sgs$oo@vUxQ#WPL@J_Fm`*QI1n>PN~Pv19xS$h8J&7(W* zZn0~2Tl`Y(+-G%*e^cqzFV7uIX7hjXOqy}O>&^dj6UzQ|H*2@_Au-P9{!v3;joDJsc;07uKkM;OXKR;&J?J=tf>j4j#q;;?oh=lbonW(*&aS6sID(Of#^+M?I@s^9Mo z>gRNLbg%mT-`e^f!($99wqA?cE>Jql;+RD89TvqFfkX2+M2l=)dmda9yuOm7=$z&A ztt*l_x3ea!>@hqhQPyxRDw{XqoaOU7_ZKd>ExTZ?TT+Qn=hkac**j|%F|4~f=W&pi zrmJT5+O1{W&pKR>n|ROKSbWa%d*!tx_9bD(i13K2qN-9xf!ml;cR&KL!Q{22WQ%mvv4FO#q%9h6Mls diff --git a/Base/res/icons/link16.rgb b/Base/res/icons/link16.rgb deleted file mode 100644 index 11e968d17fdfa2188648da59488aafdb541b6e63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZRe6Ii)&<$o9^)k=`Qs;a90FdPsN@Sj*SV0vNdNihRmFR~fLxB;er)v8rsx09+L zq#mX>BqRjvXOR2x*$uK2gwgea^noxTy&yFpjBYPT9|(iY#fCw4g7ksp(Dj1E@L^=V zAax*fK>h{M`0NC!1z~jkATbaoRX<2QNFNA;*u>ZkQVYT`H-PkkFe!RL`au|^2Zlj> GdSC!>@30^M diff --git a/Base/res/icons/lowpriority16.rgb b/Base/res/icons/lowpriority16.rgb deleted file mode 100644 index 5222fafd6670ef1bd36bc61b60f480641441c5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZP=rht#j<3BPc)tex_f?QSqK^VjyDf&Tvg<+82K^Vpd(S*VQqz0r18wSY{(hrgc gsYBNf5(CK*i$UsPW`Nkl>O)os(g(uGV#AFM0Iw=WUjP6A diff --git a/Base/res/icons/mkdir16.rgb b/Base/res/icons/mkdir16.rgb deleted file mode 100644 index 4e0073f4d521e7667cd7a82e22dbe94b80f2f3a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZP|0W|&i{|A?H+w}hbgmBZ3|6n!fW`OkBWlZ?59Z-rDw}1Z&7KiBv@sZ5{>91XN z+y9%^-T&Xb@!|ir&5!>#eg6;E1JZ{B zgTn))zjE2t|1~Rb{;ywi=YQk6d;eQDJ^J6e<;nk!ZBPGq?RfqlWG~1J5Diifx1522 z0mLs`eEEOn^6UR=R^IyGu=ei%#`Pd~Jow+X`O*K5@BjXH?tBS$3rKCpkAGl$VP=5D zN)}%DU%vSA|ElFT{@1R&`M+-M-TzJN@BMGt_~?J@<|qFIeA) MCi=IQ&P(ATeUi0I5aR3u1%BhKhcWJ3;P6#vrj#O#Ki5 E0AvnHApigX diff --git a/Base/res/icons/parentdirectory16.rgb b/Base/res/icons/parentdirectory16.rgb deleted file mode 100644 index bca26259a8fee7680f8d4dca8a7ca52b6c38d872..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZP=#Gp1z=0Ca41L<8^XZs&SlWGP?4@mE{Ox6D&4B``O21qTkUXXqe28k0g1EdC< zUXXqe2Fc?y10;`(VS13o@aadE1L=Y3M;0fRJ(%=^+=7gW@dHRb$p7dVBu=b;kXme* bNc{}cGF35fZI}#$-!xT%Mu61e!pNEdFt(8g diff --git a/Base/res/icons/paste16.rgb b/Base/res/icons/paste16.rgb deleted file mode 100644 index f66bc3821a01dc096ba763f9a99c64a515048037..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZR;1A>Et|AR0dC2%QiuipR27^H8*h7JEg7{o@F1F_*685kHqeCL$K|6v%U9;9#1 zoH_qt7$gRh2hkusFf%}GkQfYu)MCRhc@PcKgG)b1o)9La-_OtQKQ;_Aml*y3(E!Xm zkQv14pEz;ie-H*41=7EJ_inJeh}93$2g5M^Ff;IlA4n}oAINSH2C+e6=on-M$Soj0 zA!Cp_kRE&(q=t}wklolY$XsIdgVf=|F#Rw$fcyc&AUTjeY<7dhKyn~8AidZyNDib1 Q9|ozxrWYgzk|PEK08xDmwg3PC diff --git a/Base/res/icons/serenity.png b/Base/res/icons/serenity.png new file mode 100644 index 0000000000000000000000000000000000000000..b128888c1e20abab25b5d14807c810ae37462db0 GIT binary patch literal 2114 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 diff --git a/Base/res/icons/window16.rgb b/Base/res/icons/window16.rgb deleted file mode 100644 index 4353dfe6aa7aa7bc5d159ca2655bcf1897b8d9fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmZP=Jm5bA0|O}--R1way?Xx}2TlEN9X;p2bIRiX-npy(2bXR5A6>uWe^UGY|5+1` v{V$q%7G?*AeoF2CPb7fagJD0B+HtynR6lVcK&$YFnhT2`LNt2(4+tLsPb-Yo diff --git a/Servers/WindowServer/WSWindow.cpp b/Servers/WindowServer/WSWindow.cpp index c2e1435efba..385ff24d1ff 100644 --- a/Servers/WindowServer/WSWindow.cpp +++ b/Servers/WindowServer/WSWindow.cpp @@ -9,7 +9,7 @@ static GraphicsBitmap& default_window_icon() { static GraphicsBitmap* s_icon; if (!s_icon) - s_icon = GraphicsBitmap::load_from_file(GraphicsBitmap::Format::RGBA32, "/res/icons/window16.rgb", { 16, 16 }).leak_ref(); + s_icon = GraphicsBitmap::load_from_file("/res/icons/16x16/window.png").leak_ref(); return *s_icon; } diff --git a/SharedGraphics/GraphicsBitmap.cpp b/SharedGraphics/GraphicsBitmap.cpp index eb41c041c5d..b48cdf853ad 100644 --- a/SharedGraphics/GraphicsBitmap.cpp +++ b/SharedGraphics/GraphicsBitmap.cpp @@ -1,4 +1,5 @@ -#include "GraphicsBitmap.h" +#include +#include #include #include #include @@ -27,6 +28,11 @@ Retained GraphicsBitmap::create_wrapper(Format format, const Siz return adopt(*new GraphicsBitmap(format, size, data)); } +RetainPtr GraphicsBitmap::load_from_file(const String& path) +{ + return load_png(path); +} + RetainPtr GraphicsBitmap::load_from_file(Format format, const String& path, const Size& size) { int fd = open(path.characters(), O_RDONLY, 0644); diff --git a/SharedGraphics/GraphicsBitmap.h b/SharedGraphics/GraphicsBitmap.h index 9819b331094..26f3efa396b 100644 --- a/SharedGraphics/GraphicsBitmap.h +++ b/SharedGraphics/GraphicsBitmap.h @@ -14,6 +14,7 @@ public: static Retained create(Format, const Size&); static Retained create_wrapper(Format, const Size&, RGBA32*); + static RetainPtr load_from_file(const String& path); static RetainPtr load_from_file(Format, const String& path, const Size&); static Retained create_with_shared_buffer(Format, Retained&&, const Size&); ~GraphicsBitmap(); diff --git a/SharedGraphics/PNGLoader.cpp b/SharedGraphics/PNGLoader.cpp index 1fb246e8894..f248571cfb2 100644 --- a/SharedGraphics/PNGLoader.cpp +++ b/SharedGraphics/PNGLoader.cpp @@ -152,6 +152,7 @@ RetainPtr load_png(const String& path) union [[gnu::packed]] Pixel { RGBA32 rgba { 0 }; + byte v[4]; struct { byte r; byte g; @@ -162,21 +163,29 @@ union [[gnu::packed]] Pixel { static_assert(sizeof(Pixel) == 4); template -[[gnu::always_inline]] static inline void unfilter_impl(const GraphicsBitmap& bitmap, int y, const void* dummy_scanline_data) +[[gnu::always_inline]] static inline void unfilter_impl(GraphicsBitmap& bitmap, int y, const void* dummy_scanline_data) { auto* dummy_scanline = (const Pixel*)dummy_scanline_data; - if constexpr (filter_type == 1) { + if constexpr (filter_type == 0) { auto* pixels = (Pixel*)bitmap.scanline(y); for (int i = 0; i < bitmap.width(); ++i) { auto& x = pixels[i]; swap(x.r, x.b); - Pixel a; - if (i != 0) a.rgba = bitmap.scanline(y)[i - 1]; - x.r += a.r; - x.g += a.g; - x.b += a.b; + } + } + + if constexpr (filter_type == 1) { + auto* pixels = (Pixel*)bitmap.scanline(y); + swap(pixels[0].r, pixels[0].b); + for (int i = 1; i < bitmap.width(); ++i) { + auto& x = pixels[i]; + swap(x.r, x.b); + auto& a = (const Pixel&)pixels[i - 1]; + x.v[0] += a.v[0]; + x.v[1] += a.v[1]; + x.v[2] += a.v[2]; if constexpr (has_alpha) - x.a += a.a; + x.v[3] += a.v[3]; } return; } @@ -186,17 +195,15 @@ template for (int i = 0; i < bitmap.width(); ++i) { auto& x = pixels[i]; swap(x.r, x.b); - Pixel b; - b.rgba = pixels_y_minus_1[i].rgba; - x.r += b.r; - x.g += b.g; - x.b += b.b; + const Pixel& b = pixels_y_minus_1[i]; + x.v[0] += b.v[0]; + x.v[1] += b.v[1]; + x.v[2] += b.v[2]; if constexpr (has_alpha) - x.a += b.a; + x.v[3] += b.v[3]; } return; } - if constexpr (filter_type == 3) { auto* pixels = (Pixel*)bitmap.scanline(y); auto* pixels_y_minus_1 = y == 0 ? dummy_scanline : (Pixel*)bitmap.scanline(y - 1); @@ -204,18 +211,16 @@ template auto& x = pixels[i]; swap(x.r, x.b); Pixel a; - Pixel b; - if (i != 0) a.rgba = bitmap.scanline(y)[i - 1]; - b.rgba = pixels_y_minus_1[i].rgba; - x.r = x.r + ((a.r + b.r) / 2); - x.g = x.g + ((a.g + b.g) / 2); - x.b = x.b + ((a.b + b.b) / 2); + if (i != 0) a = pixels[i - 1]; + const Pixel& b = pixels_y_minus_1[i]; + x.v[0] = x.v[0] + ((a.v[0] + b.v[0]) / 2); + x.v[1] = x.v[1] + ((a.v[1] + b.v[1]) / 2); + x.v[2] = x.v[2] + ((a.v[2] + b.v[2]) / 2); if constexpr (has_alpha) - x.a = x.a + ((a.a + b.a) / 2); + x.v[3] = x.v[3] + ((a.v[3] + b.v[3]) / 2); } return; } - if constexpr (filter_type == 4) { auto* pixels = (Pixel*)bitmap.scanline(y); auto* pixels_y_minus_1 = y == 0 ? dummy_scanline : (Pixel*)bitmap.scanline(y - 1); @@ -223,18 +228,17 @@ template auto& x = pixels[i]; swap(x.r, x.b); Pixel a; - Pixel b; + const Pixel& b = pixels_y_minus_1[i]; Pixel c; if (i != 0) { - a.rgba = bitmap.scanline(y)[i - 1]; - c.rgba = pixels_y_minus_1[i - 1].rgba; + a = pixels[i - 1]; + c = pixels_y_minus_1[i - 1]; } - b.rgba = pixels_y_minus_1[i].rgba; - x.r += paeth_predictor(a.r, b.r, c.r); - x.g += paeth_predictor(a.g, b.g, c.g); - x.b += paeth_predictor(a.b, b.b, c.b); + x.v[0] += paeth_predictor(a.v[0], b.v[0], c.v[0]); + x.v[1] += paeth_predictor(a.v[1], b.v[1], c.v[1]); + x.v[2] += paeth_predictor(a.v[2], b.v[2], c.v[2]); if constexpr (has_alpha) - x.a += paeth_predictor(a.a, b.a, c.a); + x.v[3] += paeth_predictor(a.v[3], b.v[3], c.v[3]); } } } @@ -274,8 +278,13 @@ template Stopwatch sw("load_png_impl: unfilter: process"); for (int y = 0; y < context.height; ++y) { auto filter = context.scanlines[y].filter; - if (filter == 0) + if (filter == 0) { + if (context.has_alpha()) + unfilter_impl(*context.bitmap, y, dummy_scanline.pointer()); + else + unfilter_impl(*context.bitmap, y, dummy_scanline.pointer()); continue; + } if (filter == 1) { if (context.has_alpha()) unfilter_impl(*context.bitmap, y, dummy_scanline.pointer()); @@ -364,7 +373,7 @@ static RetainPtr load_png_impl(const byte* data, int data_size) { Stopwatch sw("load_png_impl: create bitmap"); - context.bitmap = GraphicsBitmap::create(GraphicsBitmap::Format::RGBA32, { context.width, context.height }); + context.bitmap = GraphicsBitmap::create(context.has_alpha() ? GraphicsBitmap::Format::RGBA32 : GraphicsBitmap::Format::RGB32, { context.width, context.height }); } unfilter(context);