]> git.sesse.net Git - vlc/blobdiff - modules/gui/skins2/src/ft2_font.hpp
Win32 skins: reorder includes to fix warnings
[vlc] / modules / gui / skins2 / src / ft2_font.hpp
index 278ae85638891bb57397b14065fd308d16f9bb23..6b7cafce046560de201d420f8bba6150969c5872 100644 (file)
@@ -1,11 +1,11 @@
 /*****************************************************************************
  * ft2_font.hpp
  *****************************************************************************
- * Copyright (C) 2003 VideoLAN
+ * Copyright (C) 2003 the VideoLAN team
  * $Id$
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
+ *          Olivier Teulière <ipkiss@via.ecp.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,9 +17,9 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 #ifndef FT2_FONT_HPP
@@ -29,6 +29,7 @@
 #include FT_FREETYPE_H
 #include FT_GLYPH_H
 #include <string>
+#include <map>
 
 #include "generic_font.hpp"
 
@@ -38,39 +39,49 @@ class UString;
 /// Freetype2 font
 class FT2Font: public GenericFont
 {
-    public:
-        FT2Font( intf_thread_t *pIntf, const string &rName, int size );
-        virtual ~FT2Font();
+public:
+    FT2Font( intf_thread_t *pIntf, const string &rName, int size );
+    virtual ~FT2Font();
 
-        /// Initalize the object. Returns false if it failed
-        virtual bool init();
+    /// Initialize the object. Returns false if it failed
+    virtual bool init();
 
-        /// Render a string on a bitmap.
-        /// If maxWidth != -1, the text is truncated with '...'
-        virtual GenericBitmap *drawString( const UString &rString,
-            uint32_t color, int maxWidth = -1 ) const;
+    /// Render a string on a bitmap.
+    /// If maxWidth != -1, the text is truncated with '...'
+    virtual GenericBitmap *drawString( const UString &rString,
+        uint32_t color, int maxWidth = -1 ) const;
 
-        /// Get the text height
-        virtual int getSize() const { return m_height; }
+    /// Get the text height
+    virtual int getSize() const { return m_height; }
 
-    private:
-        /// File name
-        const string m_name;
-        /// Buffer to store the font
-        void *m_buffer;
-        /// Pixel size of the font
-        int m_size;
-        /// Handle to FT library
-        FT_Library m_lib;
-        /// Font face
-        FT_Face m_face;
-        /// Font metrics
-        int m_height, m_ascender, m_descender;
-        /// Index, glyph, width and advance of the dot symbol
-        int m_dotIndex;
-        FT_Glyph m_dotGlyph;
-        int m_dotWidth;
-        int m_dotAdvance;
+private:
+    typedef struct
+    {
+        FT_Glyph m_glyph;
+        FT_BBox m_size;
+        int m_index;
+        int m_advance;
+    } Glyph_t;
+    typedef map<uint32_t,Glyph_t> GlyphMap_t;
+
+    /// File name
+    const string m_name;
+    /// Buffer to store the font
+    char *m_buffer;
+    /// Pixel size of the font
+    int m_size;
+    /// Handle to FT library
+    FT_Library m_lib;
+    /// Font face
+    FT_Face m_face;
+    /// Font metrics
+    int m_height, m_ascender, m_descender;
+    /// Glyph cache
+    mutable GlyphMap_t m_glyphCache;
+
+    /// Get the glyph corresponding to the given code
+    Glyph_t &getGlyph( uint32_t code ) const;
+    bool error( unsigned err, const char *msg );
 };