CSSSegmentedFontFace.h [plain text]
#ifndef CSSSegmentedFontFace_h
#define CSSSegmentedFontFace_h
#include "FontRanges.h"
#include <wtf/HashMap.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/Vector.h>
namespace WebCore {
class CSSFontFace;
class CSSFontSelector;
class FontDescription;
class CSSSegmentedFontFace : public RefCounted<CSSSegmentedFontFace> {
public:
static Ref<CSSSegmentedFontFace> create(CSSFontSelector* selector) { return adoptRef(*new CSSSegmentedFontFace(selector)); }
~CSSSegmentedFontFace();
CSSFontSelector* fontSelector() const { return m_fontSelector; }
void fontLoaded(CSSFontFace*);
void appendFontFace(PassRefPtr<CSSFontFace>);
FontRanges fontRanges(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, FontRanges> m_descriptionToRangesMap;
Vector<RefPtr<CSSFontFace>, 1> m_fontFaces;
#if ENABLE(FONT_LOAD_EVENTS)
Vector<RefPtr<LoadFontCallback>> m_callbacks;
#endif
};
}
#endif // CSSSegmentedFontFace_h