18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is free software; you can redistribute it and/or 5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * modify it under the terms of the GNU Library General Public 6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * License as published by the Free Software Foundation; either 7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * version 2 of the License, or (at your option) any later version. 8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is distributed in the hope that it will be useful, 10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Library General Public License for more details. 13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * You should have received a copy of the GNU Library General Public License 15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * along with this library; see the file COPYING.LIB. If not, write to 16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Boston, MA 02110-1301, USA. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG_FONTS) 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGFontFaceSrcElement.h" 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSFontFaceSrcValue.h" 26f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "CSSValueList.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGFontFaceElement.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGFontFaceNameElement.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGFontFaceUriElement.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGNames.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace SVGNames; 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 365ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monseninline SVGFontFaceSrcElement::SVGFontFaceSrcElement(const QualifiedName& tagName, Document* document) 375ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen : SVGElement(tagName, document) 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 415ddde30071f639962dd557c453f2ad01f8f0fd00Kristian MonsenPassRefPtr<SVGFontFaceSrcElement> SVGFontFaceSrcElement::create(const QualifiedName& tagName, Document* document) 425ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen{ 435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen return adoptRef(new SVGFontFaceSrcElement(tagName, document)); 445ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen} 455ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<CSSValueList> SVGFontFaceSrcElement::srcValue() const 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (Node* child = firstChild(); child; child = child->nextSibling()) { 50e14391e94c850b8bd03680c23b38978db68687a8John Reck RefPtr<CSSFontFaceSrcValue> srcValue; 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (child->hasTagName(font_face_uriTag)) 52e14391e94c850b8bd03680c23b38978db68687a8John Reck srcValue = static_cast<SVGFontFaceUriElement*>(child)->srcValue(); 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (child->hasTagName(font_face_nameTag)) 54e14391e94c850b8bd03680c23b38978db68687a8John Reck srcValue = static_cast<SVGFontFaceNameElement*>(child)->srcValue(); 55e14391e94c850b8bd03680c23b38978db68687a8John Reck if (srcValue && srcValue->resource().length()) 56e14391e94c850b8bd03680c23b38978db68687a8John Reck list->append(srcValue); 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return list; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid SVGFontFaceSrcElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (parentNode() && parentNode()->hasTagName(font_faceTag)) 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static_cast<SVGFontFaceElement*>(parentNode())->rebuildFontFace(); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG_FONTS) 71