ladybird/Widgets/Font.cpp

36 lines
974 B
C++
Raw Normal View History

2018-10-11 21:45:57 +00:00
#include "Font.h"
#include "Peanut8x10.h"
#include <AK/RetainPtr.h>
#include <cstdio>
Font& Font::defaultFont()
{
static auto* f = adopt(*new Font(Peanut8x10::glyphs, Peanut8x10::glyphWidth, Peanut8x10::glyphHeight, Peanut8x10::firstGlyph, Peanut8x10::lastGlyph)).leakRef();
return *f;
}
2018-10-11 21:54:34 +00:00
Font::Font(const char* const* glyphs, byte glyphWidth, byte glyphHeight, byte firstGlyph, byte lastGlyph)
2018-10-11 21:45:57 +00:00
: m_glyphs(glyphs)
, m_glyphWidth(glyphWidth)
, m_glyphHeight(glyphHeight)
, m_firstGlyph(firstGlyph)
, m_lastGlyph(lastGlyph)
{
}
Font::~Font()
{
}
const CBitmap* Font::glyphBitmap(byte ch) const
2018-10-11 21:45:57 +00:00
{
if (!m_bitmaps[ch]) {
if (ch < m_firstGlyph || ch > m_lastGlyph)
return nullptr;
const char* data = m_glyphs[(unsigned)ch - m_firstGlyph];
m_bitmaps[ch] = CBitmap::createFromASCII(data, m_glyphWidth, m_glyphHeight);
}
ASSERT(ch >= m_firstGlyph && ch <= m_lastGlyph);
return m_bitmaps[ch].ptr();
2018-10-11 21:45:57 +00:00
}