serenity/Userland/Applications/FontEditor/GlyphMapWidget.h
thankyouverycool a486415f03 FontEditor: Update editor to handle new font format
The editor now unmasks fonts on load, mapping their glyphs to the
complete unicode character set, and masks them upon saving to
reduce disk space. This is a naive approach in terms of memory
usage and can be improved but whose immediate goal is to allow
editing any glyph without concern for range allocation.
2021-09-19 00:58:59 +02:00

51 lines
1.4 KiB
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibGUI/AbstractScrollableWidget.h>
#include <LibGfx/BitmapFont.h>
class GlyphMapWidget final : public GUI::AbstractScrollableWidget {
C_OBJECT(GlyphMapWidget)
public:
virtual ~GlyphMapWidget() override;
void initialize(Gfx::BitmapFont&);
int selected_glyph() const { return m_selected_glyph; }
void set_selected_glyph(int);
void scroll_to_glyph(int glyph);
int rows() const { return m_rows; }
int columns() const { return m_columns; }
Gfx::BitmapFont& font() { return *m_font; }
const Gfx::BitmapFont& font() const { return *m_font; }
void update_glyph(int);
void reprobe_font();
Function<void(int)> on_glyph_selected;
private:
GlyphMapWidget();
virtual void paint_event(GUI::PaintEvent&) override;
virtual void mousedown_event(GUI::MouseEvent&) override;
virtual void keydown_event(GUI::KeyEvent&) override;
virtual void resize_event(GUI::ResizeEvent&) override;
Gfx::IntRect get_outer_rect(int glyph) const;
RefPtr<Gfx::BitmapFont> m_font;
int m_glyph_count { 0x110000 };
int m_columns { 32 };
int m_rows { 12 };
int m_horizontal_spacing { 2 };
int m_vertical_spacing { 2 };
int m_selected_glyph { 0 };
int m_visible_glyphs { 0 };
};