2008-05-12 Alp Toker <alp@nuanti.com>
[WebKit-https.git] / WebCore / platform / graphics / FontCache.h
index 5c69ea2..e45fbbc 100644 (file)
 #ifndef FontCache_h
 #define FontCache_h
 
+#include <limits.h>
 #include <wtf/unicode/Unicode.h>
 
 #if PLATFORM(WIN)
+#include <objidl.h>
 #include <mlang.h>
 #endif
 
@@ -39,18 +41,21 @@ namespace WebCore
 {
 
 class AtomicString;
-class FontData;
-class FontPlatformData;
 class Font;
+class FontPlatformData;
+class FontData;
 class FontDescription;
 class FontSelector;
+class SimpleFontData;
 
 class FontCache {
 public:
     static const FontData* getFontData(const Font&, int& familyIndex, FontSelector*);
+    static void releaseFontData(const SimpleFontData*);
     
     // This method is implemented by the platform.
-    static const FontData* getFontDataForCharacters(const Font&, const UChar* characters, int length);
+    // FIXME: Font data returned by this method never go inactive because callers don't track and release them.
+    static const SimpleFontData* getFontDataForCharacters(const Font&, const UChar* characters, int length);
     
     // Also implemented by the platform.
     static void platformInit();
@@ -62,15 +67,19 @@ public:
     static bool fontExists(const FontDescription&, const AtomicString& family);
 
     static FontPlatformData* getCachedFontPlatformData(const FontDescription&, const AtomicString& family, bool checkingAlternateName = false);
-    static FontData* getCachedFontData(const FontPlatformData*);
+    static SimpleFontData* getCachedFontData(const FontPlatformData*);
     static FontPlatformData* getLastResortFallbackFont(const FontDescription&);
-    
+
+    static size_t fontDataCount();
+    static size_t inactiveFontDataCount();
+    static void purgeInactiveFontData(int count = INT_MAX);
+
 private:
     // These methods are implemented by each platform.
     static FontPlatformData* getSimilarFontPlatformData(const Font&);
     static FontPlatformData* createFontPlatformData(const FontDescription&, const AtomicString& family);
 
-    friend class FontData;
+    friend class SimpleFontData;
     friend class FontFallbackList;
 };