File indexing completed on 2024-04-28 15:24:33

0001 /*
0002    Copyright (C) 2007 Eric Seidel <eric@webkit.org>
0003 
0004    This library is free software; you can redistribute it and/or
0005    modify it under the terms of the GNU Library General Public
0006    License as published by the Free Software Foundation; either
0007    version 2 of the License, or (at your option) any later version.
0008 
0009    This library is distributed in the hope that it will be useful,
0010    but WITHOUT ANY WARRANTY; without even the implied warranty of
0011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012    Library General Public License for more details.
0013 
0014    You should have received a copy of the GNU Library General Public License
0015    along with this library; see the file COPYING.LIB.  If not, write to
0016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017    Boston, MA 02110-1301, USA.
0018  */
0019 
0020 #if ENABLE(SVG_FONTS)
0021 #include "SVGFontFaceFormatElement.h"
0022 
0023 #include "SVGFontFaceElement.h"
0024 #include "SVGNames.h"
0025 
0026 namespace WebCore
0027 {
0028 
0029 using namespace SVGNames;
0030 
0031 SVGFontFaceFormatElement::SVGFontFaceFormatElement(const QualifiedName &tagName, Document *doc)
0032     : SVGElement(tagName, doc)
0033 {
0034 }
0035 
0036 void SVGFontFaceFormatElement::childrenChanged(bool changedByParser, Node *beforeChange, Node *afterChange, int childCountDelta)
0037 {
0038     SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
0039 
0040     if (!parentNode() || !parentNode()->hasTagName(font_face_uriTag)) {
0041         return;
0042     }
0043 
0044     Node *ancestor = parentNode()->parentNode();
0045     if (!ancestor || !ancestor->hasTagName(font_face_srcTag)) {
0046         return;
0047     }
0048 
0049     ancestor = ancestor->parentNode();
0050     if (ancestor && ancestor->hasTagName(font_faceTag)) {
0051         static_cast<SVGFontFaceElement *>(ancestor)->rebuildFontFace();
0052     }
0053 }
0054 
0055 }
0056 
0057 #endif // ENABLE(SVG_FONTS)