mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:47:44 +00:00
LibGfx: Add a way to construct an empty Font with arbitrary metrics
This commit is contained in:
parent
61bf8e01f9
commit
98fd6b8767
2 changed files with 16 additions and 3 deletions
|
@ -37,6 +37,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
namespace Gfx {
|
namespace Gfx {
|
||||||
|
|
||||||
|
@ -96,7 +97,7 @@ Font& Font::default_bold_font()
|
||||||
return *s_default_bold_font;
|
return *s_default_bold_font;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<Font> Font::clone() const
|
NonnullRefPtr<Font> Font::clone() const
|
||||||
{
|
{
|
||||||
size_t bytes_per_glyph = sizeof(u32) * glyph_height();
|
size_t bytes_per_glyph = sizeof(u32) * glyph_height();
|
||||||
// FIXME: This is leaked!
|
// FIXME: This is leaked!
|
||||||
|
@ -107,7 +108,18 @@ RefPtr<Font> Font::clone() const
|
||||||
memcpy(new_widths, m_glyph_widths, 256);
|
memcpy(new_widths, m_glyph_widths, 256);
|
||||||
else
|
else
|
||||||
memset(new_widths, m_glyph_width, 256);
|
memset(new_widths, m_glyph_width, 256);
|
||||||
return adopt(*new Font(m_name, new_rows, new_widths, m_fixed_width, m_glyph_width, m_glyph_height, m_glyph_spacing));
|
return adopt(*new Font(m_name, new_rows, new_widths, m_fixed_width, m_glyph_width, 12, m_glyph_spacing));
|
||||||
|
}
|
||||||
|
|
||||||
|
NonnullRefPtr<Font> Font::create(u8 glyph_height, u8 glyph_width, bool fixed)
|
||||||
|
{
|
||||||
|
size_t bytes_per_glyph = sizeof(u32) * glyph_height;
|
||||||
|
// FIXME: This is leaked!
|
||||||
|
auto* new_rows = static_cast<unsigned*>(malloc(bytes_per_glyph * 256));
|
||||||
|
memset(new_rows, 0, bytes_per_glyph * 256);
|
||||||
|
auto* new_widths = static_cast<u8*>(malloc(256));
|
||||||
|
memset(new_widths, glyph_width, 256);
|
||||||
|
return adopt(*new Font("Untitled", new_rows, new_widths, fixed, glyph_width, glyph_height, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
Font::Font(const StringView& name, unsigned* rows, u8* widths, bool is_fixed_width, u8 glyph_width, u8 glyph_height, u8 glyph_spacing)
|
Font::Font(const StringView& name, unsigned* rows, u8* widths, bool is_fixed_width, u8 glyph_width, u8 glyph_height, u8 glyph_spacing)
|
||||||
|
|
|
@ -76,7 +76,8 @@ public:
|
||||||
static Font& default_fixed_width_font();
|
static Font& default_fixed_width_font();
|
||||||
static Font& default_bold_fixed_width_font();
|
static Font& default_bold_fixed_width_font();
|
||||||
|
|
||||||
RefPtr<Font> clone() const;
|
NonnullRefPtr<Font> clone() const;
|
||||||
|
static NonnullRefPtr<Font> create(u8 glyph_height, u8 glyph_width, bool fixed);
|
||||||
|
|
||||||
static RefPtr<Font> load_from_file(const StringView& path);
|
static RefPtr<Font> load_from_file(const StringView& path);
|
||||||
bool write_to_file(const StringView& path);
|
bool write_to_file(const StringView& path);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue