Added Font::getInfo to retrieve various information about the font (for now, only the family name) (#164)

This commit is contained in:
Laurent Gomila 2013-08-09 16:02:53 +02:00
parent 6d4c844959
commit 7caf2e64b6
2 changed files with 41 additions and 3 deletions

View File

@ -49,6 +49,17 @@ class InputStream;
////////////////////////////////////////////////////////////
class SFML_GRAPHICS_API Font
{
public :
////////////////////////////////////////////////////////////
/// \brief Holds various information about a font
///
////////////////////////////////////////////////////////////
struct Info
{
std::string family; ///< The font family
};
public :
////////////////////////////////////////////////////////////
@ -130,6 +141,14 @@ public :
////////////////////////////////////////////////////////////
bool loadFromStream(InputStream& stream);
////////////////////////////////////////////////////////////
/// \brief Get the font information
///
/// \return A structure that holds the font information
///
////////////////////////////////////////////////////////////
const Info& getInfo() const;
////////////////////////////////////////////////////////////
/// \brief Retrieve a glyph of the font
///
@ -283,7 +302,8 @@ private :
void* m_face; ///< Pointer to the internal font face (it is typeless to avoid exposing implementation details)
void* m_streamRec; ///< Pointer to the stream rec instance (it is typeless to avoid exposing implementation details)
int* m_refCount; ///< Reference counter used by implicit sharing
mutable PageTable m_pages; ///< Table containing the glyphs pages by character size
Info m_info; ///< Information about the font
mutable PageTable m_pages; ///< Table containing the glyphs pages by character size
mutable std::vector<Uint8> m_pixelBuffer; ///< Pixel buffer holding a glyph's pixels before being written to the texture
};

View File

@ -67,7 +67,8 @@ Font::Font() :
m_library (NULL),
m_face (NULL),
m_streamRec(NULL),
m_refCount (NULL)
m_refCount (NULL),
m_info ()
{
}
@ -79,6 +80,7 @@ m_library (copy.m_library),
m_face (copy.m_face),
m_streamRec (copy.m_streamRec),
m_refCount (copy.m_refCount),
m_info (copy.m_info),
m_pages (copy.m_pages),
m_pixelBuffer(copy.m_pixelBuffer)
{
@ -123,7 +125,7 @@ bool Font::loadFromFile(const std::string& filename)
return false;
}
// Select the unicode character map
// Select the unicode character map
if (FT_Select_Charmap(face, FT_ENCODING_UNICODE) != 0)
{
err() << "Failed to load font \"" << filename << "\" (failed to set the Unicode character set)" << std::endl;
@ -133,6 +135,9 @@ bool Font::loadFromFile(const std::string& filename)
// Store the loaded font in our ugly void* :)
m_face = face;
// Store the font information
m_info.family = face->family_name ? face->family_name : std::string();
return true;
}
@ -173,6 +178,9 @@ bool Font::loadFromMemory(const void* data, std::size_t sizeInBytes)
// Store the loaded font in our ugly void* :)
m_face = face;
// Store the font information
m_info.family = face->family_name ? face->family_name : std::string();
return true;
}
@ -233,10 +241,20 @@ bool Font::loadFromStream(InputStream& stream)
m_face = face;
m_streamRec = rec;
// Store the font information
m_info.family = face->family_name ? face->family_name : std::string();
return true;
}
////////////////////////////////////////////////////////////
const Font::Info& Font::getInfo() const
{
return m_info;
}
////////////////////////////////////////////////////////////
const Glyph& Font::getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold) const
{