FontEngine/FreeType: move libWrapper to its own compile unit.
This commit is contained in:
parent
f72178ffd0
commit
093149e72c
4 changed files with 73 additions and 49 deletions
1
bam.lua
1
bam.lua
|
|
@ -156,6 +156,7 @@ local graphics_module = Module("source/Graphics", {
|
|||
-- Text
|
||||
"Font/Engine/FreeTypeEngine.cpp",
|
||||
"Font/Engine/FreeTypeError.cpp",
|
||||
"Font/Engine/FreeTypeLib.cpp",
|
||||
"Font/FontDescription.cpp",
|
||||
"Font.cpp",
|
||||
"Text.cpp",
|
||||
|
|
|
|||
|
|
@ -6,58 +6,12 @@
|
|||
#include FT_STROKER_H
|
||||
|
||||
#include <Spectre/System/Log.h>
|
||||
#include "FreeTypeLib.h"
|
||||
#include "FreeTypeError.h"
|
||||
#include "FreeTypeEngine.h"
|
||||
|
||||
namespace sp {
|
||||
|
||||
class LibWrapper
|
||||
{
|
||||
public :
|
||||
static LibWrapper& getInstance()
|
||||
{
|
||||
static LibWrapper _inst;
|
||||
return _inst;
|
||||
};
|
||||
|
||||
// Do not implement.
|
||||
LibWrapper(const LibWrapper&);
|
||||
void operator=(const LibWrapper&);
|
||||
|
||||
FT_Library handle;
|
||||
|
||||
FT_Stroker stroker;
|
||||
|
||||
private :
|
||||
|
||||
LibWrapper();
|
||||
~LibWrapper();
|
||||
};
|
||||
|
||||
LibWrapper::LibWrapper()
|
||||
{
|
||||
FT_Error error = FT_Init_FreeType(&handle);
|
||||
if (error) {
|
||||
Log::error("Could not initialize FreeType");
|
||||
return;
|
||||
}
|
||||
|
||||
Log::info("FreeType font driver was initialized.");
|
||||
error = FT_Stroker_New(handle, &stroker);
|
||||
}
|
||||
|
||||
LibWrapper::~LibWrapper()
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
FT_Stroker_Done(stroker);
|
||||
|
||||
error = FT_Done_FreeType(handle);
|
||||
if (error) {
|
||||
Log::error("Could not close FreeType");
|
||||
}
|
||||
}
|
||||
|
||||
FreeTypeEngine::FreeTypeEngine(FontDescription desc) :
|
||||
m_face (NULL),
|
||||
m_desc (desc)
|
||||
|
|
@ -86,7 +40,7 @@ bool FreeTypeEngine::loadFromFile(const std::string& filename)
|
|||
FT_Face face;
|
||||
FT_Error error;
|
||||
|
||||
error = FT_New_Face(LibWrapper::getInstance().handle, filename.c_str(), 0, &face);
|
||||
error = FT_New_Face(FreeTypeLib::getInstance().handle, filename.c_str(), 0, &face);
|
||||
if (error) {
|
||||
Log::warn("FreeType: could not load file (%s): %s",
|
||||
filename.c_str(), FT_GetErrorString(error));
|
||||
|
|
@ -130,7 +84,7 @@ Glyph FreeTypeEngine::loadGlyph(unsigned int codepoint, Image& img, unsigned int
|
|||
FT_Glyph_Metrics& metrics = m_face->glyph->metrics;
|
||||
|
||||
if (outlineSize) {
|
||||
FT_Stroker stroker = LibWrapper::getInstance().stroker;
|
||||
FT_Stroker stroker = FreeTypeLib::getInstance().stroker;
|
||||
|
||||
FT_Stroker_Set(stroker, outlineSize * 64,
|
||||
FT_STROKER_LINECAP_ROUND,
|
||||
|
|
|
|||
37
source/Graphics/Font/Engine/FreeTypeLib.cpp
Normal file
37
source/Graphics/Font/Engine/FreeTypeLib.cpp
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
|
||||
#include <Spectre/System/Log.h>
|
||||
#include "FreeTypeLib.h"
|
||||
|
||||
namespace sp {
|
||||
|
||||
FreeTypeLib& FreeTypeLib::getInstance()
|
||||
{
|
||||
static FreeTypeLib _inst;
|
||||
return _inst;
|
||||
};
|
||||
|
||||
FreeTypeLib::FreeTypeLib()
|
||||
{
|
||||
FT_Error error = FT_Init_FreeType(&handle);
|
||||
if (error) {
|
||||
Log::error("Could not initialize FreeType");
|
||||
return;
|
||||
}
|
||||
|
||||
Log::info("FreeType font driver was initialized.");
|
||||
error = FT_Stroker_New(handle, &stroker);
|
||||
}
|
||||
|
||||
FreeTypeLib::~FreeTypeLib()
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
FT_Stroker_Done(stroker);
|
||||
|
||||
error = FT_Done_FreeType(handle);
|
||||
if (error) {
|
||||
Log::error("Could not close FreeType");
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace sp
|
||||
32
source/Graphics/Font/Engine/FreeTypeLib.h
Normal file
32
source/Graphics/Font/Engine/FreeTypeLib.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
#ifndef SPECTRE_GRAPHICS_FONT_ENGINE_FREETYPELIB_H
|
||||
#define SPECTRE_GRAPHICS_FONT_ENGINE_FREETYPELIB_H
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_STROKER_H
|
||||
|
||||
namespace sp {
|
||||
|
||||
class FreeTypeLib
|
||||
{
|
||||
public :
|
||||
static FreeTypeLib& getInstance();
|
||||
|
||||
// Do not implement.
|
||||
FreeTypeLib(const FreeTypeLib&);
|
||||
void operator=(const FreeTypeLib&);
|
||||
|
||||
FT_Library handle;
|
||||
|
||||
FT_Stroker stroker;
|
||||
|
||||
private :
|
||||
|
||||
FreeTypeLib();
|
||||
~FreeTypeLib();
|
||||
};
|
||||
|
||||
} // namespace sp
|
||||
|
||||
#endif /* SPECTRE_GRAPHICS_FONT_ENGINE_FREETYPELIB_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue