+2006-10-10 Sam Weinig <sam.weinig@gmail.com>
+
+ Reviewed by Tim H.
+
+ Patch for http://bugs.webkit.org/show_bug.cgi?id=11248
+ Even More auto-generated Objective-C DOM bindings changes
+
+ - Auto-generate DOMSVGPathElement.
+
+ - Auto-generate the internal interfaces even for classes that have
+ custom internal implementations. Change IDL property from ObjCNoInternal
+ to ObjCCustomInternalImpl to indicate the change.
+
+ - Add SVG classes to DOMNode and DOMEvent internal interfaces.
+
+ - Add isSVGZoomEvent() method to Event class to match other Event subclasses
+ and make DOM binding possible.
+
+ - Assorted cleanups.
+
+ * DerivedSources.make:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/objc/DOM.mm:
+ (WebCore::addElementClass):
+ (WebCore::createElementClassMap):
+ (WebCore::elementClass):
+ (-[DOMNode description]):
+ (+[DOMNode _nodeWith:WebCore::]):
+ (-[DOMNode addEventListener:listener:useCapture:]):
+ (-[DOMNode removeEventListener:listener:useCapture:]):
+ (-[DOMElement _NPObject]):
+ (WebCore::ObjCEventListener::handleEvent):
+ * bindings/objc/DOMEvents.mm:
+ (+[DOMEvent _eventWith:WebCore::]):
+ * bindings/objc/DOMInternal.h:
+ * bindings/objc/DOMRGBColor.mm:
+ (-[DOMRGBColor WebCore::]):
+ * bindings/objc/DOMSVGPathSegInternal.h: Removed.
+ * bindings/scripts/CodeGeneratorObjC.pm:
+ * css/CSSRule.idl:
+ * css/CSSValue.idl:
+ * css/StyleSheet.idl:
+ * dom/Event.cpp:
+ (WebCore::Event::isSVGZoomEvent):
+ * dom/Event.h:
+ * dom/Event.idl:
+ * dom/Node.idl:
+ * ksvg2/events/SVGZoomEvent.cpp:
+ (WebCore::SVGZoomEvent::isSVGZoomEvent):
+ * ksvg2/events/SVGZoomEvent.h:
+ * ksvg2/svg/SVGAnimatedAngle.idl:
+ * ksvg2/svg/SVGCircleElement.idl:
+ * ksvg2/svg/SVGClipPathElement.idl:
+ * ksvg2/svg/SVGPathElement.idl:
+ * ksvg2/svg/SVGPathSeg.idl:
+
2006-10-10 Oliver Hunt <oliver@apple.com>
rubber stamped by Anders.
ifeq ($(OS),MACOS)
all : \
DOMAbstractView.h \
+ DOMSVGPathElement.h \
DOMAttr.h \
DOMCDATASection.h \
DOMCSSCharsetRule.h \
85AF5C570ACDD1B6005269DE /* DOMSVGURIReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 85AF5C560ACDD1B6005269DE /* DOMSVGURIReference.h */; };
85AFA8220AAF528A00E84305 /* DOMEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 85AFA8200AAF528A00E84305 /* DOMEvent.h */; };
85AFA8230AAF528A00E84305 /* DOMEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85AFA8210AAF528A00E84305 /* DOMEvent.mm */; };
+ 85B498ED0ADB32FB00925CBB /* DOMCSSRuleInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498EC0ADB32FB00925CBB /* DOMCSSRuleInternal.h */; };
+ 85B498F30ADB336A00925CBB /* DOMCSSValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498F20ADB336A00925CBB /* DOMCSSValueInternal.h */; };
+ 85B498F50ADB337A00925CBB /* DOMEventInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498F40ADB337A00925CBB /* DOMEventInternal.h */; };
+ 85B498FB0ADB340200925CBB /* DOMNodeInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498FA0ADB340200925CBB /* DOMNodeInternal.h */; };
+ 85B498FF0ADB348100925CBB /* DOMStyleSheetInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B498FE0ADB348100925CBB /* DOMStyleSheetInternal.h */; };
+ 85B499010ADB34B300925CBB /* DOMSVGPathSegInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B499000ADB34B300925CBB /* DOMSVGPathSegInternal.h */; };
+ 85B4996B0ADB3FF500925CBB /* DOMSVGPathElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B499690ADB3FF500925CBB /* DOMSVGPathElement.h */; };
+ 85B4996C0ADB3FF500925CBB /* DOMSVGPathElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85B4996A0ADB3FF500925CBB /* DOMSVGPathElement.mm */; };
+ 85B499780ADB425E00925CBB /* DOMSVGPathElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B499770ADB425E00925CBB /* DOMSVGPathElementInternal.h */; };
85BA4CDD0AA6861B0088052D /* DOMHTMLButtonElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CD50AA6861B0088052D /* DOMHTMLButtonElement.h */; };
85BA4CDE0AA6861B0088052D /* DOMHTMLButtonElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85BA4CD60AA6861B0088052D /* DOMHTMLButtonElement.mm */; };
85BA4CDF0AA6861B0088052D /* DOMHTMLFieldSetElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85BA4CD70AA6861B0088052D /* DOMHTMLFieldSetElement.h */; };
85CE1A9C0ADAC708003BBDEA /* DOMSVGSVGElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CE1A9A0ADAC708003BBDEA /* DOMSVGSVGElement.h */; };
85CE1A9D0ADAC708003BBDEA /* DOMSVGSVGElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85CE1A9B0ADAC708003BBDEA /* DOMSVGSVGElement.mm */; };
85CE1AA10ADAC752003BBDEA /* DOMSVGSVGElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CE1AA00ADAC752003BBDEA /* DOMSVGSVGElementInternal.h */; };
- 85CE1AF30ADAD440003BBDEA /* DOMSVGPathSegInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CE1AF20ADAD440003BBDEA /* DOMSVGPathSegInternal.h */; };
85CE1B020ADADA96003BBDEA /* DOMSVGPathSegInternal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85CE1B010ADADA96003BBDEA /* DOMSVGPathSegInternal.mm */; };
85D2AD680AB1A40A00C313EA /* DOMEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 85D2AD670AB1A40A00C313EA /* DOMEventListener.h */; };
85D2AD6D0AB1A48200C313EA /* DOMEventListener.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 85D2AD670AB1A40A00C313EA /* DOMEventListener.h */; };
85AFA7420AAF298400E84305 /* EventTarget.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = EventTarget.idl; sourceTree = "<group>"; };
85AFA8200AAF528A00E84305 /* DOMEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEvent.h; sourceTree = "<group>"; };
85AFA8210AAF528A00E84305 /* DOMEvent.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMEvent.mm; sourceTree = "<group>"; };
+ 85B498EC0ADB32FB00925CBB /* DOMCSSRuleInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSRuleInternal.h; sourceTree = "<group>"; };
+ 85B498F20ADB336A00925CBB /* DOMCSSValueInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMCSSValueInternal.h; sourceTree = "<group>"; };
+ 85B498F40ADB337A00925CBB /* DOMEventInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEventInternal.h; sourceTree = "<group>"; };
+ 85B498FA0ADB340200925CBB /* DOMNodeInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMNodeInternal.h; sourceTree = "<group>"; };
+ 85B498FE0ADB348100925CBB /* DOMStyleSheetInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMStyleSheetInternal.h; sourceTree = "<group>"; };
+ 85B499000ADB34B300925CBB /* DOMSVGPathSegInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGPathSegInternal.h; sourceTree = "<group>"; };
+ 85B499690ADB3FF500925CBB /* DOMSVGPathElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGPathElement.h; sourceTree = "<group>"; };
+ 85B4996A0ADB3FF500925CBB /* DOMSVGPathElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGPathElement.mm; sourceTree = "<group>"; };
+ 85B499770ADB425E00925CBB /* DOMSVGPathElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGPathElementInternal.h; sourceTree = "<group>"; };
85BA4CD50AA6861B0088052D /* DOMHTMLButtonElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLButtonElement.h; sourceTree = "<group>"; };
85BA4CD60AA6861B0088052D /* DOMHTMLButtonElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLButtonElement.mm; sourceTree = "<group>"; };
85BA4CD70AA6861B0088052D /* DOMHTMLFieldSetElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLFieldSetElement.h; sourceTree = "<group>"; };
85CE1A9A0ADAC708003BBDEA /* DOMSVGSVGElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGSVGElement.h; sourceTree = "<group>"; };
85CE1A9B0ADAC708003BBDEA /* DOMSVGSVGElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGSVGElement.mm; sourceTree = "<group>"; };
85CE1AA00ADAC752003BBDEA /* DOMSVGSVGElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGSVGElementInternal.h; sourceTree = "<group>"; };
- 85CE1AF20ADAD440003BBDEA /* DOMSVGPathSegInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMSVGPathSegInternal.h; sourceTree = "<group>"; };
85CE1B010ADADA96003BBDEA /* DOMSVGPathSegInternal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMSVGPathSegInternal.mm; sourceTree = "<group>"; };
85D2AD670AB1A40A00C313EA /* DOMEventListener.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMEventListener.h; sourceTree = "<group>"; };
85D389B00A991A7F00282145 /* DOMAttr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMAttr.h; sourceTree = "<group>"; };
851620EE0AD2FD880059A7DE /* DOMSVGNumber.mm */,
851620F00AD2FD880059A7DE /* DOMSVGPoint.mm */,
851620F20AD2FD890059A7DE /* DOMSVGRect.mm */,
- 85CE1AF20ADAD440003BBDEA /* DOMSVGPathSegInternal.h */,
85CE1B010ADADA96003BBDEA /* DOMSVGPathSegInternal.mm */,
);
name = SVG;
85C239800AD5907D003533E7 /* DOMSVGNumberList.mm */,
85C9A3030AD7E94200FBFF1E /* DOMSVGPaint.h */,
85C9A3040AD7E94200FBFF1E /* DOMSVGPaint.mm */,
+ 85B499690ADB3FF500925CBB /* DOMSVGPathElement.h */,
+ 85B4996A0ADB3FF500925CBB /* DOMSVGPathElement.mm */,
854163610AC7180B0001E01B /* DOMSVGPathSeg.h */,
854163600AC7180B0001E01B /* DOMSVGPathSeg.mm */,
8501204D0ADABC9200267125 /* DOMSVGPathSegArcAbs.h */,
85909CD60ACC7A7E00DF01F1 /* DOMCSSMediaRuleInternal.h */,
85909CD70ACC7A7E00DF01F1 /* DOMCSSPageRuleInternal.h */,
85909D260ACC7D5500DF01F1 /* DOMCSSPrimitiveValueInternal.h */,
+ 85B498EC0ADB32FB00925CBB /* DOMCSSRuleInternal.h */,
85E711430AC5D5340053270F /* DOMCSSRuleListInternal.h */,
85E711440AC5D5340053270F /* DOMCSSStyleDeclarationInternal.h */,
85909CD90ACC7A7E00DF01F1 /* DOMCSSStyleRuleInternal.h */,
85909CDA0ACC7A7E00DF01F1 /* DOMCSSStyleSheetInternal.h */,
85909CDB0ACC7A7E00DF01F1 /* DOMCSSUnknownRuleInternal.h */,
+ 85B498F20ADB336A00925CBB /* DOMCSSValueInternal.h */,
85909D280ACC7D5500DF01F1 /* DOMCSSValueListInternal.h */,
85E711450AC5D5340053270F /* DOMDocumentFragmentInternal.h */,
85E711460AC5D5340053270F /* DOMDocumentInternal.h */,
85E711490AC5D5340053270F /* DOMElementInternal.h */,
85E7114A0AC5D5340053270F /* DOMEntityInternal.h */,
85E7114B0AC5D5340053270F /* DOMEntityReferenceInternal.h */,
+ 85B498F40ADB337A00925CBB /* DOMEventInternal.h */,
85E7114C0AC5D5340053270F /* DOMHTMLAnchorElementInternal.h */,
855247CD0AD850B80012093B /* DOMHTMLAppletElementInternal.h */,
85E7114D0AC5D5340053270F /* DOMHTMLAreaElementInternal.h */,
85989DC60ACC8BBD00A0BC51 /* DOMMouseEventInternal.h */,
85989DC70ACC8BBD00A0BC51 /* DOMMutationEventInternal.h */,
85E711830AC5D5350053270F /* DOMNamedNodeMapInternal.h */,
+ 85B498FA0ADB340200925CBB /* DOMNodeInternal.h */,
850B41C00AD9E7E700A6ED4F /* DOMNodeIteratorInternal.h */,
85E711840AC5D5350053270F /* DOMNodeListInternal.h */,
85E711850AC5D5350053270F /* DOMNotationInternal.h */,
85E711860AC5D5350053270F /* DOMProcessingInstructionInternal.h */,
8538F05A0AD722F1006A81D1 /* DOMRangeInternal.h */,
85E711870AC5D5350053270F /* DOMRectInternal.h */,
+ 85B498FE0ADB348100925CBB /* DOMStyleSheetInternal.h */,
85E711880AC5D5350053270F /* DOMStyleSheetListInternal.h */,
85ACEF850ACDD04A001214FF /* DOMSVGAElementInternal.h */,
854163960AC718680001E01B /* DOMSVGAngleInternal.h */,
8559F11E0AC9BF4100A3439C /* DOMSVGMetadataElementInternal.h */,
85C239830AD59098003533E7 /* DOMSVGNumberListInternal.h */,
85C9A3180AD7E9A400FBFF1E /* DOMSVGPaintInternal.h */,
+ 85B499770ADB425E00925CBB /* DOMSVGPathElementInternal.h */,
850120550ADABCD900267125 /* DOMSVGPathSegArcAbsInternal.h */,
850120560ADABCD900267125 /* DOMSVGPathSegArcRelInternal.h */,
85CE1A930ADAC66D003BBDEA /* DOMSVGPathSegClosePathInternal.h */,
85CE1A620ADAC4C5003BBDEA /* DOMSVGPathSegCurvetoQuadraticRelInternal.h */,
85CE1A630ADAC4C5003BBDEA /* DOMSVGPathSegCurvetoQuadraticSmoothAbsInternal.h */,
85CE1A640ADAC4C5003BBDEA /* DOMSVGPathSegCurvetoQuadraticSmoothRelInternal.h */,
+ 85B499000ADB34B300925CBB /* DOMSVGPathSegInternal.h */,
85CE1A650ADAC4C5003BBDEA /* DOMSVGPathSegLinetoAbsInternal.h */,
85CE1A660ADAC4C5003BBDEA /* DOMSVGPathSegLinetoHorizontalAbsInternal.h */,
85CE1A670ADAC4C5003BBDEA /* DOMSVGPathSegLinetoHorizontalRelInternal.h */,
85CE1A940ADAC66D003BBDEA /* DOMSVGPathSegClosePathInternal.h in Headers */,
85CE1A9C0ADAC708003BBDEA /* DOMSVGSVGElement.h in Headers */,
85CE1AA10ADAC752003BBDEA /* DOMSVGSVGElementInternal.h in Headers */,
- 85CE1AF30ADAD440003BBDEA /* DOMSVGPathSegInternal.h in Headers */,
+ 85B498ED0ADB32FB00925CBB /* DOMCSSRuleInternal.h in Headers */,
+ 85B498F30ADB336A00925CBB /* DOMCSSValueInternal.h in Headers */,
+ 85B498F50ADB337A00925CBB /* DOMEventInternal.h in Headers */,
+ 85B498FB0ADB340200925CBB /* DOMNodeInternal.h in Headers */,
+ 85B498FF0ADB348100925CBB /* DOMStyleSheetInternal.h in Headers */,
+ 85B499010ADB34B300925CBB /* DOMSVGPathSegInternal.h in Headers */,
+ 85B4996B0ADB3FF500925CBB /* DOMSVGPathElement.h in Headers */,
+ 85B499780ADB425E00925CBB /* DOMSVGPathElementInternal.h in Headers */,
656D37320ADBA5DE00A4554D /* LoaderNSURLExtras.h in Headers */,
656D37340ADBA5DE00A4554D /* WebDataProtocol.h in Headers */,
656D37360ADBA5DE00A4554D /* WebDocumentLoader.h in Headers */,
85CE1A920ADAC650003BBDEA /* DOMSVGPathSegClosePath.mm in Sources */,
85CE1A9D0ADAC708003BBDEA /* DOMSVGSVGElement.mm in Sources */,
85CE1B020ADADA96003BBDEA /* DOMSVGPathSegInternal.mm in Sources */,
+ 85B4996C0ADB3FF500925CBB /* DOMSVGPathElement.mm in Sources */,
656D37330ADBA5DE00A4554D /* LoaderNSURLExtras.m in Sources */,
656D37350ADBA5DE00A4554D /* WebDataProtocol.mm in Sources */,
656D37370ADBA5DE00A4554D /* WebDocumentLoader.mm in Sources */,
#import <objc/objc-class.h>
#import <wtf/HashMap.h>
-using namespace WebCore::HTMLNames;
+#ifdef SVG_SUPPORT
+#import "SVGDocument.h"
+#import "SVGElement.h"
+#import "SVGNames.h"
+#endif
-class ObjCEventListener : public WebCore::EventListener {
+namespace WebCore {
+
+class ObjCEventListener : public EventListener {
public:
static ObjCEventListener* find(id <DOMEventListener>);
static ObjCEventListener* create(id <DOMEventListener>);
ObjCEventListener(id <DOMEventListener>);
virtual ~ObjCEventListener();
- virtual void handleEvent(WebCore::Event*, bool isWindowEvent);
+ virtual void handleEvent(Event*, bool isWindowEvent);
id <DOMEventListener> m_listener;
};
typedef HashMap<id, ObjCEventListener*> ListenerMap;
-typedef HashMap<WebCore::AtomicStringImpl*, Class> ObjCClassMap;
-
-static ObjCClassMap* elementClassMap;
static ListenerMap* listenerMap;
+} // namespace WebCore
+
//------------------------------------------------------------------------------------------
// DOMNode
-static void addElementClass(const WebCore::QualifiedName& tag, Class objCClass)
+namespace WebCore {
+
+typedef HashMap<const QualifiedName*, Class> ObjCClassMap;
+static ObjCClassMap* elementClassMap;
+
+static void addElementClass(const QualifiedName& tag, Class objCClass)
{
- elementClassMap->set(tag.localName().impl(), objCClass);
+ elementClassMap->set(&tag, objCClass);
}
-static void createHTMLElementClassMap()
+static void createElementClassMap()
{
// Create the table.
elementClassMap = new ObjCClassMap;
-
- // Populate it with HTML element classes.
- addElementClass(aTag, [DOMHTMLAnchorElement class]);
- addElementClass(appletTag, [DOMHTMLAppletElement class]);
- addElementClass(areaTag, [DOMHTMLAreaElement class]);
- addElementClass(baseTag, [DOMHTMLBaseElement class]);
- addElementClass(basefontTag, [DOMHTMLBaseFontElement class]);
- addElementClass(bodyTag, [DOMHTMLBodyElement class]);
- addElementClass(brTag, [DOMHTMLBRElement class]);
- addElementClass(buttonTag, [DOMHTMLButtonElement class]);
- addElementClass(canvasTag, [DOMHTMLImageElement class]);
- addElementClass(captionTag, [DOMHTMLTableCaptionElement class]);
- addElementClass(colTag, [DOMHTMLTableColElement class]);
- addElementClass(colgroupTag, [DOMHTMLTableColElement class]);
- addElementClass(dirTag, [DOMHTMLDirectoryElement class]);
- addElementClass(divTag, [DOMHTMLDivElement class]);
- addElementClass(dlTag, [DOMHTMLDListElement class]);
- addElementClass(fieldsetTag, [DOMHTMLFieldSetElement class]);
- addElementClass(fontTag, [DOMHTMLFontElement class]);
- addElementClass(formTag, [DOMHTMLFormElement class]);
- addElementClass(frameTag, [DOMHTMLFrameElement class]);
- addElementClass(framesetTag, [DOMHTMLFrameSetElement class]);
- addElementClass(h1Tag, [DOMHTMLHeadingElement class]);
- addElementClass(h2Tag, [DOMHTMLHeadingElement class]);
- addElementClass(h3Tag, [DOMHTMLHeadingElement class]);
- addElementClass(h4Tag, [DOMHTMLHeadingElement class]);
- addElementClass(h5Tag, [DOMHTMLHeadingElement class]);
- addElementClass(h6Tag, [DOMHTMLHeadingElement class]);
- addElementClass(headTag, [DOMHTMLHeadElement class]);
- addElementClass(hrTag, [DOMHTMLHRElement class]);
- addElementClass(htmlTag, [DOMHTMLHtmlElement class]);
- addElementClass(iframeTag, [DOMHTMLIFrameElement class]);
- addElementClass(imgTag, [DOMHTMLImageElement class]);
- addElementClass(inputTag, [DOMHTMLInputElement class]);
- addElementClass(isindexTag, [DOMHTMLIsIndexElement class]);
- addElementClass(labelTag, [DOMHTMLLabelElement class]);
- addElementClass(legendTag, [DOMHTMLLegendElement class]);
- addElementClass(liTag, [DOMHTMLLIElement class]);
- addElementClass(linkTag, [DOMHTMLLinkElement class]);
- addElementClass(listingTag, [DOMHTMLPreElement class]);
- addElementClass(mapTag, [DOMHTMLMapElement class]);
- addElementClass(menuTag, [DOMHTMLMenuElement class]);
- addElementClass(metaTag, [DOMHTMLMetaElement class]);
- addElementClass(objectTag, [DOMHTMLObjectElement class]);
- addElementClass(olTag, [DOMHTMLOListElement class]);
- addElementClass(optgroupTag, [DOMHTMLOptGroupElement class]);
- addElementClass(optionTag, [DOMHTMLOptionElement class]);
- addElementClass(pTag, [DOMHTMLParagraphElement class]);
- addElementClass(paramTag, [DOMHTMLParamElement class]);
- addElementClass(preTag, [DOMHTMLPreElement class]);
- addElementClass(qTag, [DOMHTMLQuoteElement class]);
- addElementClass(scriptTag, [DOMHTMLScriptElement class]);
- addElementClass(selectTag, [DOMHTMLSelectElement class]);
- addElementClass(styleTag, [DOMHTMLStyleElement class]);
- addElementClass(tableTag, [DOMHTMLTableElement class]);
- addElementClass(tbodyTag, [DOMHTMLTableSectionElement class]);
- addElementClass(tdTag, [DOMHTMLTableCellElement class]);
- addElementClass(textareaTag, [DOMHTMLTextAreaElement class]);
- addElementClass(tfootTag, [DOMHTMLTableSectionElement class]);
- addElementClass(theadTag, [DOMHTMLTableSectionElement class]);
- addElementClass(titleTag, [DOMHTMLTitleElement class]);
- addElementClass(trTag, [DOMHTMLTableRowElement class]);
- addElementClass(ulTag, [DOMHTMLUListElement class]);
// FIXME: Reflect marquee once the API has been determined.
-}
-static Class elementClass(const WebCore::AtomicString& tagName)
+ // Populate it with HTML and SVG element classes.
+ addElementClass(HTMLNames::aTag, [DOMHTMLAnchorElement class]);
+ addElementClass(HTMLNames::appletTag, [DOMHTMLAppletElement class]);
+ addElementClass(HTMLNames::areaTag, [DOMHTMLAreaElement class]);
+ addElementClass(HTMLNames::baseTag, [DOMHTMLBaseElement class]);
+ addElementClass(HTMLNames::basefontTag, [DOMHTMLBaseFontElement class]);
+ addElementClass(HTMLNames::bodyTag, [DOMHTMLBodyElement class]);
+ addElementClass(HTMLNames::brTag, [DOMHTMLBRElement class]);
+ addElementClass(HTMLNames::buttonTag, [DOMHTMLButtonElement class]);
+ addElementClass(HTMLNames::canvasTag, [DOMHTMLImageElement class]);
+ addElementClass(HTMLNames::captionTag, [DOMHTMLTableCaptionElement class]);
+ addElementClass(HTMLNames::colTag, [DOMHTMLTableColElement class]);
+ addElementClass(HTMLNames::colgroupTag, [DOMHTMLTableColElement class]);
+ addElementClass(HTMLNames::dirTag, [DOMHTMLDirectoryElement class]);
+ addElementClass(HTMLNames::divTag, [DOMHTMLDivElement class]);
+ addElementClass(HTMLNames::dlTag, [DOMHTMLDListElement class]);
+ addElementClass(HTMLNames::fieldsetTag, [DOMHTMLFieldSetElement class]);
+ addElementClass(HTMLNames::fontTag, [DOMHTMLFontElement class]);
+ addElementClass(HTMLNames::formTag, [DOMHTMLFormElement class]);
+ addElementClass(HTMLNames::frameTag, [DOMHTMLFrameElement class]);
+ addElementClass(HTMLNames::framesetTag, [DOMHTMLFrameSetElement class]);
+ addElementClass(HTMLNames::h1Tag, [DOMHTMLHeadingElement class]);
+ addElementClass(HTMLNames::h2Tag, [DOMHTMLHeadingElement class]);
+ addElementClass(HTMLNames::h3Tag, [DOMHTMLHeadingElement class]);
+ addElementClass(HTMLNames::h4Tag, [DOMHTMLHeadingElement class]);
+ addElementClass(HTMLNames::h5Tag, [DOMHTMLHeadingElement class]);
+ addElementClass(HTMLNames::h6Tag, [DOMHTMLHeadingElement class]);
+ addElementClass(HTMLNames::headTag, [DOMHTMLHeadElement class]);
+ addElementClass(HTMLNames::hrTag, [DOMHTMLHRElement class]);
+ addElementClass(HTMLNames::htmlTag, [DOMHTMLHtmlElement class]);
+ addElementClass(HTMLNames::iframeTag, [DOMHTMLIFrameElement class]);
+ addElementClass(HTMLNames::imgTag, [DOMHTMLImageElement class]);
+ addElementClass(HTMLNames::inputTag, [DOMHTMLInputElement class]);
+ addElementClass(HTMLNames::isindexTag, [DOMHTMLIsIndexElement class]);
+ addElementClass(HTMLNames::labelTag, [DOMHTMLLabelElement class]);
+ addElementClass(HTMLNames::legendTag, [DOMHTMLLegendElement class]);
+ addElementClass(HTMLNames::liTag, [DOMHTMLLIElement class]);
+ addElementClass(HTMLNames::linkTag, [DOMHTMLLinkElement class]);
+ addElementClass(HTMLNames::listingTag, [DOMHTMLPreElement class]);
+ addElementClass(HTMLNames::mapTag, [DOMHTMLMapElement class]);
+ addElementClass(HTMLNames::menuTag, [DOMHTMLMenuElement class]);
+ addElementClass(HTMLNames::metaTag, [DOMHTMLMetaElement class]);
+ addElementClass(HTMLNames::objectTag, [DOMHTMLObjectElement class]);
+ addElementClass(HTMLNames::olTag, [DOMHTMLOListElement class]);
+ addElementClass(HTMLNames::optgroupTag, [DOMHTMLOptGroupElement class]);
+ addElementClass(HTMLNames::optionTag, [DOMHTMLOptionElement class]);
+ addElementClass(HTMLNames::pTag, [DOMHTMLParagraphElement class]);
+ addElementClass(HTMLNames::paramTag, [DOMHTMLParamElement class]);
+ addElementClass(HTMLNames::preTag, [DOMHTMLPreElement class]);
+ addElementClass(HTMLNames::qTag, [DOMHTMLQuoteElement class]);
+ addElementClass(HTMLNames::scriptTag, [DOMHTMLScriptElement class]);
+ addElementClass(HTMLNames::selectTag, [DOMHTMLSelectElement class]);
+ addElementClass(HTMLNames::styleTag, [DOMHTMLStyleElement class]);
+ addElementClass(HTMLNames::tableTag, [DOMHTMLTableElement class]);
+ addElementClass(HTMLNames::tbodyTag, [DOMHTMLTableSectionElement class]);
+ addElementClass(HTMLNames::tdTag, [DOMHTMLTableCellElement class]);
+ addElementClass(HTMLNames::textareaTag, [DOMHTMLTextAreaElement class]);
+ addElementClass(HTMLNames::tfootTag, [DOMHTMLTableSectionElement class]);
+ addElementClass(HTMLNames::theadTag, [DOMHTMLTableSectionElement class]);
+ addElementClass(HTMLNames::titleTag, [DOMHTMLTitleElement class]);
+ addElementClass(HTMLNames::trTag, [DOMHTMLTableRowElement class]);
+ addElementClass(HTMLNames::ulTag, [DOMHTMLUListElement class]);
+
+#ifdef SVG_SUPPORT
+ addElementClass(SVGNames::aTag, [DOMSVGAElement class]);
+ addElementClass(SVGNames::animateTag, [DOMSVGAnimateElement class]);
+ addElementClass(SVGNames::animateColorTag, [DOMSVGAnimateColorElement class]);
+ addElementClass(SVGNames::animateTransformTag, [DOMSVGAnimateTransformElement class]);
+ addElementClass(SVGNames::circleTag, [DOMSVGCircleElement class]);
+ addElementClass(SVGNames::clipPathTag, [DOMSVGClipPathElement class]);
+ addElementClass(SVGNames::cursorTag, [DOMSVGCursorElement class]);
+ addElementClass(SVGNames::defsTag, [DOMSVGDefsElement class]);
+ addElementClass(SVGNames::descTag, [DOMSVGDescElement class]);
+ addElementClass(SVGNames::ellipseTag, [DOMSVGEllipseElement class]);
+ addElementClass(SVGNames::feBlendTag, [DOMSVGFEBlendElement class]);
+ addElementClass(SVGNames::feColorMatrixTag, [DOMSVGFEColorMatrixElement class]);
+ addElementClass(SVGNames::feComponentTransferTag, [DOMSVGFEComponentTransferElement class]);
+ addElementClass(SVGNames::feCompositeTag, [DOMSVGFECompositeElement class]);
+ addElementClass(SVGNames::feDiffuseLightingTag, [DOMSVGFEDiffuseLightingElement class]);
+ addElementClass(SVGNames::feDisplacementMapTag, [DOMSVGFEDisplacementMapElement class]);
+ addElementClass(SVGNames::feDistantLightTag, [DOMSVGFEDistantLightElement class]);
+ addElementClass(SVGNames::feFloodTag, [DOMSVGFEFloodElement class]);
+ addElementClass(SVGNames::feFuncATag, [DOMSVGFEFuncAElement class]);
+ addElementClass(SVGNames::feFuncBTag, [DOMSVGFEFuncBElement class]);
+ addElementClass(SVGNames::feFuncGTag, [DOMSVGFEFuncGElement class]);
+ addElementClass(SVGNames::feFuncRTag, [DOMSVGFEFuncRElement class]);
+ addElementClass(SVGNames::feGaussianBlurTag, [DOMSVGFEGaussianBlurElement class]);
+ addElementClass(SVGNames::feImageTag, [DOMSVGFEImageElement class]);
+ addElementClass(SVGNames::feMergeTag, [DOMSVGFEMergeElement class]);
+ addElementClass(SVGNames::feMergeNodeTag, [DOMSVGFEMergeNodeElement class]);
+ addElementClass(SVGNames::feOffsetTag, [DOMSVGFEOffsetElement class]);
+ addElementClass(SVGNames::fePointLightTag, [DOMSVGFEPointLightElement class]);
+ addElementClass(SVGNames::feSpecularLightingTag, [DOMSVGFESpecularLightingElement class]);
+ addElementClass(SVGNames::feSpotLightTag, [DOMSVGFESpotLightElement class]);
+ addElementClass(SVGNames::feTileTag, [DOMSVGFETileElement class]);
+ addElementClass(SVGNames::feTurbulenceTag, [DOMSVGFETurbulenceElement class]);
+ addElementClass(SVGNames::filterTag, [DOMSVGFilterElement class]);
+ addElementClass(SVGNames::foreignObjectTag, [DOMSVGForeignObjectElement class]);
+ addElementClass(SVGNames::gTag, [DOMSVGGElement class]);
+ addElementClass(SVGNames::imageTag, [DOMSVGImageElement class]);
+ addElementClass(SVGNames::lineTag, [DOMSVGLineElement class]);
+ addElementClass(SVGNames::linearGradientTag, [DOMSVGLinearGradientElement class]);
+ addElementClass(SVGNames::markerTag, [DOMSVGMarkerElement class]);
+ addElementClass(SVGNames::maskTag, [DOMSVGMaskElement class]);
+ addElementClass(SVGNames::metadataTag, [DOMSVGMetadataElement class]);
+ addElementClass(SVGNames::pathTag, [DOMSVGPathElement class]);
+ addElementClass(SVGNames::patternTag, [DOMSVGPatternElement class]);
+ addElementClass(SVGNames::polygonTag, [DOMSVGPolygonElement class]);
+ addElementClass(SVGNames::polylineTag, [DOMSVGPolylineElement class]);
+ addElementClass(SVGNames::radialGradientTag, [DOMSVGRadialGradientElement class]);
+ addElementClass(SVGNames::rectTag, [DOMSVGRectElement class]);
+ addElementClass(SVGNames::scriptTag, [DOMSVGScriptElement class]);
+ addElementClass(SVGNames::setTag, [DOMSVGSetElement class]);
+ addElementClass(SVGNames::stopTag, [DOMSVGStopElement class]);
+ addElementClass(SVGNames::styleTag, [DOMSVGStyleElement class]);
+ addElementClass(SVGNames::svgTag, [DOMSVGSVGElement class]);
+ addElementClass(SVGNames::switchTag, [DOMSVGSwitchElement class]);
+ addElementClass(SVGNames::symbolTag, [DOMSVGSymbolElement class]);
+ addElementClass(SVGNames::textTag, [DOMSVGTextElement class]);
+ addElementClass(SVGNames::titleTag, [DOMSVGTitleElement class]);
+ addElementClass(SVGNames::trefTag, [DOMSVGTRefElement class]);
+ addElementClass(SVGNames::tspanTag, [DOMSVGTSpanElement class]);
+ addElementClass(SVGNames::useTag, [DOMSVGUseElement class]);
+ addElementClass(SVGNames::viewTag, [DOMSVGViewElement class]);
+#endif
+}
+
+static Class elementClass(const QualifiedName& tag, Class defaultClass)
{
if (!elementClassMap)
- createHTMLElementClassMap();
- Class objcClass = elementClassMap->get(tagName.impl());
+ createElementClassMap();
+ Class objcClass = elementClassMap->get(&tag);
if (!objcClass)
- objcClass = [DOMHTMLElement class];
+ objcClass = defaultClass;
return objcClass;
}
+} // namespace WebCore
+
@implementation DOMNode (WebCoreInternal)
// FIXME: should this go in the main implementation?
{
if (!_internal)
return [NSString stringWithFormat:@"<%@: null>", [[self class] description], self];
-
+
NSString *value = [self nodeValue];
if (value)
return [NSString stringWithFormat:@"<%@ [%@]: %p '%@'>",
{
if (!impl)
return nil;
-
+
id cachedInstance;
cachedInstance = WebCore::getDOMWrapper(impl);
if (cachedInstance)
return [[cachedInstance retain] autorelease];
-
+
Class wrapperClass = nil;
switch (impl->nodeType()) {
case WebCore::Node::ELEMENT_NODE:
if (impl->isHTMLElement())
- wrapperClass = elementClass(static_cast<WebCore::HTMLElement*>(impl)->localName());
+ wrapperClass = WebCore::elementClass(static_cast<WebCore::HTMLElement*>(impl)->tagQName(), [DOMHTMLElement class]);
+#ifdef SVG_SUPPORT
+ else if (impl->isSVGElement())
+ wrapperClass = WebCore::elementClass(static_cast<WebCore::SVGElement*>(impl)->tagQName(), [DOMSVGElement class]);
+#endif
else
wrapperClass = [DOMElement class];
break;
case WebCore::Node::DOCUMENT_NODE:
if (static_cast<WebCore::Document*>(impl)->isHTMLDocument())
wrapperClass = [DOMHTMLDocument class];
+#ifdef SVG_SUPPORT
+ else if (static_cast<WebCore::Document*>(impl)->isSVGDocument())
+ wrapperClass = [DOMSVGDocument class];
+#endif
else
wrapperClass = [DOMDocument class];
break;
if (![self _node]->isEventTargetNode())
WebCore::raiseDOMException(DOM_NOT_SUPPORTED_ERR);
- WebCore::EventListener *wrapper = ObjCEventListener::create(listener);
+ WebCore::EventListener *wrapper = WebCore::ObjCEventListener::create(listener);
WebCore::EventTargetNodeCast([self _node])->addEventListener(type, wrapper, useCapture);
wrapper->deref();
}
if (![self _node]->isEventTargetNode())
WebCore::raiseDOMException(DOM_NOT_SUPPORTED_ERR);
- if (WebCore::EventListener *wrapper = ObjCEventListener::find(listener))
+ if (WebCore::EventListener *wrapper = WebCore::ObjCEventListener::find(listener))
WebCore::EventTargetNodeCast([self _node])->removeEventListener(type, wrapper, useCapture);
}
- (void *)_NPObject
{
WebCore::Element* element = [self _element];
- if (element->hasTagName(appletTag) || element->hasTagName(embedTag) || element->hasTagName(objectTag))
+ if (element->hasTagName(WebCore::HTMLNames::appletTag) || element->hasTagName(WebCore::HTMLNames::embedTag) || element->hasTagName(WebCore::HTMLNames::objectTag))
return static_cast<WebCore::HTMLPlugInElement*>(element)->getNPObject();
return 0;
}
@end
+
//------------------------------------------------------------------------------------------
// ObjCEventListener
+namespace WebCore {
+
ObjCEventListener* ObjCEventListener::find(id <DOMEventListener> listener)
{
if (ListenerMap* map = listenerMap)
[m_listener release];
}
-void ObjCEventListener::handleEvent(WebCore::Event* event, bool)
+void ObjCEventListener::handleEvent(Event* event, bool)
{
[m_listener handleEvent:[DOMEvent _eventWith:event]];
}
+
+} // namespace WebCore
#import "DOMPrivate.h"
#import "Document.h"
#import "Event.h"
-#import "MouseEvent.h"
#import "KeyboardEvent.h"
+#import "MouseEvent.h"
#import "MutationEvent.h"
#import "OverflowEvent.h"
#import "UIEvent.h"
+#ifdef SVG_SUPPORT
+#import "DOMSVGZoomEvent.h"
+#import "SVGZoomEvent.h"
+#endif
+
//------------------------------------------------------------------------------------------
// DOMEvent
wrapperClass = [DOMUIEvent class];
else if (impl->isOverflowEvent())
wrapperClass = [DOMOverflowEvent class];
+#ifdef SVG_SUPPORT
+ else if (impl->isSVGZoomEvent())
+ wrapperClass = [DOMSVGZoomEvent class];
+#endif
else
wrapperClass = [DOMEvent class];
#import "DOM.h"
#import "Color.h"
-#import "DOMCSSRule.h"
-#import "DOMCSSValue.h"
-#import "DOMEvents.h"
-#import "DOMNode.h"
#import "DOMObject.h"
#import "DOMRGBColor.h"
-#import "DOMStyleSheet.h"
#ifdef SVG_SUPPORT
#import "DOMSVGNumber.h"
#import "DOMXPathNSResolver.h"
#endif // XPATH_SUPPORT
+
// Auto-generated internal interfaces
#import "DOMAbstractViewInternal.h"
#import "DOMAttrInternal.h"
#import "DOMCSSMediaRuleInternal.h"
#import "DOMCSSPageRuleInternal.h"
#import "DOMCSSPrimitiveValueInternal.h"
+#import "DOMCSSRuleInternal.h"
#import "DOMCSSRuleListInternal.h"
#import "DOMCSSStyleDeclarationInternal.h"
#import "DOMCSSStyleRuleInternal.h"
#import "DOMCSSStyleSheetInternal.h"
#import "DOMCSSUnknownRuleInternal.h"
+#import "DOMCSSValueInternal.h"
#import "DOMCSSValueListInternal.h"
#import "DOMCharacterDataInternal.h"
#import "DOMCommentInternal.h"
#import "DOMElementInternal.h"
#import "DOMEntityInternal.h"
#import "DOMEntityReferenceInternal.h"
+#import "DOMEventInternal.h"
#import "DOMHTMLAnchorElementInternal.h"
#import "DOMHTMLAppletElementInternal.h"
#import "DOMHTMLAreaElementInternal.h"
#import "DOMMouseEventInternal.h"
#import "DOMMutationEventInternal.h"
#import "DOMNamedNodeMapInternal.h"
+#import "DOMNodeInternal.h"
#import "DOMNodeIteratorInternal.h"
#import "DOMNodeListInternal.h"
#import "DOMNotationInternal.h"
#import "DOMProcessingInstructionInternal.h"
#import "DOMRangeInternal.h"
#import "DOMRectInternal.h"
+#import "DOMStyleSheetInternal.h"
#import "DOMStyleSheetListInternal.h"
#import "DOMTextInternal.h"
#import "DOMTreeWalkerInternal.h"
#import "DOMSVGFESpotLightElementInternal.h"
#import "DOMSVGFETileElementInternal.h"
#import "DOMSVGFETurbulenceElementInternal.h"
-#import "DOMSVGFilterElement.h"
-#import "DOMSVGForeignObjectElement.h"
-#import "DOMSVGGElement.h"
-#import "DOMSVGGradientElement.h"
-#import "DOMSVGImageElement.h"
+#import "DOMSVGFilterElementInternal.h"
+#import "DOMSVGForeignObjectElementInternal.h"
+#import "DOMSVGGElementInternal.h"
+#import "DOMSVGGradientElementInternal.h"
+#import "DOMSVGImageElementInternal.h"
#import "DOMSVGLengthInternal.h"
#import "DOMSVGLengthListInternal.h"
-#import "DOMSVGLineElement.h"
-#import "DOMSVGLinearGradientElement.h"
-#import "DOMSVGMarkerElement.h"
-#import "DOMSVGMaskElement.h"
+#import "DOMSVGLineElementInternal.h"
+#import "DOMSVGLinearGradientElementInternal.h"
+#import "DOMSVGMarkerElementInternal.h"
+#import "DOMSVGMaskElementInternal.h"
#import "DOMSVGMatrixInternal.h"
#import "DOMSVGMetadataElementInternal.h"
#import "DOMSVGNumberListInternal.h"
-#import "DOMSVGPaint.h"
+#import "DOMSVGPaintInternal.h"
+#import "DOMSVGPathElementInternal.h"
#import "DOMSVGPathSegArcAbsInternal.h"
#import "DOMSVGPathSegArcRelInternal.h"
#import "DOMSVGPathSegClosePathInternal.h"
#endif // XPATH_SUPPORT
namespace WebCore {
- class CSSRule;
- class CSSValue;
- class Event;
- class Node;
class NodeFilter;
- class StyleSheet;
#ifdef SVG_SUPPORT
class FloatPoint;
- (id)_init;
@end
-@interface DOMNode (WebCoreInternal)
-+ (DOMNode *)_nodeWith:(WebCore::Node *)impl;
-- (WebCore::Node *)_node;
-@end
-
// CSS Internal Interfaces
-@interface DOMCSSRule (WebCoreInternal)
-+ (DOMCSSRule *)_CSSRuleWith:(WebCore::CSSRule *)impl;
-- (WebCore::CSSRule *)_CSSRule;
-@end
-
-@interface DOMCSSValue (WebCoreInternal)
-+ (DOMCSSValue *)_CSSValueWith:(WebCore::CSSValue *)impl;
-- (WebCore::CSSValue *)_CSSValue;
-@end
-
@interface DOMRGBColor (WebCoreInternal)
+ (DOMRGBColor *)_RGBColorWithRGB:(WebCore::RGBA32)value;
-@end
-
-// StyleSheets Internal Interfaces
-
-@interface DOMStyleSheet (WebCoreInternal)
-+ (DOMStyleSheet *)_styleSheetWith:(WebCore::StyleSheet *)impl;
-- (WebCore::StyleSheet *)_styleSheet;
-@end
-
-// Events Internal Interfaces
-
-@interface DOMEvent (WebCoreInternal)
-+ (DOMEvent *)_eventWith:(WebCore::Event *)impl;
-- (WebCore::Event *)_event;
+- (WebCore::RGBA32)_RGBColor;
@end
// Traversal Internal Interfaces
@implementation DOMRGBColor (WebCoreInternal)
+- (WebCore::RGBA32)_RGBColor
+{
+ return static_cast<WebCore::RGBA32>(reinterpret_cast<uintptr_t>(_internal));
+}
+
- (id)_initWithRGB:(WebCore::RGBA32)value
{
[super _init];
+++ /dev/null
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DOMSVGPathSeg.h"
-
-namespace WebCore { class SVGPathSeg; }
-
-@interface DOMSVGPathSeg (WebCoreInternal)
-- (WebCore::SVGPathSeg *)_SVGPathSeg;
-+ (DOMSVGPathSeg *)_SVGPathSegWith:(WebCore::SVGPathSeg *)impl;
-@end
my %nativeObjCTypeHash = ("URL" => 1, "Color" => 1);
my %nonPointerTypeHash = ("DOMTimeStamp" => 1, "CompareHow" => 1, "SVGPaintType" => 1);
-# FIXME: need to add the SVG base types to this hash.
-my %baseTypeHash = ("Node" => 1, "NodeList" => 1, "NamedNodeMap" => 1, "DOMImplementation" => 1,
+# FIXME: this should be replaced with a function that recurses up the tree
+# to find the actual base type.
+my %baseTypeHash = ("Object" => 1, "Node" => 1, "NodeList" => 1, "NamedNodeMap" => 1, "DOMImplementation" => 1,
"Event" => 1, "CSSRule" => 1, "CSSValue" => 1, "StyleSheet" => 1, "MediaList" => 1,
"Counter" => 1, "Rect" => 1, "RGBColor" => 1, "XPathExpression" => 1, "XPathResult" => 1,
- "NodeIterator" => 1, "TreeWalker" => 1, "AbstractView" => 1, "SVGPathSeg" => 1);
+ "NodeIterator" => 1, "TreeWalker" => 1, "AbstractView" => 1,
+ "SVGAngle" => 1, "SVGAnimatedAngle" => 1, "SVGAnimatedBoolean" => 1, "SVGAnimatedEnumeration" => 1,
+ "SVGAnimatedInteger" => 1, "SVGAnimatedLength" => 1, "SVGAnimatedLengthList" => 1,
+ "SVGAnimatedNumber" => 1, "SVGAnimatedNumberList" => 1, "SVGAnimatedPoints" => 1,
+ "SVGAnimatedPreserveAspectRatio" => 1, "SVGAnimatedRect" => 1, "SVGAnimatedString" => 1,
+ "SVGAnimatedTransformList" => 1, "SVGLength" => 1, "SVGLengthList" => 1, "SVGMatrix" => 1,
+ "SVGNumber" => 1, "SVGNumberList" => 1, "SVGPathSeg" => 1, "SVGPathSegList" => 1, "SVGPoint" => 1,
+ "SVGPointList" => 1, "SVGPreserveAspectRatio" => 1, "SVGRect" => 1, "SVGRenderingIntent" => 1,
+ "SVGStringList" => 1, "SVGTransform" => 1, "SVGTransformList" => 1, "SVGUnitTypes" => 1);
# Constants
my $buildingForTigerOrEarlier = 1 if $ENV{"MACOSX_DEPLOYMENT_TARGET"} and $ENV{"MACOSX_DEPLOYMENT_TARGET"} <= 10.4;
push(@implContent, "\@end\n");
}
- unless ($dataNode->extendedAttributes->{ObjCNoInternal}) {
+
+ # Generate internal interfaces
+
+ # - Type-Getter
+ # - (WebCore::FooBar *)_fooBar for implementation class FooBar
+ my $typeGetterName = GetObjCTypeGetterName($interfaceName);
+ my $typeGetterSig = "- ($implClassNameWithNamespace *)$typeGetterName";
+
+ my @ivarsToRetain = ();
+ my $ivarsToInit = "";
+ my $typeMakerSigAddition = "";
+ if (@ivars > 0) {
+ my @ivarsInitSig = ();
+ my @ivarsInitCall = ();
+ foreach $attribute (@ivars) {
+ my $name = $attribute->signature->name;
+ my $memberName = "m_" . $name;
+ my $varName = "in" . $name;
+ my $type = GetObjCType($attribute->signature->type);
+ push(@ivarsInitSig, "$name:($type)$varName");
+ push(@ivarsInitCall, "$name:$varName");
+ push(@ivarsToRetain, " $memberName = [$varName retain];\n");
+ }
+ $ivarsToInit = " " . join(" ", @ivarsInitCall);
+ $typeMakerSigAddition = " " . join(" ", @ivarsInitSig);
+ }
+
+ # - Type-Maker
+ my $typeMakerName = GetObjCTypeMaker($interfaceName);
+ my $typeMakerSig = "+ ($className *)$typeMakerName:($implClassNameWithNamespace *)impl" . $typeMakerSigAddition;
+
+ # Generate interface definitions.
+ @intenalHeaderContent = split("\r", $implementationLicenceTemplate);
+ 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, $typeGetterSig . ";\n");
+ push(@intenalHeaderContent, $typeMakerSig . ";\n");
+ push(@intenalHeaderContent, "\@end\n");
+
+ unless ($dataNode->extendedAttributes->{ObjCCustomInternalImpl}) {
# - BEGIN WebCoreInternal category @implementation
push(@implContent, "\n\@implementation $className (WebCoreInternal)\n\n");
- # - Type-Getter
- # - (WebCore::FooBar *)_fooBar for implementation class FooBar
- my $typeGetterName = GetObjCTypeGetterName($interfaceName);
- my $typeGetterSig = "- ($implClassNameWithNamespace *)$typeGetterName";
push(@implContent, "$typeGetterSig\n");
push(@implContent, "{\n");
push(@implContent, " return IMPL;\n");
push(@implContent, "}\n\n");
- my @ivarsToRetain = ();
- my $ivarsToInit = "";
- my $typeMakerSigAddition = "";
- if (@ivars > 0) {
- my @ivarsInitSig = ();
- my @ivarsInitCall = ();
- foreach $attribute (@ivars) {
- my $name = $attribute->signature->name;
- my $memberName = "m_" . $name;
- my $varName = "in" . $name;
- my $type = GetObjCType($attribute->signature->type);
- push(@ivarsInitSig, "$name:($type)$varName");
- push(@ivarsInitCall, "$name:$varName");
- push(@ivarsToRetain, " $memberName = [$varName retain];\n");
- }
- $ivarsToInit = " " . join(" ", @ivarsInitCall);
- $typeMakerSigAddition = " " . join(" ", @ivarsInitSig);
- }
-
- # - Type-Maker
- my $typeMakerName = GetObjCTypeMaker($interfaceName);
- my $typeMakerSig = "+ ($className *)$typeMakerName:($implClassNameWithNamespace *)impl" . $typeMakerSigAddition;
-
if ($parentImplClassName eq "Object") {
# - (id)_initWithFooBar:(WebCore::FooBar *)impl for implementation class FooBar
my $initWithImplName = "_initWith" . $implClassName;
# END WebCoreInternal category
push(@implContent, "\@end\n");
-
- # Generate interface definitions.
- @intenalHeaderContent = split("\r", $implementationLicenceTemplate);
- 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, $typeGetterSig . ";\n");
- push(@intenalHeaderContent, $typeMakerSig . ";\n");
- push(@intenalHeaderContent, "\@end\n");
}
# - End the ifdef conditional if necessary
module css {
// Introduced in DOM Level 2:
- interface [LegacyParent=KJS::DOMCSSRule, GenerateConstructor, ObjCNoInternal] CSSRule {
+ interface [LegacyParent=KJS::DOMCSSRule, GenerateConstructor, ObjCCustomInternalImpl] CSSRule {
// RuleType
const unsigned short UNKNOWN_RULE = 0;
module css {
- interface [LegacyParent=KJS::DOMCSSValue, GenerateConstructor, ObjCNoInternal] CSSValue {
+ interface [LegacyParent=KJS::DOMCSSValue, GenerateConstructor, ObjCCustomInternalImpl] CSSValue {
// UnitTypes
const unsigned short CSS_INHERIT = 0;
module stylesheets {
// Introduced in DOM Level 2:
- interface [ObjCNoInternal] StyleSheet {
+ interface [ObjCCustomInternalImpl] StyleSheet {
readonly attribute DOMString type;
attribute boolean disabled;
readonly attribute Node ownerNode;
return false;
}
+#ifdef SVG_SUPPORT
+bool Event::isSVGZoomEvent() const
+{
+ return false;
+}
+#endif
+
+
bool Event::storesResultAsString() const
{
return false;
virtual bool isWheelEvent() const;
virtual bool isBeforeTextInsertedEvent() const;
virtual bool isOverflowEvent() const;
+#ifdef SVG_SUPPORT
+ virtual bool isSVGZoomEvent() const;
+#endif
bool propagationStopped() const { return m_propagationStopped; }
bool defaultPrevented() const { return m_defaultPrevented; }
module events {
// Introduced in DOM Level 2:
- interface [LegacyParent=KJS::DOMEvent, GenerateConstructor, ObjCNoInternal] Event {
+ interface [LegacyParent=KJS::DOMEvent, GenerateConstructor, ObjCCustomInternalImpl] Event {
// DOM PhaseType
const unsigned short CAPTURING_PHASE = 1;
module core {
- interface [LegacyParent=KJS::DOMNode, GenerateConstructor, ObjCNoInternal] Node {
+ interface [LegacyParent=KJS::DOMNode, GenerateConstructor, ObjCCustomInternalImpl] Node {
// NodeType
const unsigned short ELEMENT_NODE = 1;
const unsigned short ATTRIBUTE_NODE = 2;
/*
Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
- 2004, 2005 Rob Buis <buis@kde.org>
+ Copyright (C) 2004, 2005 Rob Buis <buis@kde.org>
+ Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
This file is part of the KDE project
#ifdef SVG_SUPPORT
#include "SVGZoomEvent.h"
-using namespace WebCore;
+namespace WebCore {
SVGZoomEvent::SVGZoomEvent()
: m_newScale(0.0)
return m_newTranslate;
}
-// vim:ts=4:noet
+bool SVGZoomEvent::isSVGZoomEvent() const
+{
+ return true;
+}
+
+} // namespace WebCore
+
#endif // SVG_SUPPORT
+// vim:ts=4:noet
/*
Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
- 2004, 2005 Rob Buis <buis@kde.org>
+ Copyright (C) 2004, 2005 Rob Buis <buis@kde.org>
+ Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
This file is part of the KDE project
FloatPoint newTranslate() const;
+ virtual bool isSVGZoomEvent() const;
+
private:
float m_newScale;
float m_previousScale;
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module svg{
+module svg {
interface [Conditional=SVG] SVGAnimatedAngle {
readonly attribute SVGAngle baseVal;
/*
+ * 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
module svg {
- interface [Conditional=SVG] SVGCircleElement : SVGElement
- , SVGTests
- , SVGLangSpace
- , SVGExternalResourcesRequired
- , SVGStylable
- , SVGTransformable {
+ interface [Conditional=SVG] SVGCircleElement : SVGElement,
+ SVGTests,
+ SVGLangSpace,
+ SVGExternalResourcesRequired,
+ SVGStylable,
+ SVGTransformable {
readonly attribute SVGAnimatedLength cx;
readonly attribute SVGAnimatedLength cy;
readonly attribute SVGAnimatedLength r;
/*
+ * 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
module svg {
- interface [Conditional=SVG] SVGClipPathElement : SVGElement
- , SVGTests
- , SVGLangSpace
- , SVGExternalResourcesRequired
- , SVGStylable
- , SVGTransformable
- /*, SVGUnitTypes*/ {
+ interface [Conditional=SVG] SVGClipPathElement : SVGElement,
+ SVGTests,
+ SVGLangSpace,
+ SVGExternalResourcesRequired,
+ SVGStylable,
+ SVGTransformable
+ /* SVGUnitTypes */ {
readonly attribute SVGAnimatedEnumeration clipPathUnits;
};
/*
+ * 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
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-module svg
-{
- interface [Conditional=SVG] SVGPathElement :
- SVGElement,
- SVGTests,
- SVGLangSpace,
- SVGExternalResourcesRequired,
- SVGStylable,
- SVGTransformable,
- SVGAnimatedPathData {
- readonly attribute SVGAnimatedNumber pathLength;
- float getTotalLength ( );
- SVGPoint getPointAtLength ( in float distance );
- unsigned long getPathSegAtLength ( in float distance );
- SVGPathSegClosePath createSVGPathSegClosePath ( );
- SVGPathSegMovetoAbs createSVGPathSegMovetoAbs ( in float x, in float y );
- SVGPathSegMovetoRel createSVGPathSegMovetoRel ( in float x, in float y );
- SVGPathSegLinetoAbs createSVGPathSegLinetoAbs ( in float x, in float y );
- SVGPathSegLinetoRel createSVGPathSegLinetoRel ( in float x, in float y );
- SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs ( in float x, in float y, in float x1, in float y1, in float x2, in float y2 );
- SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel ( in float x, in float y, in float x1, in float y1, in float x2, in float y2 );
- SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs ( in float x, in float y, in float x1, in float y1 );
- SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel ( in float x, in float y, in float x1, in float y1 );
- SVGPathSegArcAbs createSVGPathSegArcAbs ( in float x, in float y, in float r1, in float r2, in float angle, in boolean largeArcFlag, in boolean sweepFlag );
- SVGPathSegArcRel createSVGPathSegArcRel ( in float x, in float y, in float r1, in float r2, in float angle, in boolean largeArcFlag, in boolean sweepFlag );
- SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs ( in float x );
- SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel ( in float x );
- SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs ( in float y );
- SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel ( in float y );
- SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs ( in float x, in float y, in float x2, in float y2 );
- SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel ( in float x, in float y, in float x2, in float y2 );
- SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs ( in float x, in float y );
- SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel ( in float x, in float y );
-};
-
-};
+module svg {
+
+ interface [Conditional=SVG] SVGPathElement : SVGElement,
+ SVGTests,
+ SVGLangSpace,
+ SVGExternalResourcesRequired,
+ SVGStylable,
+ SVGTransformable,
+ SVGAnimatedPathData {
+ readonly attribute SVGAnimatedNumber pathLength;
+
+ float getTotalLength();
+ SVGPoint getPointAtLength(in float distance);
+ unsigned long getPathSegAtLength(in float distance);
+
+ SVGPathSegClosePath createSVGPathSegClosePath();
+
+ SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(in float x,
+ in float y);
+ SVGPathSegMovetoRel createSVGPathSegMovetoRel(in float x,
+ in float y);
+
+ SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(in float x,
+ in float y);
+ SVGPathSegLinetoRel createSVGPathSegLinetoRel(in float x,
+ in float y);
+
+ SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(in float x,
+ in float y,
+ in float x1,
+ in float y1,
+ in float x2,
+ in float y2);
+ SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(in float x,
+ in float y,
+ in float x1,
+ in float y1,
+ in float x2,
+ in float y2);
+
+ SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(in float x,
+ in float y,
+ in float x1,
+ in float y1);
+ SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(in float x,
+ in float y,
+ in float x1,
+ in float y1);
+
+ SVGPathSegArcAbs createSVGPathSegArcAbs(in float x,
+ in float y,
+ in float r1,
+ in float r2,
+ in float angle,
+ in boolean largeArcFlag,
+ in boolean sweepFlag);
+ SVGPathSegArcRel createSVGPathSegArcRel(in float x,
+ in float y,
+ in float r1,
+ in float r2,
+ in float angle,
+ in boolean largeArcFlag,
+ in boolean sweepFlag);
+
+ SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(in float x);
+ SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(in float x);
+
+ SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(in float y);
+ SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(in float y);
+
+ SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(in float x,
+ in float y,
+ in float x2,
+ in float y2);
+ SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(in float x,
+ in float y,
+ in float x2,
+ in float y2);
+
+ SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(in float x,
+ in float y);
+ SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(in float x,
+ in float y);
+ };
+
+}
module svg {
- interface [Conditional=SVG, GenerateConstructor, ObjCNoInternal] SVGPathSeg {
+ interface [Conditional=SVG, GenerateConstructor, ObjCCustomInternalImpl] SVGPathSeg {
// Path Segment Types
const unsigned short PATHSEG_UNKNOWN = 0;
const unsigned short PATHSEG_CLOSEPATH = 1;