Add Roboto font, misc icons and text things

This commit is contained in:
elasota
2019-12-23 17:43:10 -05:00
parent e089cabf98
commit 7ab4c8960d
120 changed files with 2995 additions and 743 deletions

View File

@@ -0,0 +1,95 @@
#include "FontFamily.h"
#include "IOStream.h"
#include "HostFileSystem.h"
#include "HostFontHandler.h"
#include "HostFont.h"
#include <stdlib.h>
#include <new>
namespace PortabilityLayer
{
void FontFamily::AddFont(int flags, const char *path, FontHacks fontHacks)
{
PortabilityLayer::IOStream *sysFontStream = PortabilityLayer::HostFileSystem::GetInstance()->OpenFile(PortabilityLayer::EVirtualDirectory_Fonts, path, false, false);
if (!sysFontStream)
return;
PortabilityLayer::HostFontHandler *fontHandler = PortabilityLayer::HostFontHandler::GetInstance();
PortabilityLayer::HostFont *font = fontHandler->LoadFont(sysFontStream);
if (!fontHandler->KeepStreamOpen())
sysFontStream->Close();
if (!font)
return;
m_fonts[flags] = font;
m_hacks[flags] = fontHacks;
if (m_fonts[0] == nullptr)
m_defaultVariation = flags;
}
void FontFamily::SetDefaultVariation(int defaultVariation)
{
if (m_fonts[defaultVariation])
m_defaultVariation = defaultVariation;
}
int FontFamily::GetVariationForFlags(int variation) const
{
if (m_fonts[variation])
return variation;
if (m_fonts[0])
return 0;
return m_defaultVariation;
}
PortabilityLayer::HostFont *FontFamily::GetFontForVariation(int variation) const
{
return m_fonts[variation];
}
PortabilityLayer::FontHacks FontFamily::GetHacksForVariation(int variation) const
{
return m_hacks[variation];
}
FontFamily *FontFamily::Create()
{
void *storage = malloc(sizeof(FontFamily));
if (!storage)
return nullptr;
return new (storage) FontFamily();
}
void FontFamily::Destroy()
{
this->~FontFamily();
free(this);
}
FontFamily::FontFamily()
: m_defaultVariation(0)
{
for (unsigned int i = 0; i < kNumVariations; i++)
{
m_fonts[i] = nullptr;
m_hacks[i] = FontHacks_None;
}
}
FontFamily::~FontFamily()
{
for (unsigned int i = 0; i < kNumVariations; i++)
{
if (PortabilityLayer::HostFont *font = m_fonts[i])
font->Destroy();
}
}
}