#ifndef CSSCustomFontData_h
#define CSSCustomFontData_h
#include "core/css/CSSFontFaceSource.h"
#include "platform/fonts/CustomFontData.h"
namespace WebCore {
class CSSCustomFontData FINAL : public CustomFontData {
public:
enum FallbackVisibility { InvisibleFallback, VisibleFallback };
static PassRefPtr<CSSCustomFontData> create(RemoteFontFaceSource* source, FallbackVisibility visibility)
{
return adoptRef(new CSSCustomFontData(source, visibility));
}
virtual ~CSSCustomFontData() { }
virtual bool shouldSkipDrawing() const OVERRIDE
{
if (m_fontFaceSource)
m_fontFaceSource->paintRequested();
return m_fallbackVisibility == InvisibleFallback && m_isUsed;
}
virtual void beginLoadIfNeeded() const OVERRIDE
{
if (!m_isUsed && m_fontFaceSource) {
m_isUsed = true;
m_fontFaceSource->beginLoadIfNeeded();
}
}
virtual bool isLoading() const OVERRIDE { return m_isUsed; }
virtual bool isLoadingFallback() const OVERRIDE { return true; }
virtual void clearFontFaceSource() OVERRIDE { m_fontFaceSource = 0; }
private:
CSSCustomFontData(RemoteFontFaceSource* source, FallbackVisibility visibility)
: m_fontFaceSource(source)
, m_fallbackVisibility(visibility)
, m_isUsed(false)
{
}
RemoteFontFaceSource* m_fontFaceSource;
FallbackVisibility m_fallbackVisibility;
mutable bool m_isUsed;
};
}
#endif