SVG: Missing implementation of <altGlyphDef>, <altGlyphItem> and <glyphRef>
authorleo.yang@torchmobile.com.cn <leo.yang@torchmobile.com.cn@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Jul 2011 02:48:33 +0000 (02:48 +0000)
committerleo.yang@torchmobile.com.cn <leo.yang@torchmobile.com.cn@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Jul 2011 02:48:33 +0000 (02:48 +0000)
https://bugs.webkit.org/show_bug.cgi?id=60850

Reviewed by Nikolas Zimmermann.

SVG spec: http://www.w3.org/TR/SVG/text.html#AlternateGlyphDefinitions.
This patch is to implement SVG <altGlyphDef>, <altGlyphItem> and <glyphRef>
elements for alternative glyph features.

Source/WebCore:

NOTE: x, y, dx, dy, format and glyphRef attributes on <glyphRef> are not
honored yet, so neither are the reaction of dynamic change of them. They
will be honored in separated patches.

Test: svg/W3C-SVG-1.1/text-altglyph-01-b.svg
With this patch this test works as expected.

* CMakeLists.txt:
* CodeGenerators.pri:
* DerivedSources.cpp:
* DerivedSources.make:
* GNUmakefile.list.am:
* WebCore.exp.in:
* WebCore.gypi:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* bindings/objc/DOM.mm:
(WebCore::createElementClassMap):
* bindings/objc/DOMSVG.h:
* page/DOMWindow.idl:
* svg/SVGAllInOne.cpp:
* svg/SVGAltGlyphDefElement.cpp: Added.
(WebCore::SVGAltGlyphDefElement::SVGAltGlyphDefElement):
(WebCore::SVGAltGlyphDefElement::create):
(WebCore::SVGAltGlyphDefElement::hasValidGlyphElements):
* svg/SVGAltGlyphDefElement.h: Added.
* svg/SVGAltGlyphDefElement.idl: Added.
* svg/SVGAltGlyphElement.cpp:
(WebCore::SVGAltGlyphElement::hasValidGlyphElements):
* svg/SVGAltGlyphElement.h:
* svg/SVGAltGlyphItemElement.cpp: Added.
(WebCore::SVGAltGlyphItemElement::SVGAltGlyphItemElement):
(WebCore::SVGAltGlyphItemElement::create):
(WebCore::SVGAltGlyphItemElement::hasValidGlyphElements):
* svg/SVGAltGlyphItemElement.h: Added.
* svg/SVGAltGlyphItemElement.idl: Added.
* svg/SVGFontData.cpp:
(WebCore::SVGFontData::applySVGGlyphSelection):
* svg/SVGGlyphRefElement.cpp: Added.
(WebCore::SVGGlyphRefElement::SVGGlyphRefElement):
(WebCore::SVGGlyphRefElement::create):
(WebCore::SVGGlyphRefElement::hasValidGlyphElement):
(WebCore::SVGGlyphRefElement::parseMappedAttribute):
(WebCore::SVGGlyphRefElement::glyphRef):
(WebCore::SVGGlyphRefElement::setGlyphRef):
(WebCore::SVGGlyphRefElement::setX):
(WebCore::SVGGlyphRefElement::setY):
(WebCore::SVGGlyphRefElement::setDx):
(WebCore::SVGGlyphRefElement::setDy):
* svg/SVGGlyphRefElement.h: Added.
* svg/SVGGlyphRefElement.idl: Added.
* svg/svgtags.in:

Source/WebKit/mac:

* MigrateHeaders.make:

LayoutTests:

Updated test expectation.

* platform/chromium-linux/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.png:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@91331 268f45cc-cd09-0410-ab3c-d52691b4dbfc

32 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/chromium-linux/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.png
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/CodeGenerators.pri
Source/WebCore/DerivedSources.cpp
Source/WebCore/DerivedSources.make
Source/WebCore/GNUmakefile.list.am
Source/WebCore/WebCore.exp.in
Source/WebCore/WebCore.gypi
Source/WebCore/WebCore.pro
Source/WebCore/WebCore.vcproj/WebCore.vcproj
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/bindings/objc/DOM.mm
Source/WebCore/bindings/objc/DOMSVG.h
Source/WebCore/page/DOMWindow.idl
Source/WebCore/svg/SVGAllInOne.cpp
Source/WebCore/svg/SVGAltGlyphDefElement.cpp [new file with mode: 0644]
Source/WebCore/svg/SVGAltGlyphDefElement.h [new file with mode: 0644]
Source/WebCore/svg/SVGAltGlyphDefElement.idl [new file with mode: 0644]
Source/WebCore/svg/SVGAltGlyphElement.cpp
Source/WebCore/svg/SVGAltGlyphElement.h
Source/WebCore/svg/SVGAltGlyphItemElement.cpp [new file with mode: 0644]
Source/WebCore/svg/SVGAltGlyphItemElement.h [new file with mode: 0644]
Source/WebCore/svg/SVGAltGlyphItemElement.idl [new file with mode: 0644]
Source/WebCore/svg/SVGFontData.cpp
Source/WebCore/svg/SVGGlyphRefElement.cpp [new file with mode: 0644]
Source/WebCore/svg/SVGGlyphRefElement.h [new file with mode: 0644]
Source/WebCore/svg/SVGGlyphRefElement.idl [new file with mode: 0644]
Source/WebCore/svg/svgtags.in
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/MigrateHeaders.make

index 6cda6d39c3a43f3dd87af39c2012500f2af541d6..df0fee42217554d368f317e5f5e8d66d5890f968 100644 (file)
@@ -1,3 +1,18 @@
+2011-07-19  Leo Yang  <leoyang.webkit@gmail.com>
+
+        SVG: Missing implementation of <altGlyphDef>, <altGlyphItem> and <glyphRef>
+        https://bugs.webkit.org/show_bug.cgi?id=60850
+
+        Reviewed by Nikolas Zimmermann.
+
+        SVG spec: http://www.w3.org/TR/SVG/text.html#AlternateGlyphDefinitions.
+        This patch is to implement SVG <altGlyphDef>, <altGlyphItem> and <glyphRef>
+        elements for alternative glyph features.
+
+        Updated test expectation.
+
+        * platform/chromium-linux/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.png:
+
 2011-07-19  Ryosuke Niwa  <rniwa@webkit.org>
 
         Chromium test expectation update. svg/custom/crash-textPath-attributes.html is hitting an assertion.
index 391ee78ac612c3449d1b80be3843e4a1e13531d8..75498e1b9a15362ef4d341d473605c89f0b1b3b2 100644 (file)
Binary files a/LayoutTests/platform/chromium-linux/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.png and b/LayoutTests/platform/chromium-linux/svg/W3C-SVG-1.1/text-altglyph-01-b-expected.png differ
index 033f17f77e4c696d4688cd9552be22d3663dc814..11b44b8304fd55c177ab7d69aef81953e98a7b5a 100644 (file)
@@ -1662,7 +1662,9 @@ IF (ENABLE_SVG)
         rendering/svg/SVGTextQuery.cpp
         svg/ColorDistance.cpp
         svg/SVGAElement.cpp
+        svg/SVGAltGlyphDefElement.cpp
         svg/SVGAltGlyphElement.cpp
+        svg/SVGAltGlyphItemElement.cpp
         svg/SVGAngle.cpp
         svg/SVGAnimateColorElement.cpp
         svg/SVGAnimatedAngle.cpp
@@ -1737,6 +1739,7 @@ IF (ENABLE_SVG)
         svg/SVGForeignObjectElement.cpp
         svg/SVGGElement.cpp
         svg/SVGGlyphElement.cpp
+        svg/SVGGlyphRefElement.cpp
         svg/SVGGradientElement.cpp
         svg/SVGHKernElement.cpp
         svg/SVGImageElement.cpp
@@ -1820,7 +1823,9 @@ IF (ENABLE_SVG)
 
     LIST(APPEND WebCore_IDL_FILES
         svg/SVGAElement.idl
+        svg/SVGAltGlyphDefElement.idl
         svg/SVGAltGlyphElement.idl
+        svg/SVGAltGlyphItemElement.idl
         svg/SVGAngle.idl
         svg/SVGAnimateColorElement.idl
         svg/SVGAnimateMotionElement.idl
@@ -1887,6 +1892,7 @@ IF (ENABLE_SVG)
         svg/SVGForeignObjectElement.idl
         svg/SVGGElement.idl
         svg/SVGGlyphElement.idl
+        svg/SVGGlyphRefElement.idl
         svg/SVGGradientElement.idl
         svg/SVGHKernElement.idl
         svg/SVGImageElement.idl
index 0107bd255f983010d2dde81bfc0d6f7365901e57..b530c4c94bd5cb1327953cfe4b51cfacb996a213 100644 (file)
@@ -1,3 +1,68 @@
+2011-07-19  Leo Yang  <leoyang.webkit@gmail.com>
+
+        SVG: Missing implementation of <altGlyphDef>, <altGlyphItem> and <glyphRef>
+        https://bugs.webkit.org/show_bug.cgi?id=60850
+
+        Reviewed by Nikolas Zimmermann.
+
+        SVG spec: http://www.w3.org/TR/SVG/text.html#AlternateGlyphDefinitions.
+        This patch is to implement SVG <altGlyphDef>, <altGlyphItem> and <glyphRef>
+        elements for alternative glyph features.
+
+        NOTE: x, y, dx, dy, format and glyphRef attributes on <glyphRef> are not
+        honored yet, so neither are the reaction of dynamic change of them. They
+        will be honored in separated patches.
+
+        Test: svg/W3C-SVG-1.1/text-altglyph-01-b.svg
+        With this patch this test works as expected.
+
+        * CMakeLists.txt:
+        * CodeGenerators.pri:
+        * DerivedSources.cpp:
+        * DerivedSources.make:
+        * GNUmakefile.list.am:
+        * WebCore.exp.in:
+        * WebCore.gypi:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/objc/DOM.mm:
+        (WebCore::createElementClassMap):
+        * bindings/objc/DOMSVG.h:
+        * page/DOMWindow.idl:
+        * svg/SVGAllInOne.cpp:
+        * svg/SVGAltGlyphDefElement.cpp: Added.
+        (WebCore::SVGAltGlyphDefElement::SVGAltGlyphDefElement):
+        (WebCore::SVGAltGlyphDefElement::create):
+        (WebCore::SVGAltGlyphDefElement::hasValidGlyphElements):
+        * svg/SVGAltGlyphDefElement.h: Added.
+        * svg/SVGAltGlyphDefElement.idl: Added.
+        * svg/SVGAltGlyphElement.cpp:
+        (WebCore::SVGAltGlyphElement::hasValidGlyphElements):
+        * svg/SVGAltGlyphElement.h:
+        * svg/SVGAltGlyphItemElement.cpp: Added.
+        (WebCore::SVGAltGlyphItemElement::SVGAltGlyphItemElement):
+        (WebCore::SVGAltGlyphItemElement::create):
+        (WebCore::SVGAltGlyphItemElement::hasValidGlyphElements):
+        * svg/SVGAltGlyphItemElement.h: Added.
+        * svg/SVGAltGlyphItemElement.idl: Added.
+        * svg/SVGFontData.cpp:
+        (WebCore::SVGFontData::applySVGGlyphSelection):
+        * svg/SVGGlyphRefElement.cpp: Added.
+        (WebCore::SVGGlyphRefElement::SVGGlyphRefElement):
+        (WebCore::SVGGlyphRefElement::create):
+        (WebCore::SVGGlyphRefElement::hasValidGlyphElement):
+        (WebCore::SVGGlyphRefElement::parseMappedAttribute):
+        (WebCore::SVGGlyphRefElement::glyphRef):
+        (WebCore::SVGGlyphRefElement::setGlyphRef):
+        (WebCore::SVGGlyphRefElement::setX):
+        (WebCore::SVGGlyphRefElement::setY):
+        (WebCore::SVGGlyphRefElement::setDx):
+        (WebCore::SVGGlyphRefElement::setDy):
+        * svg/SVGGlyphRefElement.h: Added.
+        * svg/SVGGlyphRefElement.idl: Added.
+        * svg/svgtags.in:
+
 2011-07-19  Adam Roben  <aroben@apple.com>
 
         Remove some unused code in FormDataStreamCFNet
index 1b7829a2d1e6a21e3e2d5fe7007f7955b98780c5..8cc4e95f4e18561334465986bccd659cc9e1c641 100644 (file)
@@ -441,7 +441,9 @@ contains(DEFINES, ENABLE_SVG=1) {
   IDL_BINDINGS += \
     svg/SVGZoomEvent.idl \
     svg/SVGAElement.idl \
+    svg/SVGAltGlyphDefElement.idl \
     svg/SVGAltGlyphElement.idl \
+    svg/SVGAltGlyphItemElement.idl \
     svg/SVGAngle.idl \
     svg/SVGAnimateColorElement.idl \
     svg/SVGAnimateMotionElement.idl \
@@ -508,6 +510,7 @@ contains(DEFINES, ENABLE_SVG=1) {
     svg/SVGForeignObjectElement.idl \
     svg/SVGGElement.idl \
     svg/SVGGlyphElement.idl \
+    svg/SVGGlyphRefElement.idl \
     svg/SVGGradientElement.idl \
     svg/SVGHKernElement.idl \
     svg/SVGImageElement.idl \
index 680261f27683c1a86baa4d036ced8d8841034ed0..9b0ba8344ed1909a284db7ba2800f562fd68cdd2 100644 (file)
 #include "JSStyleSheet.cpp"
 #include "JSStyleSheetList.cpp"
 #include "JSSVGAElement.cpp"
+#include "JSSVGAltGlyphDefElement.cpp"
 #include "JSSVGAltGlyphElement.cpp"
+#include "JSSVGAltGlyphItemElement.cpp"
 #include "JSSVGAngle.cpp"
 #include "JSSVGAnimateColorElement.cpp"
 #include "JSSVGAnimatedAngle.cpp"
 #include "JSSVGForeignObjectElement.cpp"
 #include "JSSVGGElement.cpp"
 #include "JSSVGGlyphElement.cpp"
+#include "JSSVGGlyphRefElement.cpp"
 #include "JSSVGGradientElement.cpp"
 #include "JSSVGHKernElement.cpp"
 #include "JSSVGImageElement.cpp"
index 08b1014376862494263ca1ed8604d55c808a1db4..492d12b24b07c2524aabd1fda65ce42d2a6f2b48 100644 (file)
@@ -372,7 +372,9 @@ DOM_CLASSES = \
     StreamEvent \
     StringCallback \
     SVGAElement \
+    SVGAltGlyphDefElement \
     SVGAltGlyphElement \
+    SVGAltGlyphItemElement \
     SVGAngle \
     SVGAnimateColorElement \
     SVGAnimateElement \
@@ -442,6 +444,7 @@ DOM_CLASSES = \
     SVGForeignObjectElement \
     SVGGElement \
     SVGGlyphElement \
+    SVGGlyphRefElement \
     SVGGradientElement \
     SVGHKernElement \
     SVGImageElement \
index c7975f49c0df1534fb3ef66cc43e9ffc81ae2690..8985a7ab9ed6f0e5425957b855a0229fd46c3e2f 100644 (file)
@@ -3433,8 +3433,12 @@ webcore_sources += \
        Source/WebCore/svg/RadialGradientAttributes.h \
        Source/WebCore/svg/SVGAElement.cpp \
        Source/WebCore/svg/SVGAElement.h \
+       Source/WebCore/svg/SVGAltGlyphDefElement.cpp \
+       Source/WebCore/svg/SVGAltGlyphDefElement.h \
        Source/WebCore/svg/SVGAltGlyphElement.cpp \
        Source/WebCore/svg/SVGAltGlyphElement.h \
+       Source/WebCore/svg/SVGAltGlyphItemElement.cpp \
+       Source/WebCore/svg/SVGAltGlyphItemElement.h \
        Source/WebCore/svg/SVGAngle.cpp \
        Source/WebCore/svg/SVGAngle.h \
        Source/WebCore/svg/SVGAnimateColorElement.cpp \
@@ -3589,6 +3593,8 @@ webcore_sources += \
        Source/WebCore/svg/SVGGElement.h \
        Source/WebCore/svg/SVGGlyphElement.cpp \
        Source/WebCore/svg/SVGGlyphElement.h \
+       Source/WebCore/svg/SVGGlyphRefElement.cpp \
+       Source/WebCore/svg/SVGGlyphRefElement.h \
        Source/WebCore/svg/SVGGlyphMap.h \
        Source/WebCore/svg/SVGGradientElement.cpp \
        Source/WebCore/svg/SVGGradientElement.h \
@@ -4220,8 +4226,12 @@ webcore_built_sources += \
        DerivedSources/WebCore/JSElementTimeControl.h \
        DerivedSources/WebCore/JSSVGAElement.cpp \
        DerivedSources/WebCore/JSSVGAElement.h \
+       DerivedSources/WebCore/JSSVGAltGlyphDefElement.cpp \
+       DerivedSources/WebCore/JSSVGAltGlyphDefElement.h \
        DerivedSources/WebCore/JSSVGAltGlyphElement.cpp \
        DerivedSources/WebCore/JSSVGAltGlyphElement.h \
+       DerivedSources/WebCore/JSSVGAltGlyphItemElement.cpp \
+       DerivedSources/WebCore/JSSVGAltGlyphItemElement.h \
        DerivedSources/WebCore/JSSVGAngle.cpp \
        DerivedSources/WebCore/JSSVGAngle.h \
        DerivedSources/WebCore/JSSVGAnimateColorElement.cpp \
@@ -4356,6 +4366,8 @@ webcore_built_sources += \
        DerivedSources/WebCore/JSSVGGElement.h \
        DerivedSources/WebCore/JSSVGGlyphElement.cpp \
        DerivedSources/WebCore/JSSVGGlyphElement.h \
+       DerivedSources/WebCore/JSSVGGlyphRefElement.cpp \
+       DerivedSources/WebCore/JSSVGGlyphRefElement.h \
        DerivedSources/WebCore/JSSVGGradientElement.cpp \
        DerivedSources/WebCore/JSSVGGradientElement.h \
        DerivedSources/WebCore/JSSVGHKernElement.cpp \
index d177308292cea5d1400a6e619e74257120dbbaf2..8faa97f481696a23087431b44f52657d8ac3d528 100644 (file)
@@ -1691,7 +1691,9 @@ __ZN7WebCore8createCFERKNS_15ProtectionSpaceE
 
 #if ENABLE(SVG) && ENABLE(SVG_DOM_OBJC_BINDINGS)
 .objc_class_name_DOMSVGAElement
+.objc_class_name_DOMSVGAltGlyphDefElement
 .objc_class_name_DOMSVGAltGlyphElement
+.objc_class_name_DOMSVGAltGlyphItemElement
 .objc_class_name_DOMSVGAngle
 .objc_class_name_DOMSVGAnimateColorElement
 .objc_class_name_DOMSVGAnimatedAngle
@@ -1719,6 +1721,7 @@ __ZN7WebCore8createCFERKNS_15ProtectionSpaceE
 .objc_class_name_DOMSVGElementInstanceList
 .objc_class_name_DOMSVGEllipseElement
 .objc_class_name_DOMSVGGElement
+.objc_class_name_DOMSVGGlyphRefElement
 .objc_class_name_DOMSVGGradientElement
 .objc_class_name_DOMSVGImageElement
 .objc_class_name_DOMSVGLength
index 113257209c2d9c7772047d125217c31a48d487e1..56f4e1455f834a7180ba05031afeac59eb90a223 100644 (file)
             'svg/ElementTimeControl.idl',
             'svg/SVGAElement.idl',
             'svg/SVGAltGlyphElement.idl',
+            'svg/SVGAltGlyphItemElement.idl',
+            'svg/SVGAltGlyphDefElement.idl',
             'svg/SVGAngle.idl',
             'svg/SVGAnimateColorElement.idl',
             'svg/SVGAnimateMotionElement.idl',
             'svg/SVGForeignObjectElement.idl',
             'svg/SVGGElement.idl',
             'svg/SVGGlyphElement.idl',
+            'svg/SVGGlyphRefElement.idl',
             'svg/SVGGradientElement.idl',
             'svg/SVGHKernElement.idl',
             'svg/SVGImageElement.idl',
             'svg/SVGAElement.cpp',
             'svg/SVGAElement.h',
             'svg/SVGAllInOne.cpp',
+            'svg/SVGAltGlyphDefElement.cpp',
+            'svg/SVGAltGlyphDefElement.h',
             'svg/SVGAltGlyphElement.cpp',
             'svg/SVGAltGlyphElement.h',
+            'svg/SVGAltGlyphItemElement.cpp',
+            'svg/SVGAltGlyphItemElement.h',
             'svg/SVGAngle.cpp',
             'svg/SVGAnimateColorElement.cpp',
             'svg/SVGAnimateColorElement.h',
             'svg/SVGGElement.h',
             'svg/SVGGlyphElement.cpp',
             'svg/SVGGlyphElement.h',
+            'svg/SVGGlyphRefElement.cpp',
+            'svg/SVGGlyphRefElement.h',
             'svg/SVGGlyphMap.h',
             'svg/SVGGradientElement.cpp',
             'svg/SVGGradientElement.h',
index 303526d7bdda8aa56d1d3bec7523e05ca1a71724..73a8e70d6a47c7ae25caf26f2bb1a495a482ed66 100644 (file)
@@ -2331,7 +2331,9 @@ HEADERS += \
     svg/properties/SVGStaticPropertyWithParentTearOff.h \
     svg/properties/SVGTransformListPropertyTearOff.h \
     svg/SVGAElement.h \
+    svg/SVGAltGlyphDefElement.h \
     svg/SVGAltGlyphElement.h \
+    svg/SVGAltGlyphItemElement.h \
     svg/SVGAngle.h \
     svg/SVGAnimateColorElement.h \
     svg/SVGAnimatedAngle.h \
@@ -2411,6 +2413,7 @@ HEADERS += \
     svg/SVGForeignObjectElement.h \
     svg/SVGGElement.h \
     svg/SVGGlyphElement.h \
+    svg/SVGGlyphRefElement.h \
     svg/SVGGradientElement.h \
     svg/SVGHKernElement.h \
     svg/SVGImageElement.h \
@@ -3338,7 +3341,9 @@ contains(DEFINES, ENABLE_SVG=1) {
               svg/SVGImageLoader.cpp \
               svg/ColorDistance.cpp \
               svg/SVGAElement.cpp \
+              svg/SVGAltGlyphDefElement.cpp \
               svg/SVGAltGlyphElement.cpp \
+              svg/SVGAltGlyphItemElement.cpp \
               svg/SVGAngle.cpp \
               svg/SVGAnimateColorElement.cpp \
               svg/SVGAnimatedAngle.cpp \
@@ -3412,6 +3417,7 @@ contains(DEFINES, ENABLE_SVG=1) {
               svg/SVGForeignObjectElement.cpp \
               svg/SVGGElement.cpp \
               svg/SVGGlyphElement.cpp \
+              svg/SVGGlyphRefElement.cpp \
               svg/SVGGradientElement.cpp \
               svg/SVGHKernElement.cpp \
               svg/SVGImageElement.cpp \
index 8c119fa3b887cf69bd6a7f7a0cdeafe41487347f..08363b201e24b328b627cd46dd48595195e9d6ea 100755 (executable)
                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGAElement.h"
                                >
                        </File>
+                       <File
+                               RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGAltGlyphDefElement.cpp"
+                               >
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug_Cairo_CFLite|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release_Cairo_CFLite|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug_All|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Production|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGAltGlyphDefElement.h"
+                               >
+                       </File>
                        <File
                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGAltGlyphElement.cpp"
                                >
                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGAltGlyphElement.h"
                                >
                        </File>
+                       <File
+                               RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGAltGlyphItemElement.cpp"
+                               >
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug_Cairo_CFLite|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release_Cairo_CFLite|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug_All|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Production|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGAltGlyphItemElement.h"
+                               >
+                       </File>
                        <File
                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGAngle.cpp"
                                >
                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGGlyphElement.h"
                                >
                        </File>
+                       <File
+                               RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGGlyphRefElement.cpp"
+                               >
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug_Cairo_CFLite|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release_Cairo_CFLite|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug_All|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Production|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGGlyphRefElement.h"
+                               >
+                       </File>
                        <File
                                RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSSVGGradientElement.cpp"
                                >
                                RelativePath="..\svg\SVGAllInOne.cpp"
                                >
                        </File>
+                       <File
+                               RelativePath="..\svg\SVGAltGlyphDefElement.h"
+                               >
+                       </File>
                        <File
                                RelativePath="..\svg\SVGAltGlyphElement.h"
                                >
                        </File>
+                       <File
+                               RelativePath="..\svg\SVGAltGlyphItemElement.h"
+                               >
+                       </File>
                        <File
                                RelativePath="..\svg\SVGAngle.h"
                                >
                                RelativePath="..\svg\SVGGlyphElement.h"
                                >
                        </File>
+                       <File
+                               RelativePath="..\svg\SVGGlyphRefElement.cpp"
+                               >
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug_Cairo_CFLite|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release_Cairo_CFLite|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug_All|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Production|Win32"
+                                       ExcludedFromBuild="true"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                       />
+                               </FileConfiguration>
+                       </File>
+                       <File
+                               RelativePath="..\svg\SVGGlyphRefElement.h"
+                               >
+                       </File>
                        <File
                                RelativePath="..\svg\SVGGlyphMap.h"
                                >
index 7dd317c1b26e25a01780eb36838ce8df2890c551..87b75ab4fc8c99524019be9c18d977ca526ed84e 100644 (file)
                22BD9F7F1353625C009BD102 /* ImageBufferData.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BD9F7D1353625C009BD102 /* ImageBufferData.h */; };
                22BD9F81135364FE009BD102 /* ImageBufferDataCG.h in Headers */ = {isa = PBXBuildFile; fileRef = 22BD9F80135364FE009BD102 /* ImageBufferDataCG.h */; };
                245D80A313280E40003492A6 /* SQLCallbackWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 245D80A213280E40003492A6 /* SQLCallbackWrapper.h */; };
+               24AA568D13CC94CE00E902F6 /* DOMSVGAltGlyphItemElementInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 24D912A313CA977D00D21915 /* DOMSVGAltGlyphItemElementInternal.h */; };
+               24AA568E13CC950900E902F6 /* DOMSVGAltGlyphItemElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 24D912A113CA977D00D21915 /* DOMSVGAltGlyphItemElement.h */; };
+               24AA569013CC952F00E902F6 /* DOMSVGAltGlyphDefElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 24D9129B13CA975A00D21915 /* DOMSVGAltGlyphDefElement.h */; };
+               24AA569213CC954E00E902F6 /* DOMSVGAltGlyphDefElementInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 24D9129D13CA975A00D21915 /* DOMSVGAltGlyphDefElementInternal.h */; };
+               24AA569713CC95A800E902F6 /* DOMSVGGlyphRefElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 24D912A713CA97CF00D21915 /* DOMSVGGlyphRefElement.h */; };
+               24AA569913CC95CC00E902F6 /* DOMSVGGlyphRefElementInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 24D912A913CA97CF00D21915 /* DOMSVGGlyphRefElementInternal.h */; };
+               24D9129113CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D9128F13CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp */; };
+               24D9129213CA951E00D21915 /* JSSVGAltGlyphDefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D9129013CA951E00D21915 /* JSSVGAltGlyphDefElement.h */; };
+               24D9129513CA956100D21915 /* JSSVGAltGlyphItemElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D9129313CA956100D21915 /* JSSVGAltGlyphItemElement.cpp */; };
+               24D9129613CA956100D21915 /* JSSVGAltGlyphItemElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D9129413CA956100D21915 /* JSSVGAltGlyphItemElement.h */; };
+               24D9129813CA96DE00D21915 /* JSSVGGlyphRefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D9129713CA96DE00D21915 /* JSSVGGlyphRefElement.cpp */; };
+               24D9129A13CA971400D21915 /* JSSVGGlyphRefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D9129913CA971400D21915 /* JSSVGGlyphRefElement.h */; };
+               24D9129E13CA975A00D21915 /* DOMSVGAltGlyphDefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D9129B13CA975A00D21915 /* DOMSVGAltGlyphDefElement.h */; };
+               24D9129F13CA975A00D21915 /* DOMSVGAltGlyphDefElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24D9129C13CA975A00D21915 /* DOMSVGAltGlyphDefElement.mm */; };
+               24D912A013CA975A00D21915 /* DOMSVGAltGlyphDefElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D9129D13CA975A00D21915 /* DOMSVGAltGlyphDefElementInternal.h */; };
+               24D912A413CA977D00D21915 /* DOMSVGAltGlyphItemElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912A113CA977D00D21915 /* DOMSVGAltGlyphItemElement.h */; };
+               24D912A513CA977D00D21915 /* DOMSVGAltGlyphItemElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24D912A213CA977D00D21915 /* DOMSVGAltGlyphItemElement.mm */; };
+               24D912A613CA977D00D21915 /* DOMSVGAltGlyphItemElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912A313CA977D00D21915 /* DOMSVGAltGlyphItemElementInternal.h */; };
+               24D912AA13CA97CF00D21915 /* DOMSVGGlyphRefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912A713CA97CF00D21915 /* DOMSVGGlyphRefElement.h */; };
+               24D912AB13CA97CF00D21915 /* DOMSVGGlyphRefElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 24D912A813CA97CF00D21915 /* DOMSVGGlyphRefElement.mm */; };
+               24D912AC13CA97CF00D21915 /* DOMSVGGlyphRefElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912A913CA97CF00D21915 /* DOMSVGGlyphRefElementInternal.h */; };
+               24D912B013CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D912AD13CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp */; };
+               24D912B113CA9A1F00D21915 /* SVGAltGlyphDefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912AE13CA9A1F00D21915 /* SVGAltGlyphDefElement.h */; };
+               24D912B713CA9A6900D21915 /* SVGAltGlyphItemElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D912B413CA9A6900D21915 /* SVGAltGlyphItemElement.cpp */; };
+               24D912B813CA9A6900D21915 /* SVGAltGlyphItemElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912B513CA9A6900D21915 /* SVGAltGlyphItemElement.h */; };
+               24D912BD13CA9A9700D21915 /* SVGGlyphRefElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D912BA13CA9A9700D21915 /* SVGGlyphRefElement.cpp */; };
+               24D912BE13CA9A9700D21915 /* SVGGlyphRefElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D912BB13CA9A9700D21915 /* SVGGlyphRefElement.h */; };
                24F54EAC101FE914000AE741 /* ApplicationCacheHost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24F54EAA101FE914000AE741 /* ApplicationCacheHost.cpp */; };
                24F54EAD101FE914000AE741 /* ApplicationCacheHost.h in Headers */ = {isa = PBXBuildFile; fileRef = 24F54EAB101FE914000AE741 /* ApplicationCacheHost.h */; settings = {ATTRIBUTES = (); }; };
                2542F4DA1166C25A00E89A86 /* UserGestureIndicator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2542F4D81166C25A00E89A86 /* UserGestureIndicator.cpp */; };
                                A8F46B380CB20A9D003A9670 /* DOMSVG.h in Copy Generated Headers */,
                                A8F46AE40CB20A9D003A9670 /* DOMSVGAElement.h in Copy Generated Headers */,
                                A80F3B620CCDCE24002DD990 /* DOMSVGAElementInternal.h in Copy Generated Headers */,
+                               24AA569013CC952F00E902F6 /* DOMSVGAltGlyphDefElement.h in Copy Generated Headers */,
+                               24AA569213CC954E00E902F6 /* DOMSVGAltGlyphDefElementInternal.h in Copy Generated Headers */,
                                E17A4A1B0D97991D00FC10C6 /* DOMSVGAltGlyphElement.h in Copy Generated Headers */,
                                E17A4A1C0D97991D00FC10C6 /* DOMSVGAltGlyphElementInternal.h in Copy Generated Headers */,
+                               24AA568E13CC950900E902F6 /* DOMSVGAltGlyphItemElement.h in Copy Generated Headers */,
+                               24AA568D13CC94CE00E902F6 /* DOMSVGAltGlyphItemElementInternal.h in Copy Generated Headers */,
                                A80F3B3B0CCDCE24002DD990 /* DOMSVGAngle.h in Copy Generated Headers */,
                                A80F3B860CCDCE24002DD990 /* DOMSVGAngleInternal.h in Copy Generated Headers */,
                                A8F46A890CB20A9D003A9670 /* DOMSVGAnimateColorElement.h in Copy Generated Headers */,
                                A8F46AA20CB20A9D003A9670 /* DOMSVGGElement.h in Copy Generated Headers */,
                                A80F3B630CCDCE24002DD990 /* DOMSVGGElementInternal.h in Copy Generated Headers */,
                                B27B285D0CEF0D7200D39D54 /* DOMSVGGlyphElement.h in Copy Generated Headers */,
+                               24AA569713CC95A800E902F6 /* DOMSVGGlyphRefElement.h in Copy Generated Headers */,
+                               24AA569913CC95CC00E902F6 /* DOMSVGGlyphRefElementInternal.h in Copy Generated Headers */,
                                A8F46A880CB20A9D003A9670 /* DOMSVGGradientElement.h in Copy Generated Headers */,
                                A80F3B780CCDCE24002DD990 /* DOMSVGGradientElementInternal.h in Copy Generated Headers */,
                                A8F46AAE0CB20A9D003A9670 /* DOMSVGImageElement.h in Copy Generated Headers */,
                22BD9F80135364FE009BD102 /* ImageBufferDataCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageBufferDataCG.h; sourceTree = "<group>"; };
                2442BBF81194C9D300D49469 /* HashChangeEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashChangeEvent.h; sourceTree = "<group>"; };
                245D80A213280E40003492A6 /* SQLCallbackWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SQLCallbackWrapper.h; sourceTree = "<group>"; };
+               24D9128F13CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAltGlyphDefElement.cpp; sourceTree = "<group>"; };
+               24D9129013CA951E00D21915 /* JSSVGAltGlyphDefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGAltGlyphDefElement.h; sourceTree = "<group>"; };
+               24D9129313CA956100D21915 /* JSSVGAltGlyphItemElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGAltGlyphItemElement.cpp; sourceTree = "<group>"; };
+               24D9129413CA956100D21915 /* JSSVGAltGlyphItemElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGAltGlyphItemElement.h; sourceTree = "<group>"; };
+               24D9129713CA96DE00D21915 /* JSSVGGlyphRefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSVGGlyphRefElement.cpp; sourceTree = "<group>"; };
+               24D9129913CA971400D21915 /* JSSVGGlyphRefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSVGGlyphRefElement.h; sourceTree = "<group>"; };
+               24D9129B13CA975A00D21915 /* DOMSVGAltGlyphDefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAltGlyphDefElement.h; sourceTree = "<group>"; };
+               24D9129C13CA975A00D21915 /* DOMSVGAltGlyphDefElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGAltGlyphDefElement.mm; sourceTree = "<group>"; };
+               24D9129D13CA975A00D21915 /* DOMSVGAltGlyphDefElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAltGlyphDefElementInternal.h; sourceTree = "<group>"; };
+               24D912A113CA977D00D21915 /* DOMSVGAltGlyphItemElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAltGlyphItemElement.h; sourceTree = "<group>"; };
+               24D912A213CA977D00D21915 /* DOMSVGAltGlyphItemElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGAltGlyphItemElement.mm; sourceTree = "<group>"; };
+               24D912A313CA977D00D21915 /* DOMSVGAltGlyphItemElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGAltGlyphItemElementInternal.h; sourceTree = "<group>"; };
+               24D912A713CA97CF00D21915 /* DOMSVGGlyphRefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGGlyphRefElement.h; sourceTree = "<group>"; };
+               24D912A813CA97CF00D21915 /* DOMSVGGlyphRefElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGGlyphRefElement.mm; sourceTree = "<group>"; };
+               24D912A913CA97CF00D21915 /* DOMSVGGlyphRefElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGGlyphRefElementInternal.h; sourceTree = "<group>"; };
+               24D912AD13CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAltGlyphDefElement.cpp; sourceTree = "<group>"; };
+               24D912AE13CA9A1F00D21915 /* SVGAltGlyphDefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAltGlyphDefElement.h; sourceTree = "<group>"; };
+               24D912AF13CA9A1F00D21915 /* SVGAltGlyphDefElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGAltGlyphDefElement.idl; sourceTree = "<group>"; };
+               24D912B413CA9A6900D21915 /* SVGAltGlyphItemElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAltGlyphItemElement.cpp; sourceTree = "<group>"; };
+               24D912B513CA9A6900D21915 /* SVGAltGlyphItemElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAltGlyphItemElement.h; sourceTree = "<group>"; };
+               24D912B613CA9A6900D21915 /* SVGAltGlyphItemElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGAltGlyphItemElement.idl; sourceTree = "<group>"; };
+               24D912BA13CA9A9700D21915 /* SVGGlyphRefElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGGlyphRefElement.cpp; sourceTree = "<group>"; };
+               24D912BB13CA9A9700D21915 /* SVGGlyphRefElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGGlyphRefElement.h; sourceTree = "<group>"; };
+               24D912BC13CA9A9700D21915 /* SVGGlyphRefElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SVGGlyphRefElement.idl; sourceTree = "<group>"; };
                24F54EAA101FE914000AE741 /* ApplicationCacheHost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCacheHost.cpp; sourceTree = "<group>"; };
                24F54EAB101FE914000AE741 /* ApplicationCacheHost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCacheHost.h; sourceTree = "<group>"; };
                2542F4D81166C25A00E89A86 /* UserGestureIndicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserGestureIndicator.cpp; sourceTree = "<group>"; };
                                85ACEF740ACDCFCE001214FF /* DOMSVGAElement.h */,
                                85ACEF750ACDCFCE001214FF /* DOMSVGAElement.mm */,
                                A8E544150CA9D1C10097D09B /* DOMSVGAElementInternal.h */,
+                               24D9129B13CA975A00D21915 /* DOMSVGAltGlyphDefElement.h */,
+                               24D9129C13CA975A00D21915 /* DOMSVGAltGlyphDefElement.mm */,
+                               24D9129D13CA975A00D21915 /* DOMSVGAltGlyphDefElementInternal.h */,
                                65AA6BAC0D974A00000541AE /* DOMSVGAltGlyphElement.h */,
                                65AA6BAD0D974A00000541AE /* DOMSVGAltGlyphElement.mm */,
                                65AA6BAE0D974A00000541AE /* DOMSVGAltGlyphElementInternal.h */,
+                               24D912A113CA977D00D21915 /* DOMSVGAltGlyphItemElement.h */,
+                               24D912A213CA977D00D21915 /* DOMSVGAltGlyphItemElement.mm */,
+                               24D912A313CA977D00D21915 /* DOMSVGAltGlyphItemElementInternal.h */,
                                854163690AC7180B0001E01B /* DOMSVGAngle.h */,
                                854163680AC7180B0001E01B /* DOMSVGAngle.mm */,
                                A8E544130CA9D1C10097D09B /* DOMSVGAngleInternal.h */,
                                B27B28300CEF0C3500D39D54 /* DOMSVGGlyphElement.h */,
                                B27B28310CEF0C3500D39D54 /* DOMSVGGlyphElement.mm */,
                                B27B28320CEF0C3500D39D54 /* DOMSVGGlyphElementInternal.h */,
+                               24D912A713CA97CF00D21915 /* DOMSVGGlyphRefElement.h */,
+                               24D912A813CA97CF00D21915 /* DOMSVGGlyphRefElement.mm */,
+                               24D912A913CA97CF00D21915 /* DOMSVGGlyphRefElementInternal.h */,
                                85C9A2EC0AD7E90300FBFF1E /* DOMSVGGradientElement.h */,
                                85C9A2ED0AD7E90300FBFF1E /* DOMSVGGradientElement.mm */,
                                A8E5444B0CA9D1C10097D09B /* DOMSVGGradientElementInternal.h */,
                        children = (
                                B20111050AB7740500DB0E68 /* JSSVGAElement.cpp */,
                                B20111060AB7740500DB0E68 /* JSSVGAElement.h */,
+                               24D9128F13CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp */,
+                               24D9129013CA951E00D21915 /* JSSVGAltGlyphDefElement.h */,
                                6515EC8F0D9723FF0063D49A /* JSSVGAltGlyphElement.cpp */,
                                6515EC900D9723FF0063D49A /* JSSVGAltGlyphElement.h */,
+                               24D9129313CA956100D21915 /* JSSVGAltGlyphItemElement.cpp */,
+                               24D9129413CA956100D21915 /* JSSVGAltGlyphItemElement.h */,
                                B222F6960AB771950022EFAD /* JSSVGAngle.cpp */,
                                B222F6970AB771950022EFAD /* JSSVGAngle.h */,
                                B2FA3C4E0AB75A6E000E5AC4 /* JSSVGAnimateColorElement.cpp */,
                                B2FA3CB30AB75A6E000E5AC4 /* JSSVGGElement.h */,
                                B27B28210CEF0C0700D39D54 /* JSSVGGlyphElement.cpp */,
                                B27B28220CEF0C0700D39D54 /* JSSVGGlyphElement.h */,
+                               24D9129713CA96DE00D21915 /* JSSVGGlyphRefElement.cpp */,
+                               24D9129913CA971400D21915 /* JSSVGGlyphRefElement.h */,
                                B2FA3CB40AB75A6E000E5AC4 /* JSSVGGradientElement.cpp */,
                                B2FA3CB50AB75A6E000E5AC4 /* JSSVGGradientElement.h */,
                                848522771190162C006EDC7F /* JSSVGHKernElement.cpp */,
                                B22277DD0D00BF1F0071B782 /* SVGAElement.cpp */,
                                B22277DE0D00BF1F0071B782 /* SVGAElement.h */,
                                B22277DF0D00BF1F0071B782 /* SVGAElement.idl */,
+                               24D912AD13CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp */,
+                               24D912AE13CA9A1F00D21915 /* SVGAltGlyphDefElement.h */,
+                               24D912AF13CA9A1F00D21915 /* SVGAltGlyphDefElement.idl */,
                                65653F2A0D9727D200CA9723 /* SVGAltGlyphElement.cpp */,
                                65653F2B0D9727D200CA9723 /* SVGAltGlyphElement.h */,
                                65653F2C0D9727D200CA9723 /* SVGAltGlyphElement.idl */,
+                               24D912B413CA9A6900D21915 /* SVGAltGlyphItemElement.cpp */,
+                               24D912B513CA9A6900D21915 /* SVGAltGlyphItemElement.h */,
+                               24D912B613CA9A6900D21915 /* SVGAltGlyphItemElement.idl */,
                                B22277E00D00BF1F0071B782 /* SVGAngle.cpp */,
                                B22277E10D00BF1F0071B782 /* SVGAngle.h */,
                                B22277E20D00BF1F0071B782 /* SVGAngle.idl */,
                                B2A1F2A40CEF0ABF00442F6A /* SVGGlyphElement.cpp */,
                                B2A1F2A50CEF0ABF00442F6A /* SVGGlyphElement.h */,
                                B2A1F2A60CEF0ABF00442F6A /* SVGGlyphElement.idl */,
+                               24D912BA13CA9A9700D21915 /* SVGGlyphRefElement.cpp */,
+                               24D912BB13CA9A9700D21915 /* SVGGlyphRefElement.h */,
+                               24D912BC13CA9A9700D21915 /* SVGGlyphRefElement.idl */,
                                3744570E0DB05FA500AE0992 /* SVGGlyphMap.h */,
                                B22278930D00BF200071B782 /* SVGGradientElement.cpp */,
                                B22278940D00BF200071B782 /* SVGGradientElement.h */,
                                85A0F97E0AC7163D00161FDC /* DOMSVG.h in Headers */,
                                85ACEF7C0ACDCFCE001214FF /* DOMSVGAElement.h in Headers */,
                                85ACEF890ACDD04A001214FF /* DOMSVGAElementInternal.h in Headers */,
+                               24D9129E13CA975A00D21915 /* DOMSVGAltGlyphDefElement.h in Headers */,
+                               24D912A013CA975A00D21915 /* DOMSVGAltGlyphDefElementInternal.h in Headers */,
                                65AA6BAF0D974A00000541AE /* DOMSVGAltGlyphElement.h in Headers */,
                                65AA6BB10D974A00000541AE /* DOMSVGAltGlyphElementInternal.h in Headers */,
+                               24D912A413CA977D00D21915 /* DOMSVGAltGlyphItemElement.h in Headers */,
+                               24D912A613CA977D00D21915 /* DOMSVGAltGlyphItemElementInternal.h in Headers */,
                                854163790AC7180B0001E01B /* DOMSVGAngle.h in Headers */,
                                8541639E0AC718680001E01B /* DOMSVGAngleInternal.h in Headers */,
                                850361320ACE007C001F3D9E /* DOMSVGAnimateColorElement.h in Headers */,
                                85C9A31B0AD7E9A400FBFF1E /* DOMSVGGElementInternal.h in Headers */,
                                B27B283B0CEF0C3600D39D54 /* DOMSVGGlyphElement.h in Headers */,
                                B27B283D0CEF0C3600D39D54 /* DOMSVGGlyphElementInternal.h in Headers */,
+                               24D912AA13CA97CF00D21915 /* DOMSVGGlyphRefElement.h in Headers */,
+                               24D912AC13CA97CF00D21915 /* DOMSVGGlyphRefElementInternal.h in Headers */,
                                85C9A2F70AD7E90300FBFF1E /* DOMSVGGradientElement.h in Headers */,
                                85C9A31C0AD7E9A400FBFF1E /* DOMSVGGradientElementInternal.h in Headers */,
                                84852283119016A7006EDC7F /* DOMSVGHKernElement.h in Headers */,
                                BCE0139B0C0BEF180043860A /* JSStyleSheet.h in Headers */,
                                A84EBD830CB8C97700079609 /* JSStyleSheetList.h in Headers */,
                                B20111080AB7740500DB0E68 /* JSSVGAElement.h in Headers */,
+                               24D9129213CA951E00D21915 /* JSSVGAltGlyphDefElement.h in Headers */,
                                6515EC920D9723FF0063D49A /* JSSVGAltGlyphElement.h in Headers */,
+                               24D9129613CA956100D21915 /* JSSVGAltGlyphItemElement.h in Headers */,
                                B222F6990AB771950022EFAD /* JSSVGAngle.h in Headers */,
                                B2FA3D370AB75A6F000E5AC4 /* JSSVGAnimateColorElement.h in Headers */,
                                B2FA3D390AB75A6F000E5AC4 /* JSSVGAnimatedAngle.h in Headers */,
                                B2FA3D990AB75A6F000E5AC4 /* JSSVGForeignObjectElement.h in Headers */,
                                B2FA3D9B0AB75A6F000E5AC4 /* JSSVGGElement.h in Headers */,
                                B27B28280CEF0C0700D39D54 /* JSSVGGlyphElement.h in Headers */,
+                               24D9129A13CA971400D21915 /* JSSVGGlyphRefElement.h in Headers */,
                                B2FA3D9D0AB75A6F000E5AC4 /* JSSVGGradientElement.h in Headers */,
                                8485227C1190162C006EDC7F /* JSSVGHKernElement.h in Headers */,
                                B2FA3D9F0AB75A6F000E5AC4 /* JSSVGImageElement.h in Headers */,
                                087558C613B4A57D00F49307 /* SurrogatePairAwareTextIterator.h in Headers */,
                                62C1217D11AB9E77003C462C /* SuspendableTimer.h in Headers */,
                                B22279740D00BF220071B782 /* SVGAElement.h in Headers */,
+                               24D912B113CA9A1F00D21915 /* SVGAltGlyphDefElement.h in Headers */,
                                65653F2E0D9727D200CA9723 /* SVGAltGlyphElement.h in Headers */,
+                               24D912B813CA9A6900D21915 /* SVGAltGlyphItemElement.h in Headers */,
                                B22279770D00BF220071B782 /* SVGAngle.h in Headers */,
                                B222797A0D00BF220071B782 /* SVGAnimateColorElement.h in Headers */,
                                087B84961272CEC800A14417 /* SVGAnimatedAngle.h in Headers */,
                                B2227A270D00BF220071B782 /* SVGGElement.h in Headers */,
                                087E0AF713606D0B00FA4BA8 /* SVGGlyph.h in Headers */,
                                B2A1F2AE0CEF0ABF00442F6A /* SVGGlyphElement.h in Headers */,
+                               24D912BE13CA9A9700D21915 /* SVGGlyphRefElement.h in Headers */,
                                3744570F0DB05FA500AE0992 /* SVGGlyphMap.h in Headers */,
                                B2227A2A0D00BF220071B782 /* SVGGradientElement.h in Headers */,
                                650FBF2B0D9AF047008FC292 /* SVGHKernElement.h in Headers */,
                                FD82D7F713D4C8BD004E4372 /* JSWaveShaperNode.cpp in Sources */,
                                FD8E9BDF13D4CD2B0050DC72 /* JSWaveShaperNodeCustom.cpp in Sources */,
                                5913A24113D49EBA00F5B05C /* IdentifiersFactory.cpp in Sources */,
+                               24D9129113CA951E00D21915 /* JSSVGAltGlyphDefElement.cpp in Sources */,
+                               24D9129513CA956100D21915 /* JSSVGAltGlyphItemElement.cpp in Sources */,
+                               24D9129813CA96DE00D21915 /* JSSVGGlyphRefElement.cpp in Sources */,
+                               24D9129F13CA975A00D21915 /* DOMSVGAltGlyphDefElement.mm in Sources */,
+                               24D912A513CA977D00D21915 /* DOMSVGAltGlyphItemElement.mm in Sources */,
+                               24D912AB13CA97CF00D21915 /* DOMSVGGlyphRefElement.mm in Sources */,
+                               24D912B013CA9A1F00D21915 /* SVGAltGlyphDefElement.cpp in Sources */,
+                               24D912B713CA9A6900D21915 /* SVGAltGlyphItemElement.cpp in Sources */,
+                               24D912BD13CA9A9700D21915 /* SVGGlyphRefElement.cpp in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index 00540acaa683b43c4cab36ace59cec89071bf7f0..191b50cd6b44664796e6a421cde1ce33dbe27e57 100644 (file)
@@ -147,7 +147,9 @@ static void createElementClassMap()
 
 #if ENABLE(SVG_DOM_OBJC_BINDINGS)
     addElementClass(SVGNames::aTag, [DOMSVGAElement class]);
+    addElementClass(SVGNames::altGlyphDefTag, [DOMSVGAltGlyphDefElement class]);
     addElementClass(SVGNames::altGlyphTag, [DOMSVGAltGlyphElement class]);
+    addElementClass(SVGNames::altGlyphItemTag, [DOMSVGAltGlyphItemElement class]);
 #if ENABLE(SVG_ANIMATION)
     addElementClass(SVGNames::animateTag, [DOMSVGAnimateElement class]);
     addElementClass(SVGNames::animateColorTag, [DOMSVGAnimateColorElement class]);
@@ -196,6 +198,7 @@ static void createElementClassMap()
     addElementClass(SVGNames::font_face_srcTag, [DOMSVGFontFaceSrcElement class]);
     addElementClass(SVGNames::font_face_uriTag, [DOMSVGFontFaceUriElement class]);
     addElementClass(SVGNames::glyphTag, [DOMSVGGlyphElement class]);
+    addElementClass(SVGNames::glyphRefTag, [DOMSVGGlyphRefElement class]);
 #endif
     addElementClass(SVGNames::gTag, [DOMSVGGElement class]);
     addElementClass(SVGNames::imageTag, [DOMSVGImageElement class]);
index 4282bf45e4904de29785459e9d237a3fc89ec325..86239da27ffeeb1eb815efabae51332e3d574a77 100644 (file)
@@ -25,7 +25,9 @@
  */
 
 #import <WebCore/DOMSVGAElement.h>
+#import <WebCore/DOMSVGAltGlyphDefElement.h>
 #import <WebCore/DOMSVGAltGlyphElement.h>
+#import <WebCore/DOMSVGAltGlyphItemElement.h>
 #import <WebCore/DOMSVGAngle.h>
 #import <WebCore/DOMSVGAnimateColorElement.h>
 #import <WebCore/DOMSVGAnimateElement.h>
@@ -94,6 +96,7 @@
 #import <WebCore/DOMSVGForeignObjectElement.h>
 #import <WebCore/DOMSVGGElement.h>
 #import <WebCore/DOMSVGGlyphElement.h>
+#import <WebCore/DOMSVGGlyphRefElement.h>
 #import <WebCore/DOMSVGGradientElement.h>
 #import <WebCore/DOMSVGImageElement.h>
 #import <WebCore/DOMSVGLangSpace.h>
index 8267b16018cc998d70dd561593a72bcb775ade06..0f3162f1d781c113c97ec4d4f973edb33d956e71 100644 (file)
@@ -724,9 +724,9 @@ module window {
 #endif
 
 #if defined(ENABLE_SVG_FONTS) && ENABLE_SVG_FONTS
-//      attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
+        attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
         attribute SVGAltGlyphElementConstructor SVGAltGlyphElement;
-//      attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
+        attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
 //      attribute SVGDefinitionSrcElementConstructor SVGDefinitionSrcElement;
         attribute SVGFontElementConstructor SVGFontElement;
         attribute SVGFontFaceElementConstructor SVGFontFaceElement;
@@ -735,7 +735,7 @@ module window {
         attribute SVGFontFaceSrcElementConstructor SVGFontFaceSrcElement;
         attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
         attribute SVGGlyphElementConstructor SVGGlyphElement;
-//      attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
+        attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
         attribute SVGHKernElementConstructor SVGHKernElement;
         attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
         attribute SVGVKernElementConstructor SVGVKernElement;
index 485cb092cdc84ac30230219fc190ee2cfa03bb24..13ee593fc85ac4a80c23ee3cf997985c74cb7195 100644 (file)
@@ -27,7 +27,9 @@
 
 #include "ColorDistance.cpp"
 #include "SVGAElement.cpp"
+#include "SVGAltGlyphDefElement.cpp"
 #include "SVGAltGlyphElement.cpp"
+#include "SVGAltGlyphItemElement.cpp"
 #include "SVGAngle.cpp"
 #include "SVGAnimateColorElement.cpp"
 #include "SVGAnimatedAngle.cpp"
 #include "SVGForeignObjectElement.cpp"
 #include "SVGGElement.cpp"
 #include "SVGGlyphElement.cpp"
+#include "SVGGlyphRefElement.cpp"
 #include "SVGGradientElement.cpp"
 #include "SVGHKernElement.cpp"
 #include "SVGImageElement.cpp"
diff --git a/Source/WebCore/svg/SVGAltGlyphDefElement.cpp b/Source/WebCore/svg/SVGAltGlyphDefElement.cpp
new file mode 100644 (file)
index 0000000..4c0a00a
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG) && ENABLE(SVG_FONTS)
+#include "SVGAltGlyphDefElement.h"
+
+#include "SVGAltGlyphItemElement.h"
+#include "SVGGlyphRefElement.h"
+#include "SVGNames.h"
+
+namespace WebCore {
+
+inline SVGAltGlyphDefElement::SVGAltGlyphDefElement(const QualifiedName& tagName, Document* document)
+    : SVGElement(tagName, document)
+{
+    ASSERT(hasTagName(SVGNames::altGlyphDefTag));
+}
+
+PassRefPtr<SVGAltGlyphDefElement> SVGAltGlyphDefElement::create(const QualifiedName& tagName, Document* document)
+{
+    return adoptRef(new SVGAltGlyphDefElement(tagName, document));
+}
+
+bool SVGAltGlyphDefElement::hasValidGlyphElements(Vector<String>& glyphNames) const
+{
+    // Spec: http://www.w3.org/TR/SVG/text.html#AltGlyphDefElement
+    // An 'altGlyphDef' can contain either of the following:
+    //
+    // 1. In the simplest case, an 'altGlyphDef' contains one or more 'glyphRef' elements.
+    // Each 'glyphRef' element references a single glyph within a particular font.
+    // If all of the referenced glyphs are available, then these glyphs are rendered
+    // instead of the character(s) inside of the referencing 'altGlyph' element.
+    // If any of the referenced glyphs are unavailable, then the character(s) that are
+    // inside of the 'altGlyph' element are rendered as if there were not an 'altGlyph'
+    // element surrounding those characters.
+    //
+    // 2. In the more complex case, an 'altGlyphDef' contains one or more 'altGlyphItem' elements.
+    // Each 'altGlyphItem' represents a candidate set of substitute glyphs. Each 'altGlyphItem'
+    // contains one or more 'glyphRef' elements. Each 'glyphRef' element references a single
+    // glyph within a particular font. The first 'altGlyphItem' in which all referenced glyphs
+    // are available is chosen. The glyphs referenced from this 'altGlyphItem' are rendered
+    // instead of the character(s) that are inside of the referencing 'altGlyph' element.
+    // If none of the 'altGlyphItem' elements result in a successful match (i.e., none of the
+    // 'altGlyphItem' elements has all of its referenced glyphs available), then the character(s)
+    // that are inside of the 'altGlyph' element are rendered as if there were not an 'altGlyph'
+    // element surrounding those characters.
+    //
+    // The spec doesn't tell how to deal with the mixing of <glyphRef> and <altGlyItem>.
+    // However, we determine content model by the the type of the first appearing element
+    // just like Opera 11 does. After the content model is determined we skip elements
+    // which don't comform to it. For example:
+    // a.    <altGlyphDef>
+    //         <glyphRef id="g1" />
+    //         <altGlyphItem id="i1"> ... </altGlyphItem>
+    //         <glyphRef id="g2" />
+    //       </altGlyphDef>
+    //
+    // b.    <altGlyphDef>
+    //         <altGlyphItem id="i1"> ... </altGlyphItem>
+    //         <altGlyphItem id="i2"> ... </altGlyphItem>
+    //         <glyphRef id="g1" />
+    //         <glyphRef id="g2" />
+    //       </altGlyphDef>
+    // For a), the content model is 1), so we will use "g1" and "g2" if they are all valid
+    // and "i1" is skipped.
+    // For b), the content model is 2), so we will use <glyphRef> elements contained in
+    // "i1" if they are valid and "g1" and "g2" are skipped.
+
+    // These 2 variables are used to determine content model.
+    bool fountFirstGlyphRef = false;
+    bool foundFirstAltGlyphItem = false;
+
+    for (Node* child = firstChild(); child; child = child->nextSibling()) {
+        if (!foundFirstAltGlyphItem && child->hasTagName(SVGNames::glyphRefTag)) {
+            fountFirstGlyphRef = true;
+            String referredGlyphName;
+
+            if (static_cast<SVGGlyphRefElement*>(child)->hasValidGlyphElement(referredGlyphName))
+                glyphNames.append(referredGlyphName);
+            else {
+                // As the spec says "If any of the referenced glyphs are unavailable,
+                // then the character(s) that are inside of the 'altGlyph' element are
+                // rendered as if there were not an 'altGlyph' element surrounding
+                // those characters.".
+                glyphNames.clear();
+                return false;
+            }
+        } else if (!fountFirstGlyphRef && child->hasTagName(SVGNames::altGlyphItemTag)) {
+            foundFirstAltGlyphItem = true;
+            Vector<String> referredGlyphNames;
+
+            // As the spec says "The first 'altGlyphItem' in which all referenced glyphs
+            // are available is chosen."
+            if (static_cast<SVGAltGlyphItemElement*>(child)->hasValidGlyphElements(glyphNames) && !glyphNames.isEmpty())
+                return true;
+        }
+    }
+    return !glyphNames.isEmpty();
+}
+
+}
+
+#endif
diff --git a/Source/WebCore/svg/SVGAltGlyphDefElement.h b/Source/WebCore/svg/SVGAltGlyphDefElement.h
new file mode 100644 (file)
index 0000000..ed45a25
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef SVGAltGlyphDefElement_h
+#define SVGAltGlyphDefElement_h
+
+#if ENABLE(SVG) && ENABLE(SVG_FONTS)
+#include "SVGElement.h"
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+class SVGAltGlyphDefElement: public SVGElement {
+public:
+    static PassRefPtr<SVGAltGlyphDefElement> create(const QualifiedName&, Document*);
+
+    bool hasValidGlyphElements(Vector<String>& glyphNames) const;
+
+private:
+    SVGAltGlyphDefElement(const QualifiedName&, Document*);
+};
+
+}
+
+#endif
+#endif
+
diff --git a/Source/WebCore/svg/SVGAltGlyphDefElement.idl b/Source/WebCore/svg/SVGAltGlyphDefElement.idl
new file mode 100644 (file)
index 0000000..b4b44d2
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+module svg {
+
+    interface [Conditional=SVG&SVG_FONTS] SVGAltGlyphDefElement : SVGElement {
+    };
+
+}
+
index 1fb1cf9dd372497d730e367cd7dacfcf8517857e..fb65681c22786014d52635fb5d292d0cd93c2787 100644 (file)
@@ -2,6 +2,7 @@
  * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org>
  * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org>
  * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2011 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -27,6 +28,7 @@
 #include "ExceptionCode.h"
 #include "RenderInline.h"
 #include "RenderSVGTSpan.h"
+#include "SVGAltGlyphDefElement.h"
 #include "SVGGlyphElement.h"
 #include "SVGNames.h"
 #include "XLinkNames.h"
@@ -85,15 +87,23 @@ RenderObject* SVGAltGlyphElement::createRenderer(RenderArena* arena, RenderStyle
     return new (arena) RenderSVGTSpan(this);
 }
 
-bool SVGAltGlyphElement::hasValidGlyphElement(String& glyphName) const
+bool SVGAltGlyphElement::hasValidGlyphElements(Vector<String>& glyphNames) const
 {
-    // FIXME: No support for altGlyphDef/glyphRef.
-    // This is tracked by https://bugs.webkit.org/show_bug.cgi?id=60850.
-    glyphName = getTarget(fastGetAttribute(XLinkNames::hrefAttr));
-    Element* element = treeScope()->getElementById(glyphName);
-    if (!element || !element->hasTagName(SVGNames::glyphTag))
+    String target = getTarget(fastGetAttribute(XLinkNames::hrefAttr));
+    Element* element = treeScope()->getElementById(target);
+    if (!element)
         return false;
-    return true;
+
+    if (element->hasTagName(SVGNames::glyphTag)) {
+        glyphNames.append(target);
+        return true;
+    }
+
+    if (element->hasTagName(SVGNames::altGlyphDefTag)
+        && static_cast<SVGAltGlyphDefElement*>(element)->hasValidGlyphElements(glyphNames))
+        return true;
+
+    return false;
 }
 
 }
index 0c9ba39379194196c938c91abd62b775f9a9f262..0ba229c46179dc180548f51f4dc29ce79102cb1a 100644 (file)
@@ -25,6 +25,7 @@
 #if ENABLE(SVG_FONTS)
 #include "SVGTextPositioningElement.h"
 #include "SVGURIReference.h"
+#include <wtf/Vector.h>
 
 namespace WebCore {
 
@@ -40,7 +41,7 @@ public:
     const AtomicString& format() const;
     void setFormat(const AtomicString&, ExceptionCode&);
 
-    bool hasValidGlyphElement(String& glyphName) const;
+    bool hasValidGlyphElements(Vector<String>& glyphNames) const;
 
 private:
     SVGAltGlyphElement(const QualifiedName&, Document*);
diff --git a/Source/WebCore/svg/SVGAltGlyphItemElement.cpp b/Source/WebCore/svg/SVGAltGlyphItemElement.cpp
new file mode 100644 (file)
index 0000000..cadbf5e
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG) && ENABLE(SVG_FONTS)
+#include "SVGAltGlyphItemElement.h"
+
+#include "SVGGlyphRefElement.h"
+#include "SVGNames.h"
+
+namespace WebCore {
+
+inline SVGAltGlyphItemElement::SVGAltGlyphItemElement(const QualifiedName& tagName, Document* document)
+    : SVGElement(tagName, document)
+{
+    ASSERT(hasTagName(SVGNames::altGlyphItemTag));
+}
+
+PassRefPtr<SVGAltGlyphItemElement> SVGAltGlyphItemElement::create(const QualifiedName& tagName, Document* document)
+{
+    return adoptRef(new SVGAltGlyphItemElement(tagName, document));
+}
+
+bool SVGAltGlyphItemElement::hasValidGlyphElements(Vector<String>& glyphNames) const
+{
+    // Spec: http://www.w3.org/TR/SVG/text.html#AltGlyphItemElement
+    // The ‘altGlyphItem’ element defines a candidate set of possible glyph substitutions.
+    // The first ‘altGlyphItem’ element whose referenced glyphs are all available is chosen.
+    // Its glyphs are rendered instead of the character(s) that are inside of the referencing
+    // ‘altGlyph’ element.
+    //
+    // Here we fill glyphNames and return true only if all referenced glyphs are valid and
+    // there is at least one glyph.
+    for (Node* child = firstChild(); child; child = child->nextSibling()) {
+        if (child->hasTagName(SVGNames::glyphRefTag)) {
+            String referredGlyphName;
+            if (static_cast<SVGGlyphRefElement*>(child)->hasValidGlyphElement(referredGlyphName))
+                glyphNames.append(referredGlyphName);
+            else {
+                glyphNames.clear();
+                return false;
+            }
+        }
+    }
+    return !glyphNames.isEmpty();
+}
+
+}
+
+#endif
diff --git a/Source/WebCore/svg/SVGAltGlyphItemElement.h b/Source/WebCore/svg/SVGAltGlyphItemElement.h
new file mode 100644 (file)
index 0000000..eaf5946
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef SVGAltGlyphItemElement_h
+#define SVGAltGlyphItemElement_h
+
+#if ENABLE(SVG) && ENABLE(SVG_FONTS)
+#include "SVGElement.h"
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+class SVGAltGlyphItemElement: public SVGElement {
+public:
+    static PassRefPtr<SVGAltGlyphItemElement> create(const QualifiedName&, Document*);
+
+    bool hasValidGlyphElements(Vector<String>& glyphNames) const;
+
+private:
+    SVGAltGlyphItemElement(const QualifiedName&, Document*);
+};
+
+}
+
+#endif
+#endif
+
diff --git a/Source/WebCore/svg/SVGAltGlyphItemElement.idl b/Source/WebCore/svg/SVGAltGlyphItemElement.idl
new file mode 100644 (file)
index 0000000..a98443c
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+module svg {
+
+    interface [Conditional=SVG&SVG_FONTS] SVGAltGlyphItemElement : SVGElement {
+    };
+
+}
+
index b97944231c27e28a0c5b645ad9f17b455e64850d..340e2010c1643d0fc25dd15b4518c107ee8a07c1 100644 (file)
@@ -142,7 +142,7 @@ bool SVGFontData::applySVGGlyphSelection(WidthIterator& iterator, GlyphData& gly
 
     String language;
     bool isVerticalText = false;
-    String altGlyphName;
+    Vector<String> altGlyphNames;
 
     if (renderObject) {
         RenderObject* parentRenderObject = renderObject->isText() ? renderObject->parent() : renderObject;
@@ -154,15 +154,17 @@ bool SVGFontData::applySVGGlyphSelection(WidthIterator& iterator, GlyphData& gly
 
             if (parentRenderObjectElement->hasTagName(SVGNames::altGlyphTag)) {
                 SVGAltGlyphElement* altGlyph = static_cast<SVGAltGlyphElement*>(parentRenderObjectElement);
-                if (!altGlyph->hasValidGlyphElement(altGlyphName))
-                    altGlyphName = emptyString();
+                if (!altGlyph->hasValidGlyphElements(altGlyphNames))
+                    altGlyphNames.clear();
             }
         }
     }
 
     Vector<SVGGlyph> glyphs;
-    if (!altGlyphName.isEmpty()) {
-        associatedFontElement->collectGlyphsForGlyphName(altGlyphName, glyphs);
+    size_t altGlyphNamesSize = altGlyphNames.size();
+    if (altGlyphNamesSize) {
+        for (size_t index = 0; index < altGlyphNamesSize; ++index)
+            associatedFontElement->collectGlyphsForGlyphName(altGlyphNames[index], glyphs);
 
         // Assign the unicodeStringLength now that its known.
         size_t glyphsSize = glyphs.size();
diff --git a/Source/WebCore/svg/SVGGlyphRefElement.cpp b/Source/WebCore/svg/SVGGlyphRefElement.cpp
new file mode 100644 (file)
index 0000000..9c1a4e3
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(SVG) && ENABLE(SVG_FONTS)
+#include "SVGGlyphRefElement.h"
+
+#include "SVGGlyphElement.h"
+#include "SVGNames.h"
+#include "SVGParserUtilities.h"
+#include "XLinkNames.h"
+#include <wtf/text/AtomicString.h>
+
+namespace WebCore {
+
+// Animated property definitions
+DEFINE_ANIMATED_STRING(SVGGlyphRefElement, XLinkNames::hrefAttr, Href, href)
+
+BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGGlyphRefElement)
+    REGISTER_LOCAL_ANIMATED_PROPERTY(href)
+    REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledElement)
+END_REGISTER_ANIMATED_PROPERTIES
+
+inline SVGGlyphRefElement::SVGGlyphRefElement(const QualifiedName& tagName, Document* document)
+    : SVGStyledElement(tagName, document)
+    , m_x(0)
+    , m_y(0)
+    , m_dx(0)
+    , m_dy(0)
+{
+    ASSERT(hasTagName(SVGNames::glyphRefTag));
+    registerAnimatedPropertiesForSVGGlyphRefElement();
+}
+
+PassRefPtr<SVGGlyphRefElement> SVGGlyphRefElement::create(const QualifiedName& tagName, Document* document)
+{
+    return adoptRef(new SVGGlyphRefElement(tagName, document));
+}
+
+bool SVGGlyphRefElement::hasValidGlyphElement(String& glyphName) const
+{
+    // FIXME: We only support xlink:href so far.
+    // https://bugs.webkit.org/show_bug.cgi?id=64787
+    glyphName = getTarget(fastGetAttribute(XLinkNames::hrefAttr));
+    Element* element = treeScope()->getElementById(glyphName);
+    if (!element || !element->hasTagName(SVGNames::glyphTag))
+        return false;
+    return true;
+}
+
+void SVGGlyphRefElement::parseMappedAttribute(Attribute* attr)
+{
+    const UChar* startPtr = attr->value().characters();
+    const UChar* endPtr = startPtr + attr->value().length();
+
+    // FIXME: We need some error handling here.
+    if (attr->name() == SVGNames::xAttr)
+        parseNumber(startPtr, endPtr, m_x);
+    else if (attr->name() == SVGNames::yAttr)
+        parseNumber(startPtr, endPtr, m_y);
+    else if (attr->name() == SVGNames::dxAttr)
+        parseNumber(startPtr, endPtr, m_dx);
+    else if (attr->name() == SVGNames::dyAttr)
+        parseNumber(startPtr, endPtr, m_dy);
+    else {
+        if (SVGURIReference::parseMappedAttribute(attr))
+            return;
+        SVGStyledElement::parseMappedAttribute(attr);
+    }
+}
+
+const AtomicString& SVGGlyphRefElement::glyphRef() const
+{
+    return fastGetAttribute(SVGNames::glyphRefAttr);
+}
+
+void SVGGlyphRefElement::setGlyphRef(const AtomicString&, ExceptionCode&)
+{
+    // FIXME: Set and honor attribute change.
+    // https://bugs.webkit.org/show_bug.cgi?id=64787
+}
+
+void SVGGlyphRefElement::setX(float x, ExceptionCode&)
+{
+    // FIXME: Honor attribute change.
+    // https://bugs.webkit.org/show_bug.cgi?id=64787
+    m_x = x;
+}
+
+void SVGGlyphRefElement::setY(float y , ExceptionCode&)
+{
+    // FIXME: Honor attribute change.
+    // https://bugs.webkit.org/show_bug.cgi?id=64787
+    m_y = y;
+}
+
+void SVGGlyphRefElement::setDx(float dx, ExceptionCode&)
+{
+    // FIXME: Honor attribute change.
+    // https://bugs.webkit.org/show_bug.cgi?id=64787
+    m_dx = dx;
+}
+
+void SVGGlyphRefElement::setDy(float dy, ExceptionCode&)
+{
+    // FIXME: Honor attribute change.
+    // https://bugs.webkit.org/show_bug.cgi?id=64787
+    m_dy = dy;
+}
+
+}
+
+#endif
diff --git a/Source/WebCore/svg/SVGGlyphRefElement.h b/Source/WebCore/svg/SVGGlyphRefElement.h
new file mode 100644 (file)
index 0000000..58aaff8
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef SVGGlyphRefElement_h
+#define SVGGlyphRefElement_h
+
+#if ENABLE(SVG) && ENABLE(SVG_FONTS)
+#include "SVGStyledElement.h"
+#include "SVGURIReference.h"
+
+namespace WebCore {
+
+class SVGGlyphRefElement: public SVGStyledElement,
+                          public SVGURIReference {
+public:
+    static PassRefPtr<SVGGlyphRefElement> create(const QualifiedName&, Document*);
+
+    bool hasValidGlyphElement(String& glyphName) const;
+    virtual void parseMappedAttribute(Attribute*);
+
+    // DOM interface
+    const AtomicString& glyphRef() const;
+    void setGlyphRef(const AtomicString&, ExceptionCode&);
+    float x() const { return m_x; }
+    void setX(float, ExceptionCode&);
+    float y() const { return m_y; }
+    void setY(float, ExceptionCode&);
+    float dx() const { return m_dx; }
+    void setDx(float, ExceptionCode&);
+    float dy() const { return m_dy; }
+    void setDy(float, ExceptionCode&);
+
+private:
+    SVGGlyphRefElement(const QualifiedName&, Document*);
+
+    BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGGlyphRefElement)
+        DECLARE_ANIMATED_STRING(Href, href)
+    END_DECLARE_ANIMATED_PROPERTIES
+
+    float m_x;
+    float m_y;
+    float m_dx;
+    float m_dy;
+};
+
+}
+
+#endif
+#endif
diff --git a/Source/WebCore/svg/SVGGlyphRefElement.idl b/Source/WebCore/svg/SVGGlyphRefElement.idl
new file mode 100644 (file)
index 0000000..6d7af76
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2011 Leo Yang <leoyang@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+module svg {
+
+    interface [Conditional=SVG&SVG_FONTS] SVGGlyphRefElement : SVGElement,
+                                                               SVGURIReference,
+                                                               SVGStylable {
+        // FIXME: Use [Reflect] after https://bugs.webkit.org/show_bug.cgi?id=64843 is fixed.
+        attribute DOMString glyphRef
+            setter raises(DOMException);
+        attribute [Reflect] DOMString format
+            setter raises(DOMException);
+        attribute float x
+            setter raises(DOMException);
+        attribute float y
+            setter raises(DOMException);
+        attribute float dx
+            setter raises(DOMException);
+        attribute float dy
+            setter raises(DOMException);
+    };
+
+}
+
index aa636ccbbdbd83761ad0e0005b9802634b8379ab..c09572e653eb86e9f1b2ceb79e06e586927e814e 100644 (file)
@@ -5,8 +5,6 @@ guardFactoryWith="ENABLE(SVG)"
 a
 #if ENABLE_SVG_FONTS
 altGlyph
-#endif
-#if 0
 altGlyphDef
 altGlyphItem
 #endif
@@ -68,11 +66,7 @@ foreignObject
 g
 #if ENABLE_SVG_FONTS
 glyph
-#endif
-#if 0
 glyphRef
-#endif
-#if ENABLE_SVG_FONTS
 hkern interfaceName=SVGHKernElement, JSInterfaceName=SVGElement
 #endif
 image
index f6a4886f9b5f9806039a3537a3caab5c584f4b72..f80fd62e349c0aebb6de4b03bfd3e90706602e23 100644 (file)
@@ -1,3 +1,16 @@
+2011-07-19  Leo Yang  <leoyang.webkit@gmail.com>
+
+        SVG: Missing implementation of <altGlyphDef>, <altGlyphItem> and <glyphRef>
+        https://bugs.webkit.org/show_bug.cgi?id=60850
+
+        Reviewed by Nikolas Zimmermann.
+
+        SVG spec: http://www.w3.org/TR/SVG/text.html#AlternateGlyphDefinitions.
+        This patch is to implement SVG <altGlyphDef>, <altGlyphItem> and <glyphRef>
+        elements for alternative glyph features.
+
+        * MigrateHeaders.make:
+
 2011-07-18  Andy Estes  <aestes@apple.com>
 
         Solar Walk app-specific hack accidentally strips stylesheets from the document.
index 8e39924690e7665064dee00ee8e0c374bdc3f73a..1e799d4fa2782a55121e0b32b4820f8aaa89c0fb 100644 (file)
@@ -197,8 +197,12 @@ all : \
     $(PRIVATE_HEADERS_DIR)/DOMSVG.h \
     $(PRIVATE_HEADERS_DIR)/DOMSVGAElement.h \
     $(INTERNAL_HEADERS_DIR)/DOMSVGAElementInternal.h \
+    $(PRIVATE_HEADERS_DIR)/DOMSVGAltGlyphDefElement.h \
+    $(INTERNAL_HEADERS_DIR)/DOMSVGAltGlyphDefElementInternal.h \
     $(PRIVATE_HEADERS_DIR)/DOMSVGAltGlyphElement.h \
     $(INTERNAL_HEADERS_DIR)/DOMSVGAltGlyphElementInternal.h \
+    $(PRIVATE_HEADERS_DIR)/DOMSVGAltGlyphItemElement.h \
+    $(INTERNAL_HEADERS_DIR)/DOMSVGAltGlyphItemElementInternal.h \
     $(PRIVATE_HEADERS_DIR)/DOMSVGAngle.h \
     $(INTERNAL_HEADERS_DIR)/DOMSVGAngleInternal.h \
     $(PRIVATE_HEADERS_DIR)/DOMSVGAnimateColorElement.h \
@@ -324,6 +328,8 @@ all : \
     $(PRIVATE_HEADERS_DIR)/DOMSVGGElement.h \
     $(INTERNAL_HEADERS_DIR)/DOMSVGGElementInternal.h \
     $(PRIVATE_HEADERS_DIR)/DOMSVGGlyphElement.h \
+    $(PRIVATE_HEADERS_DIR)/DOMSVGGlyphRefElement.h \
+    $(INTERNAL_HEADERS_DIR)/DOMSVGGlyphRefElementInternal.h \
     $(PRIVATE_HEADERS_DIR)/DOMSVGGradientElement.h \
     $(INTERNAL_HEADERS_DIR)/DOMSVGGradientElementInternal.h \
     $(PRIVATE_HEADERS_DIR)/DOMSVGImageElement.h \