KHTML
SVGFontFaceUriElement.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "config.h"
00021
00022 #if ENABLE(SVG_FONTS)
00023 #include "SVGFontFaceUriElement.h"
00024
00025 #include "CSSFontFaceSrcValue.h"
00026 #include "SVGFontFaceElement.h"
00027 #include "SVGNames.h"
00028 #include "XLinkNames.h"
00029
00030 namespace WebCore {
00031
00032 using namespace SVGNames;
00033
00034 SVGFontFaceUriElement::SVGFontFaceUriElement(const QualifiedName& tagName, Document* doc)
00035 : SVGElement(tagName, doc)
00036 {
00037 }
00038
00039 PassRefPtr<CSSFontFaceSrcValue> SVGFontFaceUriElement::srcValue() const
00040 {
00041 RefPtr<CSSFontFaceSrcValue> src = new CSSFontFaceSrcValue(getAttribute(XLinkNames::hrefAttr), false);
00042 AtomicString value(getAttribute(formatAttr));
00043 src->setFormat(value.isEmpty() ? "svg" : value);
00044 return src.release();
00045 }
00046
00047 void SVGFontFaceUriElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
00048 {
00049 SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
00050
00051 if (!parentNode() || !parentNode()->hasTagName(font_face_srcTag))
00052 return;
00053
00054 Node* grandParent = parentNode()->parentNode();
00055 if (grandParent && grandParent->hasTagName(font_faceTag))
00056 static_cast<SVGFontFaceElement*>(grandParent)->rebuildFontFace();
00057 }
00058
00059 }
00060
00061 #endif // ENABLE(SVG_FONTS)