Files
SDLPongCPP/.svn/pristine/13/132f4d08f294eaaa53fec03a654dfd1dbd4ee202.svn-base
T
2018-06-25 21:48:45 -04:00

121 lines
2.4 KiB
Plaintext

#include "cFont.hpp"
/*** Custom Header Files ***/
#include "../UtilityEngine/cUtility.hpp"
using TextTypeEngine::cFont;
using TextTypeHelpers::cFontHolder;
using UtilityEngine::cUtility;
cFont::cFont( const cString& filename /*= ""*/, const cString& dir /*= ""*/, const unsigned long int size /*= 16*/ )
: m_dir(dir), m_fileName(filename), mpp_default(nullptr)
{
setSize(size);
}
cFont::cFont( const cFont& copy )
: m_dir(copy.getDir()), m_fileName(copy.getFileName()), mpp_default(nullptr)
{
setSize(copy.getSize());
}
cFont::~cFont()
{
UnloadFont();
}
///Functions
///Sets
void cFont::setDir( const cString& dir )
{
m_dir = dir;
}
void cFont::setFileName( const cString& filename )
{
m_fileName = filename;
}
void cFont::setFileNameandDir( const cString& filename, const cString& dir /*= ""*/ )
{
setDir(dir);
setFileName(filename);
}
void cFont::setSize( const unsigned long int size /*= 16*/ )
{
while ((mpp_default == nullptr) || ((*mpp_default) == nullptr)) {
getFont(size);
mpp_default = (cFontHolder**)getFontHolder(size);
}
}
///Gets
const cString& cFont::getDir() const
{
return m_dir;
}
const cString& cFont::getFileName() const
{
return m_fileName;
}
const unsigned long int cFont::getSize() const
{
return (*mpp_default)->getSize();
}
TTF_Font* cFont::getFont()
{
return (*mpp_default)->getFont();
}
TTF_Font* cFont::getFont( const unsigned long int size )
{
TTF_Font* rtn = nullptr;
rtn = getFontHolder(size)->getFont();
//We Can't find the Font in that size so we make a new one
if (rtn == nullptr) {
rtn = LoadFont(size);
}
return rtn;
}
//private:
TTF_Font* cFont::LoadFont( const unsigned long int size )
{
TTF_Font* rtn = nullptr;
if (m_fileName != "") {
cString temp = m_dir + m_fileName;
if ((rtn = TTF_OpenFont(temp.c_str(), size)) == nullptr)
cUtility::Inst().Message("Unable to load necessary TTF file. " + temp + " TTF_OpenFont():", "", cUtility::eTypeSDL::TTF);
else {
cFontHolder* holder = new cFontHolder(rtn, size);
m_fonts.push_back(holder);
}
}
return rtn;
}
TextTypeHelpers::cFontHolder* cFont::getFontHolder(const unsigned long int size)
{
cFontHolder* rtn = nullptr;
std::vector<cFontHolder*>::iterator it;
for (it = m_fonts.begin(); it < m_fonts.end(); it++) {
if (size == (*it)->getSize()) {
rtn = (*it);
//break out of the for loop
break;
}
}
return rtn;
}
void cFont::UnloadFont()
{
m_fonts.clear();
}