Commit f64d1354 authored by weinig's avatar weinig
Browse files

Reviewed by Tim H.

        Patch for http://bugzilla.opendarwin.org/show_bug.cgi?id=11057
        Auto-generate more SVG Objective-C bindings

        - Auto-generates DOMSVGAnimatedAngle, DOMSVGAnimatedBoolean, 
          DOMSVGAnimatedEnumeration, DOMSVGAnimatedInteger, DOMSVGAnimatedLength,
          DOMSVGAnimatedLengthList, DOMSVGAnimatedNumber, DOMSVGAnimatedString,
          DOMSVGAnimatedTransformList, DOMSVGExternalResourcesRequired,
          DOMSVGLangSpace, DOMSVGLocatable, DOMSVGMetadataElement, DOMSVGRectElement,
          DOMSVGStringList, DOMSVGStylable, DOMSVGStyleElement, DOMSVGTests, 
          and DOMSVGTransformable.

        - Adds ability to CodeGeneratorObjC.pm to handle interfaces with mulitple
          parent interfaces and the SVG animated classes.

        - Corrects CodeGenerator.pm to only skip the first parent for the main 
          interface.

        * DerivedSources.make:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/objc/DOMInternal.h:
        * bindings/objc/DOMSVG.h:
        * bindings/scripts/CodeGenerator.pm:
        * bindings/scripts/CodeGeneratorObjC.pm:
        * ksvg2/svg/SVGAnimatedAngle.idl:
        * ksvg2/svg/SVGAnimatedBoolean.idl:
        * ksvg2/svg/SVGAnimatedEnumeration.idl:
        * ksvg2/svg/SVGAnimatedInteger.idl:
        * ksvg2/svg/SVGAnimatedLength.idl:
        * ksvg2/svg/SVGAnimatedLengthList.idl:
        * ksvg2/svg/SVGAnimatedNumber.idl:
        * ksvg2/svg/SVGAnimatedPathData.idl:
        * ksvg2/svg/SVGAnimatedString.idl:
        * ksvg2/svg/SVGAnimatedTransformList.idl:
        * ksvg2/svg/SVGExternalResourcesRequired.idl:
        * ksvg2/svg/SVGFilterPrimitiveStandardAttributes.idl:
        * ksvg2/svg/SVGFitToViewBox.idl:
        * ksvg2/svg/SVGLangSpace.idl:
        * ksvg2/svg/SVGLocatable.idl:
        * ksvg2/svg/SVGMetadataElement.idl:
        * ksvg2/svg/SVGStringList.idl:
        * ksvg2/svg/SVGStylable.idl:
        * ksvg2/svg/SVGStyleElement.idl:
        * ksvg2/svg/SVGTests.idl:
        * ksvg2/svg/SVGTransformable.idl:
        * ksvg2/svg/SVGURIReference.idl:
        * ksvg2/svg/SVGUnitTypes.idl:
        * ksvg2/svg/SVGZoomAndPan.idl:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@16616 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent a31d0ecf
2006-09-28 Sam Weinig <sam.weinig@gmail.com>
Reviewed by Tim H.
Patch for http://bugzilla.opendarwin.org/show_bug.cgi?id=11057
Auto-generate more SVG Objective-C bindings
- Auto-generates DOMSVGAnimatedAngle, DOMSVGAnimatedBoolean,
DOMSVGAnimatedEnumeration, DOMSVGAnimatedInteger, DOMSVGAnimatedLength,
DOMSVGAnimatedLengthList, DOMSVGAnimatedNumber, DOMSVGAnimatedString,
DOMSVGAnimatedTransformList, DOMSVGExternalResourcesRequired,
DOMSVGLangSpace, DOMSVGLocatable, DOMSVGMetadataElement, DOMSVGRectElement,
DOMSVGStringList, DOMSVGStylable, DOMSVGStyleElement, DOMSVGTests,
and DOMSVGTransformable.
- Adds ability to CodeGeneratorObjC.pm to handle interfaces with mulitple
parent interfaces and the SVG animated classes.
- Corrects CodeGenerator.pm to only skip the first parent for the main
interface.
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* bindings/objc/DOMInternal.h:
* bindings/objc/DOMSVG.h:
* bindings/scripts/CodeGenerator.pm:
* bindings/scripts/CodeGeneratorObjC.pm:
* ksvg2/svg/SVGAnimatedAngle.idl:
* ksvg2/svg/SVGAnimatedBoolean.idl:
* ksvg2/svg/SVGAnimatedEnumeration.idl:
* ksvg2/svg/SVGAnimatedInteger.idl:
* ksvg2/svg/SVGAnimatedLength.idl:
* ksvg2/svg/SVGAnimatedLengthList.idl:
* ksvg2/svg/SVGAnimatedNumber.idl:
* ksvg2/svg/SVGAnimatedPathData.idl:
* ksvg2/svg/SVGAnimatedString.idl:
* ksvg2/svg/SVGAnimatedTransformList.idl:
* ksvg2/svg/SVGExternalResourcesRequired.idl:
* ksvg2/svg/SVGFilterPrimitiveStandardAttributes.idl:
* ksvg2/svg/SVGFitToViewBox.idl:
* ksvg2/svg/SVGLangSpace.idl:
* ksvg2/svg/SVGLocatable.idl:
* ksvg2/svg/SVGMetadataElement.idl:
* ksvg2/svg/SVGStringList.idl:
* ksvg2/svg/SVGStylable.idl:
* ksvg2/svg/SVGStyleElement.idl:
* ksvg2/svg/SVGTests.idl:
* ksvg2/svg/SVGTransformable.idl:
* ksvg2/svg/SVGURIReference.idl:
* ksvg2/svg/SVGUnitTypes.idl:
* ksvg2/svg/SVGZoomAndPan.idl:
2006-09-28 Brady Eidson <beidson@apple.com>
 
Reviewed by Mitz Pettel!!!
......@@ -42,6 +42,7 @@ VPATH = \
ifeq ($(OS),MACOS)
all : \
DOMSVGRectElement.h \
DOMAttr.h \
DOMCDATASection.h \
DOMCSSCharsetRule.h \
......@@ -136,17 +137,35 @@ all : \
DOMOverflowEvent.h \
DOMProcessingInstruction.h \
DOMRect.h \
DOMStyleSheet.h \
DOMStyleSheetList.h \
DOMSVGAngle.h \
DOMSVGAnimatedAngle.h \
DOMSVGAnimatedBoolean.h \
DOMSVGAnimatedEnumeration.h \
DOMSVGAnimatedInteger.h \
DOMSVGAnimatedLength.h \
DOMSVGAnimatedLengthList.h \
DOMSVGAnimatedNumber.h \
DOMSVGAnimatedString.h \
DOMSVGAnimatedTransformList.h \
DOMSVGElement.h \
DOMSVGExternalResourcesRequired.h \
DOMSVGLangSpace.h \
DOMSVGLength.h \
DOMSVGLengthList.h \
DOMSVGLocatable.h \
DOMSVGMatrix.h \
DOMSVGMetadataElement.h \
DOMSVGPathSeg.h \
DOMSVGPathSegList.h \
DOMSVGStringList.h \
DOMSVGStylable.h \
DOMSVGStyleElement.h \
DOMSVGTests.h \
DOMSVGTransform.h \
DOMSVGTransformList.h \
DOMSVGTransformable.h \
DOMStyleSheet.h \
DOMStyleSheetList.h \
DOMText.h \
DOMTreeWalker.h \
DOMUIEvent.h \
......@@ -526,7 +545,7 @@ OBJC_BINDINGS_SCRIPTS = \
#
DOM%.h : %.idl $(OBJC_BINDINGS_SCRIPTS) bindings/objc/PublicDOMInterfaces.h
perl -I $(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_OBJECTIVE_C" --generator ObjC --include $(WebCore)/dom --include $(WebCore)/html --include $(WebCore)/xpath --include $(WebCore)/ksvg2/svg --outputdir . $<
perl -I $(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_OBJECTIVE_C" --generator ObjC --include dom --include html --include xml --include /ksvg2/svg --outputdir . $<
# new-style JavaScript bindings
......
This diff is collapsed.
......@@ -124,12 +124,25 @@
#ifdef SVG_SUPPORT
#import "DOMSVGAngleInternal.h"
#import "DOMSVGAnimatedAngleInternal.h"
#import "DOMSVGAnimatedBooleanInternal.h"
#import "DOMSVGAnimatedEnumerationInternal.h"
#import "DOMSVGAnimatedIntegerInternal.h"
#import "DOMSVGAnimatedLengthInternal.h"
#import "DOMSVGAnimatedLengthListInternal.h"
#import "DOMSVGAnimatedNumberInternal.h"
#import "DOMSVGAnimatedStringInternal.h"
#import "DOMSVGAnimatedTransformListInternal.h"
#import "DOMSVGElementInternal.h"
#import "DOMSVGLengthInternal.h"
#import "DOMSVGLengthListInternal.h"
#import "DOMSVGMatrixInternal.h"
#import "DOMSVGMetadataElementInternal.h"
#import "DOMSVGPathSegInternal.h"
#import "DOMSVGPathSegListInternal.h"
#import "DOMSVGRectElementInternal.h"
#import "DOMSVGStringListInternal.h"
#import "DOMSVGStyleElementInternal.h"
#import "DOMSVGTransformInternal.h"
#import "DOMSVGTransformListInternal.h"
#endif // SVG_SUPPORT
......
......@@ -25,12 +25,31 @@
*/
#import <WebCore/DOMSVGAngle.h>
#import <WebCore/DOMSVGAnimatedAngle.h>
#import <WebCore/DOMSVGAnimatedBoolean.h>
#import <WebCore/DOMSVGAnimatedEnumeration.h>
#import <WebCore/DOMSVGAnimatedInteger.h>
#import <WebCore/DOMSVGAnimatedLength.h>
#import <WebCore/DOMSVGAnimatedLengthList.h>
#import <WebCore/DOMSVGAnimatedNumber.h>
#import <WebCore/DOMSVGAnimatedString.h>
#import <WebCore/DOMSVGAnimatedTransformList.h>
#import <WebCore/DOMSVGElement.h>
#import <WebCore/DOMSVGException.h>
#import <WebCore/DOMSVGExternalResourcesRequired.h>
#import <WebCore/DOMSVGLangSpace.h>
#import <WebCore/DOMSVGLength.h>
#import <WebCore/DOMSVGLengthList.h>
#import <WebCore/DOMSVGLocatable.h>
#import <WebCore/DOMSVGMatrix.h>
#import <WebCore/DOMSVGMetadataElement.h>
#import <WebCore/DOMSVGPathSeg.h>
#import <WebCore/DOMSVGPathSegList.h>
#import <WebCore/DOMSVGRectElement.h>
#import <WebCore/DOMSVGStringList.h>
#import <WebCore/DOMSVGStylable.h>
#import <WebCore/DOMSVGStyleElement.h>
#import <WebCore/DOMSVGTests.h>
#import <WebCore/DOMSVGTransform.h>
#import <WebCore/DOMSVGTransformList.h>
#import <WebCore/DOMSVGTransformable.h>
......@@ -49,6 +49,8 @@ my %svgAnimatedTypeHash = ("SVGAnimatedAngle" => 1, "SVGAnimatedBoolean" => 1,
my $endCondition = 0;
my $foundFilename = "";
my @foundFilenames = ();
my $ignoreParent = 1;
my $defines = "";
# Default constructor
sub new
......@@ -77,8 +79,8 @@ sub ProcessDocument
{
my $object = shift;
$useDocument = shift;
my $defines = shift;
$defines = shift;
my $ifaceName = "CodeGenerator" . $useGenerator;
# Dynamically load external code generation perl module
......@@ -122,7 +124,6 @@ sub AddMethodsConstantsAndAttributesFromParentClasses
# Exception: For the DOM 'Node' is our topmost baseclass, not EventTargetNode.
return if $parentsMax eq 1 and $parents[0] eq "EventTargetNode";
my $ignoreParent = 1;
foreach (@{$dataNode->parents}) {
if ($ignoreParent) {
# Ignore first parent class, already handled by the generation itself.
......@@ -145,31 +146,23 @@ sub AddMethodsConstantsAndAttributesFromParentClasses
# Step #2: Parse the found IDL file (in quiet mode).
my $parser = IDLParser->new(1);
my $document = $parser->Parse($foundFilename, "");
my $document = $parser->Parse($foundFilename, $defines);
foreach my $class (@{$document->classes}) {
# Step #3: Collect constants & functions & attributes of this parent-class
# Step #3: Enter recursive parent search
AddMethodsConstantsAndAttributesFromParentClasses($object, $class);
# Step #4: Collect constants & functions & attributes of this parent-class
my $constantsMax = @{$class->constants};
my $functionsMax = @{$class->functions};
my $attributesMax = @{$class->attributes};
print " | |> -> Inherting $constantsMax constants, $functionsMax functions, $attributesMax attributes...\n | |>\n";
# Step #4: Concatenate data
foreach (@{$class->constants}) {
push(@$constantsRef, $_);
}
foreach (@{$class->functions}) {
push(@$functionsRef, $_);
}
foreach (@{$class->attributes}) {
push(@$attributesRef, $_);
}
# Step #4: Enter recursive parent search
AddMethodsConstantsAndAttributesFromParentClasses($object, $class);
# Step #5: Concatenate data
push(@$constantsRef, $_) foreach (@{$class->constants});
push(@$functionsRef, $_) foreach (@{$class->functions});
push(@$attributesRef, $_) foreach (@{$class->attributes});
}
} else {
die("Could NOT find specified parent interface \"$interface\"!\n");
......
......@@ -49,7 +49,10 @@ my @implContent = ();
my %implIncludes = ();
# Hashes
my %protocolTypeHash = ("XPathNSResolver" => 1, "EventListener" => 1, "EventTarget" => 1, "NodeFilter" => 1);
my %protocolTypeHash = ("XPathNSResolver" => 1, "EventListener" => 1, "EventTarget" => 1, "NodeFilter" => 1,
"SVGLocatable" => 1, "SVGTransformable" => 1, "SVGStylable" => 1, "SVGFilterPrimitiveStandardAttributes" => 1,
"SVGTests" => 1, "SVGLangSpace" => 1, "SVGExternalResourcesRequired" => 1, "SVGURIReference" => 1,
"SVGZoomAndPan" => 1, "SVGFitToViewBox" => 1);
my %stringTypeHash = ("DOMString" => 1, "AtomicString" => 1);
# Constants
......@@ -259,6 +262,56 @@ sub GetParentImplClassName
return $parent;
}
sub GetParentAndProtocols
{
my $dataNode = shift;
my $numParents = @{$dataNode->parents};
my $parent = "";
my @protocols = ();
if ($numParents eq 0) {
if ($isProtocol) {
push(@protocols, "NSObject");
push(@protocols, "NSCopying") if $dataNode->name eq "EventTarget";
} else {
$parent = "DOMObject";
}
} elsif ($numParents eq 1) {
my $parentName = $codeGenerator->StripModule($dataNode->parents(0));
if ($isProtocol) {
die "Parents of protocols must also be protocols." unless IsProtocolType($parentName);
push(@protocols, "DOM" . $parentName);
} else {
if (IsProtocolType($parentName)) {
push(@protocols, "DOM" . $parentName);
} elsif ($parentName eq "EventTargetNode") {
$parent = "DOMNode";
} elsif ($parentName eq "HTMLCollection") {
$parent = "DOMObject";
} else {
$parent = "DOM" . $parentName;
}
}
} else {
my @parents = @{$dataNode->parents};
my $firstParent = $codeGenerator->StripModule(shift(@parents));
if (IsProtocolType($firstParent)) {
push(@protocols, "DOM" . $firstParent);
} else {
$parent = "DOM" . $firstParent;
}
foreach my $parentName (@parents) {
$parentName = $codeGenerator->StripModule($parentName);
die "Everything past the first class should be a protocol!" unless IsProtocolType($parentName);
push(@protocols, "DOM" . $parentName);
}
}
return ($parent, @protocols);
}
sub IsProtocolType
{
$type = shift;
......@@ -412,8 +465,14 @@ sub AddIncludesForType
}
if ($type eq "EventTarget") {
$implIncludes{"DOM$type.h"} = 1;
$implIncludes{"EventTargetNode.h"} = 1;
$implIncludes{"DOM$type.h"} = 1;
return;
}
if ($codeGenerator->IsSVGAnimatedType($type)) {
$implIncludes{"SVGAnimatedTemplate.h"} = 1;
$implIncludes{"DOM$type.h"} = 1;
return;
}
......@@ -434,13 +493,16 @@ sub GenerateHeader
# We only support multiple parents with SVG (for now).
if (@{$dataNode->parents} > 1) {
die "A class can't have more than one parent" unless $module eq "SVG";
$codeGenerator->AddMethodsConstantsAndAttributesFromParentClasses($dataNode);
die "A class can't have more than one parent" unless $module eq "svg";
}
my $interfaceName = $dataNode->name;
my $className = GetClassName($interfaceName);
my $parentClassName = "DOM" . GetParentImplClassName($dataNode);
my $parentName = "";
my @protocolsToImplement = ();
($parentName, @protocolsToImplement) = GetParentAndProtocols($dataNode);
my $conditional = $dataNode->extendedAttributes->{"Conditional"};
my $numConstants = @{$dataNode->constants};
......@@ -453,9 +515,15 @@ sub GenerateHeader
# - INCLUDES -
unless ($isProtocol) {
my $parentHeaderName = GetClassHeaderName($parentClassName);
push(@headerContentHeader, "#import <WebCore/$parentHeaderName.h>\n\n");
my $parentHeaderName = GetClassHeaderName($parentName);
push(@headerContentHeader, "#import <WebCore/$parentHeaderName.h>\n");
}
foreach my $parentProtocol (@protocolsToImplement) {
next if $parentProtocol =~ /^NS/;
$parentProtocol = GetClassHeaderName($parentProtocol);
push(@headerContentHeader, "#import <WebCore/$parentProtocol.h>\n");
}
push(@headerContentHeader, "\n");
# - Add constants.
if ($numConstants > 0) {
......@@ -481,10 +549,15 @@ sub GenerateHeader
# - Begin @interface or @protocol
if ($isProtocol) {
my $parentProtocols = "NSObject" . ($interfaceName eq "EventTarget" ? ", NSCopying" : "");
my $parentProtocols = join(", ", @protocolsToImplement);
push(@headerContent, "\@protocol $className <$parentProtocols>\n");
} else {
push(@headerContent, "\@interface $className : $parentClassName\n");
if (@protocolsToImplement eq 0) {
push(@headerContent, "\@interface $className : $parentName\n");
} else {
my $parentProtocols = join(", ", @protocolsToImplement);
push(@headerContent, "\@interface $className : $parentName <$parentProtocols>\n");
}
}
my @headerAttributes = ();
......@@ -651,6 +724,12 @@ sub GenerateImplementation
my $object = shift;
my $dataNode = shift;
# We only support multiple parents with SVG (for now).
if (@{$dataNode->parents} > 1) {
die "A class can't have more than one parent" unless $module eq "svg";
$codeGenerator->AddMethodsConstantsAndAttributesFromParentClasses($dataNode);
}
my $interfaceName = $dataNode->name;
my $className = GetClassName($interfaceName);
my $implClassName = GetImplClassName($interfaceName);
......@@ -671,7 +750,12 @@ sub GenerateImplementation
push(@implContentHeader, "#import \"$classHeaderName.h\"\n\n");
push(@implContentHeader, "#import <wtf/GetPtr.h>\n\n");
$implIncludes{"$implClassName.h"} = 1;
if ($codeGenerator->IsSVGAnimatedType($interfaceName)) {
$implIncludes{"SVGAnimatedTemplate.h"} = 1;
} else {
$implIncludes{"$implClassName.h"} = 1;
}
$implIncludes{"DOMInternal.h"} = 1;
@implContent = ();
......@@ -762,6 +846,9 @@ sub GenerateImplementation
# FIXME: for now special case attribute ownerDocument to call document, this is incorrect
# legacy behavior. (see http://bugzilla.opendarwin.org/show_bug.cgi?id=10889)
$attributeName = "document";
} elsif ($codeGenerator->IsSVGAnimatedType($idlType)) {
# Special case for animated types.
$attributeName .= "Animated";
}
$attributeNames{$attributeInterfaceName} = 1;
......@@ -1052,7 +1139,7 @@ sub GenerateImplementation
push(@implContent, "$typeGetterSig\n");
push(@implContent, "{\n");
push(@implContent, " return IMPL;\n");
push(@implContent, "}\n\n");
push(@implContent, "}\n\n");
# - Type-Maker
my $typeMakerName = GetObjCTypeMaker($interfaceName);
......@@ -1068,7 +1155,7 @@ sub GenerateImplementation
push(@implContent, " addDOMWrapper(self, impl);\n");
push(@implContent, " return self;\n");
push(@implContent, "}\n\n");
# - (DOMFooBar)_FooBarWith:(WebCore::FooBar *)impl for implementation class FooBar
push(@implContent, "$typeMakerSig\n");
push(@implContent, "{\n");
......@@ -1087,13 +1174,18 @@ sub GenerateImplementation
push(@implContent, " return static_cast<$className*>([DOMNode _nodeWith:impl]);\n");
push(@implContent, "}\n\n");
}
# END WebCoreInternal category
push(@implContent, "\@end\n");
# Generate interface definitions.
@intenalHeaderContent = split("\r", $implementationLicenceTemplate);
push(@intenalHeaderContent, "\n#import \"$className.h\"\n\n");
push(@intenalHeaderContent, "namespace WebCore { class $implClassName; }\n\n");
push(@intenalHeaderContent, "\n#import \"$className.h\"\n");
if ($codeGenerator->IsSVGAnimatedType($interfaceName)) {
push(@intenalHeaderContent, "#import \"SVGAnimatedTemplate.h\"\n\n");
} else {
push(@intenalHeaderContent, "\nnamespace WebCore { class $implClassName; }\n\n");
}
push(@intenalHeaderContent, "\@interface $className (WebCoreInternal)\n");
push(@intenalHeaderContent, "- ($implClassNameWithNamespace *)$typeGetterName;\n");
push(@intenalHeaderContent, "+ ($className *)$typeMakerName:($implClassNameWithNamespace *)impl;\n");
......
......@@ -23,10 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
module svg
{
interface [Conditional=SVG] SVGAnimatedAngle {
readonly attribute SVGAngle baseVal;
readonly attribute SVGAngle animVal;
};
};
module svg{
interface [Conditional=SVG] SVGAnimatedAngle {
readonly attribute SVGAngle baseVal;
readonly attribute SVGAngle animVal;
};
}
......@@ -23,11 +23,12 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
module svg
{
interface [Conditional=SVG] SVGAnimatedBoolean {
attribute boolean baseVal;
// raises DOMException on setting
readonly attribute boolean animVal;
};
};
module svg {
interface [Conditional=SVG] SVGAnimatedBoolean {
attribute boolean baseVal
/*setter raises(DOMException)*/;
readonly attribute boolean animVal;
};
}
......@@ -23,11 +23,12 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
module svg
{
interface [Conditional=SVG] SVGAnimatedEnumeration {
attribute unsigned short baseVal;
// raises DOMException on setting
readonly attribute unsigned short animVal;
};
};
module svg {
interface [Conditional=SVG] SVGAnimatedEnumeration {
attribute unsigned short baseVal
/*setter raises(DOMException)*/;
readonly attribute unsigned short animVal;
};
}
......@@ -23,11 +23,12 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
module svg
{
interface [Conditional=SVG] SVGAnimatedInteger {
attribute long baseVal;
// raises DOMException on setting
readonly attribute long animVal;
};
};
module svg {
interface [Conditional=SVG] SVGAnimatedInteger {
attribute long baseVal
/*setter raises(DOMException)*/;
readonly attribute long animVal;
};
}
......@@ -23,10 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
module svg
{
interface [Conditional=SVG] SVGAnimatedLength {
readonly attribute SVGLength baseVal;
readonly attribute SVGLength animVal;
};
};
module svg {
interface [Conditional=SVG] SVGAnimatedLength {
readonly attribute SVGLength baseVal;
readonly attribute SVGLength animVal;
};
}
......@@ -23,10 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
module svg
{
interface [Conditional=SVG] SVGAnimatedLengthList {
readonly attribute SVGLengthList baseVal;
readonly attribute SVGLengthList animVal;
};
};
module svg {
interface [Conditional=SVG] SVGAnimatedLengthList {
readonly attribute SVGLengthList baseVal;
readonly attribute SVGLengthList animVal;
};
}
/*
* Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
* Copyright (C) 2006 Apple Computer, Inc.
*
* Redistribution and use in source and binary forms, with or without
......@@ -23,11 +24,12 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
module svg
{
interface [Conditional=SVG] SVGAnimatedNumber {
attribute float baseVal;
// raises DOMException on setting
readonly attribute float animVal;
};
};
module svg {
interface [Conditional=SVG] SVGAnimatedNumber {
attribute float baseVal