summaryrefslogtreecommitdiff
path: root/Userland/Applications/FontEditor
diff options
context:
space:
mode:
authorthankyouverycool <66646555+thankyouverycool@users.noreply.github.com>2021-11-29 09:07:47 -0500
committerAndreas Kling <kling@serenityos.org>2021-11-30 10:51:51 +0100
commit922e80e72bfff6681115ffbb8a908cfc74bd355b (patch)
treea325f402ce0499c72bb5b09f51555282455909c0 /Userland/Applications/FontEditor
parent56a8a2b4936c238364e000ccf3b482a412d72236 (diff)
downloadserenity-922e80e72bfff6681115ffbb8a908cfc74bd355b.zip
FontEditor: Simplify start-up
Previusly a cloned or newly loaded font was moved twice from main to the constructor and then from constructor to an init routine where it was finally used. The unmasked font is now moved only once, directly to initialization, and redundant error checking is discarded.
Diffstat (limited to 'Userland/Applications/FontEditor')
-rw-r--r--Userland/Applications/FontEditor/FontEditor.cpp16
-rw-r--r--Userland/Applications/FontEditor/FontEditor.h4
-rw-r--r--Userland/Applications/FontEditor/GlyphMapWidget.cpp3
-rw-r--r--Userland/Applications/FontEditor/main.cpp31
4 files changed, 20 insertions, 34 deletions
diff --git a/Userland/Applications/FontEditor/FontEditor.cpp b/Userland/Applications/FontEditor/FontEditor.cpp
index 534c1b68d4..60652d2524 100644
--- a/Userland/Applications/FontEditor/FontEditor.cpp
+++ b/Userland/Applications/FontEditor/FontEditor.cpp
@@ -106,7 +106,7 @@ static RefPtr<GUI::Window> create_font_preview_window(FontEditorWidget& editor)
return window;
}
-FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::BitmapFont>&& edited_font)
+FontEditorWidget::FontEditorWidget()
{
load_from_gml(font_editor_window_gml);
@@ -475,8 +475,6 @@ FontEditorWidget::FontEditorWidget(const String& path, RefPtr<Gfx::BitmapFont>&&
GUI::Application::the()->on_action_leave = [this](GUI::Action&) {
m_statusbar->set_override_text({});
};
-
- initialize(path, move(edited_font));
}
FontEditorWidget::~FontEditorWidget()
@@ -619,22 +617,18 @@ void FontEditorWidget::set_show_font_metadata(bool show)
m_font_metadata_groupbox->set_visible(m_font_metadata);
}
-void FontEditorWidget::open_file(String const& path)
+bool FontEditorWidget::open_file(String const& path)
{
auto bitmap_font = Gfx::BitmapFont::load_from_file(path);
if (!bitmap_font) {
String message = String::formatted("Couldn't load font: {}\n", path);
GUI::MessageBox::show(window(), message, "Font Editor", GUI::MessageBox::Type::Error);
- return;
- }
- RefPtr<Gfx::BitmapFont> new_font = static_ptr_cast<Gfx::BitmapFont>(bitmap_font->unmasked_character_set());
- if (!new_font) {
- String message = String::formatted("Couldn't load font: {}\n", path);
- GUI::MessageBox::show(window(), message, "Font Editor", GUI::MessageBox::Type::Error);
- return;
+ return false;
}
+ auto new_font = bitmap_font->unmasked_character_set();
window()->set_modified(false);
initialize(path, move(new_font));
+ return true;
}
void FontEditorWidget::undo()
diff --git a/Userland/Applications/FontEditor/FontEditor.h b/Userland/Applications/FontEditor/FontEditor.h
index 9a38b2154e..a4af6ac5b8 100644
--- a/Userland/Applications/FontEditor/FontEditor.h
+++ b/Userland/Applications/FontEditor/FontEditor.h
@@ -20,6 +20,7 @@ class FontEditorWidget final : public GUI::Widget {
public:
virtual ~FontEditorWidget() override;
+ bool open_file(String const&);
bool save_as(const String&);
bool request_close();
void update_title();
@@ -35,11 +36,10 @@ public:
Function<void()> on_initialize;
private:
- FontEditorWidget(const String& path, RefPtr<Gfx::BitmapFont>&&);
+ FontEditorWidget();
virtual void drop_event(GUI::DropEvent&) override;
- void open_file(String const&);
void undo();
void redo();
void did_modify_font();
diff --git a/Userland/Applications/FontEditor/GlyphMapWidget.cpp b/Userland/Applications/FontEditor/GlyphMapWidget.cpp
index 73d0f3a1b8..a66b8c5a08 100644
--- a/Userland/Applications/FontEditor/GlyphMapWidget.cpp
+++ b/Userland/Applications/FontEditor/GlyphMapWidget.cpp
@@ -31,6 +31,9 @@ void GlyphMapWidget::initialize(Gfx::BitmapFont& mutable_font)
void GlyphMapWidget::resize_event(GUI::ResizeEvent& event)
{
+ if (!m_font)
+ return;
+
int event_width = event.size().width() - this->vertical_scrollbar().width() - (frame_thickness() * 2) - m_horizontal_spacing;
int event_height = event.size().height() - (frame_thickness() * 2);
m_visible_glyphs = (event_width * event_height) / (font().max_glyph_width() * font().glyph_height());
diff --git a/Userland/Applications/FontEditor/main.cpp b/Userland/Applications/FontEditor/main.cpp
index 41dfae7798..8b197ead91 100644
--- a/Userland/Applications/FontEditor/main.cpp
+++ b/Userland/Applications/FontEditor/main.cpp
@@ -34,35 +34,24 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
args_parser.add_positional_argument(path, "The font file for editing.", "file", Core::ArgsParser::Required::No);
args_parser.parse(arguments);
- RefPtr<Gfx::BitmapFont> edited_font;
- if (path == nullptr) {
- auto bitmap_font = static_ptr_cast<Gfx::BitmapFont>(Gfx::FontDatabase::default_font().clone());
- edited_font = static_ptr_cast<Gfx::BitmapFont>(bitmap_font->unmasked_character_set());
- } else {
- auto bitmap_font = Gfx::BitmapFont::load_from_file(path);
- if (!bitmap_font) {
- String message = String::formatted("Couldn't load font: {}\n", path);
- GUI::MessageBox::show(nullptr, message, "Font Editor", GUI::MessageBox::Type::Error);
- return 1;
- }
- edited_font = static_ptr_cast<Gfx::BitmapFont>(bitmap_font->unmasked_character_set());
- if (!edited_font) {
- String message = String::formatted("Couldn't load font: {}\n", path);
- GUI::MessageBox::show(nullptr, message, "Font Editor", GUI::MessageBox::Type::Error);
- return 1;
- }
- }
-
auto app_icon = GUI::Icon::default_icon("app-font-editor");
auto window = TRY(GUI::Window::try_create());
window->set_icon(app_icon.bitmap_for_size(16));
window->resize(440, 470);
- auto& font_editor = window->set_main_widget<FontEditorWidget>(path, move(edited_font));
-
+ auto& font_editor = window->set_main_widget<FontEditorWidget>();
font_editor.initialize_menubar(*window);
+ if (path) {
+ auto success = font_editor.open_file(path);
+ if (!success)
+ return 1;
+ } else {
+ auto mutable_font = static_ptr_cast<Gfx::BitmapFont>(Gfx::FontDatabase::default_font().clone())->unmasked_character_set();
+ font_editor.initialize({}, move(mutable_font));
+ }
+
window->on_close_request = [&]() -> GUI::Window::CloseRequestDecision {
if (font_editor.request_close())
return GUI::Window::CloseRequestDecision::Close;