diff options
author | Kent Mein <mein@cs.umn.edu> | 2005-01-21 08:15:33 +0300 |
---|---|---|
committer | Kent Mein <mein@cs.umn.edu> | 2005-01-21 08:15:33 +0300 |
commit | 26f63bfa197e82a6d3a3f298c603f1878891b8f8 (patch) | |
tree | 370880862bd533224e42e7b374f39a43279e79f8 /extern/bFTGL/include/FTFace.h | |
parent | b561ca88cfc2445b82c3dc59bdbb8d9e46ee7e31 (diff) |
Added bFTGL to extern and updated the Makefiles. I'm guessing there will
need to be tweaks but it seems to work on my linux box. I haven't
touched any of the other build systems so those will need to be done.
We probably don't need all of this stuff but I figured better to add a little
too much then to little.
Kent
Diffstat (limited to 'extern/bFTGL/include/FTFace.h')
-rwxr-xr-x | extern/bFTGL/include/FTFace.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/extern/bFTGL/include/FTFace.h b/extern/bFTGL/include/FTFace.h new file mode 100755 index 00000000000..26bb3966462 --- /dev/null +++ b/extern/bFTGL/include/FTFace.h @@ -0,0 +1,149 @@ +#ifndef __FTFace__ +#define __FTFace__ + +#include <ft2build.h> +#include FT_FREETYPE_H +#include FT_GLYPH_H + +#include "FTGL.h" +#include "FTPoint.h" +#include "FTSize.h" + +/** + * FTFace class provides an abstraction layer for the Freetype Face. + * + * @see "Freetype 2 Documentation" + * + */ +class FTGL_EXPORT FTFace +{ + public: + /** + * Opens and reads a face file. Error is set. + * + * @param filename font file name. + */ + FTFace( const char* filename); + + /** + * Read face data from an in-memory buffer. Error is set. + * + * @param pBufferBytes the in-memory buffer + * @param bufferSizeInBytes the length of the buffer in bytes + */ + FTFace( const unsigned char *pBufferBytes, size_t bufferSizeInBytes ); + + /** + * Destructor + * + * Disposes of the current Freetype Face. + */ + virtual ~FTFace(); + + /** + * Attach auxilliary file to font (e.g., font metrics). + * + * @param filename auxilliary font file name. + * @return <code>true</code> if file has opened + * successfully. + */ + bool Attach( const char* filename); + + /** + * Attach auxilliary data to font (e.g., font metrics) from memory + * + * @param pBufferBytes the in-memory buffer + * @param bufferSizeInBytes the length of the buffer in bytes + * @return <code>true</code> if file has opened + * successfully. + */ + bool Attach( const unsigned char *pBufferBytes, size_t bufferSizeInBytes); + + /** + * Disposes of the face + */ + void Close(); + + /** + * Get the freetype face object.. + * + * @return pointer to an FT_Face. + */ + FT_Face* Face() const { return ftFace;} + + /** + * Sets the char size for the current face. + * + * This doesn't guarantee that the size was set correctly. Clients + * should check errors. + * + * @param size the face size in points (1/72 inch) + * @param res the resolution of the target device. + * @return <code>FTSize</code> object + */ + const FTSize& Size( const unsigned int size, const unsigned int res); + + unsigned int UnitsPerEM() const; + + /** + * Get the number of character maps in this face. + * + * @return character map count. + */ + unsigned int CharMapCount(); + + /** + * Get a list of character maps in this face. + * + * @return pointer to the first encoding. + */ + FT_Encoding* CharMapList(); + + /** + * Gets the kerning vector between two glyphs + */ + FTPoint KernAdvance( unsigned int index1, unsigned int index2); + + /** + * Loads and creates a Freetype glyph. + */ + FT_GlyphSlot Glyph( unsigned int index, FT_Int load_flags); + + /** + * Gets the number of glyphs in the current face. + */ + unsigned int GlyphCount() const { return numGlyphs;} + + /** + * Queries for errors. + * + * @return The current error code. + */ + FT_Error Error() const { return err; } + + private: + /** + * The Freetype face + */ + FT_Face* ftFace; + + /** + * The size object associated with this face + */ + FTSize charSize; + + /** + * The number of glyphs in this face + */ + int numGlyphs; + + FT_Encoding* fontEncodingList; + + /** + * Current error code. Zero means no error. + */ + FT_Error err; +}; + + +#endif // __FTFace__ |