CSSSegmentedFontFace.h [plain text]
#ifndef CSSSegmentedFontFace_h
#define CSSSegmentedFontFace_h
#include <wtf/HashMap.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/Vector.h>
#include <wtf/unicode/Unicode.h>
namespace WebCore {
class CSSFontFace;
class CSSFontSelector;
class FontData;
class FontDescription;
class SegmentedFontData;
class CSSSegmentedFontFace : public RefCounted<CSSSegmentedFontFace> {
public:
static PassRefPtr<CSSSegmentedFontFace> create(CSSFontSelector* selector) { return adoptRef(new CSSSegmentedFontFace(selector)); }
~CSSSegmentedFontFace();
CSSFontSelector* fontSelector() const { return m_fontSelector; }
void fontLoaded(CSSFontFace*);
void appendFontFace(PassRefPtr<CSSFontFace>);
PassRefPtr<FontData> getFontData(const FontDescription&);
#if ENABLE(FONT_LOAD_EVENTS)
class LoadFontCallback : public RefCounted<LoadFontCallback> {
public:
virtual ~LoadFontCallback() { }
virtual void notifyLoaded() = 0;
virtual void notifyError() = 0;
};
bool checkFont() const;
void loadFont(const FontDescription&, PassRefPtr<LoadFontCallback> loadCallback);
#endif
private:
CSSSegmentedFontFace(CSSFontSelector*);
void pruneTable();
bool isValid() const;
#if ENABLE(FONT_LOAD_EVENTS)
bool isLoading() const;
#endif
CSSFontSelector* m_fontSelector;
HashMap<unsigned, RefPtr<SegmentedFontData> > m_fontDataTable;
Vector<RefPtr<CSSFontFace>, 1> m_fontFaces;
#if ENABLE(FONT_LOAD_EVENTS)
Vector<RefPtr<LoadFontCallback> > m_callbacks;
#endif
};
}
#endif // CSSSegmentedFontFace_h