CSSFontFaceSource.h [plain text]
#ifndef CSSFontFaceSource_h
#define CSSFontFaceSource_h
#include "CachedFontClient.h"
#include "CachedResourceHandle.h"
#include "Timer.h"
#include <wtf/HashMap.h>
#include <wtf/text/AtomicString.h>
namespace WebCore {
class CachedFont;
class CSSFontFace;
class CSSFontSelector;
class FontDescription;
class SimpleFontData;
#if ENABLE(SVG_FONTS)
class SVGFontElement;
class SVGFontFaceElement;
#endif
class CSSFontFaceSource : public CachedFontClient {
public:
CSSFontFaceSource(const String&, CachedFont* = 0);
virtual ~CSSFontFaceSource();
bool isLoaded() const;
bool isValid() const;
const AtomicString& string() const { return m_string; }
void setFontFace(CSSFontFace* face) { m_face = face; }
virtual void fontLoaded(CachedFont*);
PassRefPtr<SimpleFontData> getFontData(const FontDescription&, bool syntheticBold, bool syntheticItalic, CSSFontSelector*);
void pruneTable();
#if ENABLE(SVG_FONTS)
SVGFontFaceElement* svgFontFaceElement() const;
void setSVGFontFaceElement(PassRefPtr<SVGFontFaceElement>);
bool isSVGFontFaceSource() const;
void setHasExternalSVGFont(bool value) { m_hasExternalSVGFont = value; }
#endif
#if ENABLE(FONT_LOAD_EVENTS)
bool isDecodeError() const;
bool ensureFontData();
#endif
private:
void startLoadingTimerFired(Timer<CSSFontFaceSource>*);
AtomicString m_string; CachedResourceHandle<CachedFont> m_font; CSSFontFace* m_face; HashMap<unsigned, RefPtr<SimpleFontData>> m_fontDataTable;
#if ENABLE(SVG_FONTS)
RefPtr<SVGFontFaceElement> m_svgFontFaceElement;
RefPtr<SVGFontElement> m_externalSVGFontElement;
bool m_hasExternalSVGFont;
#endif
};
}
#endif