CSSFontFaceSrcValue.h [plain text]
#pragma once
#include "CSSValue.h"
#include "CachedResourceHandle.h"
#include <wtf/text/WTFString.h>
namespace WebCore {
class CachedFont;
class Document;
class SVGFontFaceElement;
class CSSFontFaceSrcValue final : public CSSValue {
public:
static Ref<CSSFontFaceSrcValue> create(const String& resource)
{
return adoptRef(*new CSSFontFaceSrcValue(resource, false));
}
static Ref<CSSFontFaceSrcValue> createLocal(const String& resource)
{
return adoptRef(*new CSSFontFaceSrcValue(resource, true));
}
const String& resource() const { return m_resource; }
const String& format() const { return m_format; }
bool isLocal() const { return m_isLocal; }
void setFormat(const String& format) { m_format = format; }
bool isSupportedFormat() const;
#if ENABLE(SVG_FONTS)
bool isSVGFontFaceSrc() const;
bool isSVGFontTarget() const;
SVGFontFaceElement* svgFontFaceElement() const { return m_svgFontFaceElement; }
void setSVGFontFaceElement(SVGFontFaceElement* element) { m_svgFontFaceElement = element; }
#endif
String customCSSText() const;
bool traverseSubresources(const std::function<bool (const CachedResource&)>& handler) const;
CachedFont* cachedFont(Document*, bool isSVG, bool isInitiatingElementInUserAgentShadowTree);
bool equals(const CSSFontFaceSrcValue&) const;
private:
CSSFontFaceSrcValue(const String& resource, bool local)
: CSSValue(FontFaceSrcClass)
, m_resource(resource)
, m_isLocal(local)
#if ENABLE(SVG_FONTS)
, m_svgFontFaceElement(0)
#endif
{
}
String m_resource;
String m_format;
bool m_isLocal;
CachedResourceHandle<CachedFont> m_cachedFont;
#if ENABLE(SVG_FONTS)
SVGFontFaceElement* m_svgFontFaceElement;
#endif
};
}
SPECIALIZE_TYPE_TRAITS_CSS_VALUE(CSSFontFaceSrcValue, isFontFaceSrcValue())