diff options
Diffstat (limited to 'WebCore')
-rw-r--r-- | WebCore/Android.derived.mk | 202 | ||||
-rw-r--r-- | WebCore/Android.mk | 242 | ||||
-rw-r--r-- | WebCore/config.h | 2 | ||||
-rw-r--r-- | WebCore/loader/EmptyClients.h | 5 | ||||
-rw-r--r-- | WebCore/platform/graphics/android/GraphicsContextAndroid.cpp | 36 | ||||
-rw-r--r-- | WebCore/platform/graphics/android/PathAndroid.cpp | 84 |
6 files changed, 548 insertions, 23 deletions
diff --git a/WebCore/Android.derived.mk b/WebCore/Android.derived.mk index 843453c..b29cdd2 100644 --- a/WebCore/Android.derived.mk +++ b/WebCore/Android.derived.mk @@ -36,10 +36,7 @@ # # The following files are intentionally not generated # LOCAL_GENERATED_FILES_EXCLUDED := \ -# JSSVGElementWrapperFactory.cpp \ # JSWorkerContextBase.lut.h \ -# SVGElementFactory.cpp \ -# SVGNames.cpp \ # WMLElementFactory.cpp \ # WMLNames.cpp \ # XLinkNames.cpp \ @@ -52,7 +49,6 @@ # If an entry starts with '^', the first directory must match # LOCAL_DIR_WILDCARD_EXCLUDED := \ # ^storage/* \ -# ^svg/* \ # ^workers/* \ # This comment block is read by tools/webkitsync/diff.cpp @@ -68,23 +64,29 @@ LOCAL_SRC_FILES := GEN := $(intermediates)/css/CSSPropertyNames.h $(GEN): SCRIPT := $(LOCAL_PATH)/css/makeprop.pl -$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in +$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/SVGCSSPropertyNames.in @echo "Generating CSSPropertyNames.h <= CSSPropertyNames.in" @mkdir -p $(dir $@) - @cp -f $< $(dir $@) + @cat $< > $(dir $@)/$(notdir $<) +ifeq ($(ENABLE_SVG),true) + @cat $^ > $(@:%.h=%.in) +endif @cp -f $(SCRIPT) $(dir $@) @cd $(dir $@) ; perl ./$(notdir $(SCRIPT)) LOCAL_GENERATED_SOURCES += $(GEN) GEN := $(intermediates)/css/CSSValueKeywords.h $(GEN): SCRIPT := $(LOCAL_PATH)/css/makevalues.pl -$(GEN): PRIVATE_INTERMEDIATES := $(intermediates) -$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in +$(GEN): $(intermediates)/%.h : $(LOCAL_PATH)/%.in $(LOCAL_PATH)/css/SVGCSSValueKeywords.in @echo "Generating CSSValueKeywords.h <= CSSValueKeywords.in" - mkdir -p $(dir $@) - cp -f $(SCRIPT) $(dir $@) - perl -ne 'print lc' $< > $(PRIVATE_INTERMEDIATES)/css/CSSValueKeywords.in - @cd $(PRIVATE_INTERMEDIATES)/css ; perl makevalues.pl + @mkdir -p $(dir $@) + @cp -f $(SCRIPT) $(dir $@) +ifeq ($(ENABLE_SVG),true) + @perl -ne 'print lc' $^ > $(@:%.h=%.in) +else + @perl -ne 'print lc' $< > $(@:%.h=%.in) +endif + @cd $(dir $@); perl makevalues.pl LOCAL_GENERATED_SOURCES += $(GEN) @@ -148,6 +150,9 @@ LOCAL_GENERATED_SOURCES += $(GEN) # user agent style sheets style_sheets := $(LOCAL_PATH)/css/html4.css $(LOCAL_PATH)/css/quirks.css $(LOCAL_PATH)/css/view-source.css +ifeq ($(ENABLE_SVG), true) +style_sheets := $(style_sheets) $(LOCAL_PATH)/css/svg.css +endif GEN := $(intermediates)/css/UserAgentStyleSheets.h make_css_file_arrays := $(LOCAL_PATH)/css/make-css-file-arrays.pl $(GEN): PRIVATE_CUSTOM_TOOL = $< $@ $(basename $@).cpp $(filter %.css,$^) @@ -460,6 +465,153 @@ LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp) # above rules. Specifying this explicitly makes -j2 work. $(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/plugins/%.cpp : $(intermediates)/plugins/%.h +#new section for svg +ifeq ($(ENABLE_SVG), true) +GEN := \ + $(intermediates)/svg/JSSVGAElement.h \ + $(intermediates)/svg/JSSVGAltGlyphElement.h \ + $(intermediates)/svg/JSSVGAngle.h \ + $(intermediates)/svg/JSSVGAnimateColorElement.h \ + $(intermediates)/svg/JSSVGAnimateElement.h \ + $(intermediates)/svg/JSSVGAnimateTransformElement.h \ + $(intermediates)/svg/JSSVGAnimatedAngle.h \ + $(intermediates)/svg/JSSVGAnimatedBoolean.h \ + $(intermediates)/svg/JSSVGAnimatedEnumeration.h \ + $(intermediates)/svg/JSSVGAnimatedInteger.h \ + $(intermediates)/svg/JSSVGAnimatedLength.h \ + $(intermediates)/svg/JSSVGAnimatedLengthList.h \ + $(intermediates)/svg/JSSVGAnimatedNumber.h \ + $(intermediates)/svg/JSSVGAnimatedNumberList.h \ + $(intermediates)/svg/JSSVGAnimatedPreserveAspectRatio.h \ + $(intermediates)/svg/JSSVGAnimatedRect.h \ + $(intermediates)/svg/JSSVGAnimatedString.h \ + $(intermediates)/svg/JSSVGAnimatedTransformList.h \ + $(intermediates)/svg/JSSVGAnimationElement.h \ + $(intermediates)/svg/JSSVGCircleElement.h \ + $(intermediates)/svg/JSSVGClipPathElement.h \ + $(intermediates)/svg/JSSVGColor.h \ + $(intermediates)/svg/JSSVGComponentTransferFunctionElement.h \ + $(intermediates)/svg/JSSVGCursorElement.h \ + $(intermediates)/svg/JSSVGDefinitionSrcElement.h \ + $(intermediates)/svg/JSSVGDefsElement.h \ + $(intermediates)/svg/JSSVGDescElement.h \ + $(intermediates)/svg/JSSVGDocument.h \ + $(intermediates)/svg/JSSVGElement.h \ + $(intermediates)/svg/JSSVGElementInstance.h \ + $(intermediates)/svg/JSSVGElementInstanceList.h \ + $(intermediates)/svg/JSSVGEllipseElement.h \ + $(intermediates)/svg/JSSVGException.h \ + $(intermediates)/svg/JSSVGFEBlendElement.h \ + $(intermediates)/svg/JSSVGFEColorMatrixElement.h \ + $(intermediates)/svg/JSSVGFEComponentTransferElement.h \ + $(intermediates)/svg/JSSVGFECompositeElement.h \ + $(intermediates)/svg/JSSVGFEDiffuseLightingElement.h \ + $(intermediates)/svg/JSSVGFEDisplacementMapElement.h \ + $(intermediates)/svg/JSSVGFEDistantLightElement.h \ + $(intermediates)/svg/JSSVGFEFloodElement.h \ + $(intermediates)/svg/JSSVGFEFuncAElement.h \ + $(intermediates)/svg/JSSVGFEFuncBElement.h \ + $(intermediates)/svg/JSSVGFEFuncGElement.h \ + $(intermediates)/svg/JSSVGFEFuncRElement.h \ + $(intermediates)/svg/JSSVGFEGaussianBlurElement.h \ + $(intermediates)/svg/JSSVGFEImageElement.h \ + $(intermediates)/svg/JSSVGFEMergeElement.h \ + $(intermediates)/svg/JSSVGFEMergeNodeElement.h \ + $(intermediates)/svg/JSSVGFEOffsetElement.h \ + $(intermediates)/svg/JSSVGFEPointLightElement.h \ + $(intermediates)/svg/JSSVGFESpecularLightingElement.h \ + $(intermediates)/svg/JSSVGFESpotLightElement.h \ + $(intermediates)/svg/JSSVGFETileElement.h \ + $(intermediates)/svg/JSSVGFETurbulenceElement.h \ + $(intermediates)/svg/JSSVGFilterElement.h \ + $(intermediates)/svg/JSSVGFontElement.h \ + $(intermediates)/svg/JSSVGFontFaceElement.h \ + $(intermediates)/svg/JSSVGFontFaceFormatElement.h \ + $(intermediates)/svg/JSSVGFontFaceNameElement.h \ + $(intermediates)/svg/JSSVGFontFaceSrcElement.h \ + $(intermediates)/svg/JSSVGFontFaceUriElement.h \ + $(intermediates)/svg/JSSVGForeignObjectElement.h \ + $(intermediates)/svg/JSSVGGElement.h \ + $(intermediates)/svg/JSSVGGlyphElement.h \ + $(intermediates)/svg/JSSVGGradientElement.h \ + $(intermediates)/svg/JSSVGHKernElement.h \ + $(intermediates)/svg/JSSVGImageElement.h \ + $(intermediates)/svg/JSSVGLength.h \ + $(intermediates)/svg/JSSVGLengthList.h \ + $(intermediates)/svg/JSSVGLineElement.h \ + $(intermediates)/svg/JSSVGLinearGradientElement.h \ + $(intermediates)/svg/JSSVGMarkerElement.h \ + $(intermediates)/svg/JSSVGMaskElement.h \ + $(intermediates)/svg/JSSVGMatrix.h \ + $(intermediates)/svg/JSSVGMetadataElement.h \ + $(intermediates)/svg/JSSVGMissingGlyphElement.h \ + $(intermediates)/svg/JSSVGNumber.h \ + $(intermediates)/svg/JSSVGNumberList.h \ + $(intermediates)/svg/JSSVGPaint.h \ + $(intermediates)/svg/JSSVGPathElement.h \ + $(intermediates)/svg/JSSVGPathSeg.h \ + $(intermediates)/svg/JSSVGPathSegArcAbs.h \ + $(intermediates)/svg/JSSVGPathSegArcRel.h \ + $(intermediates)/svg/JSSVGPathSegClosePath.h \ + $(intermediates)/svg/JSSVGPathSegCurvetoCubicAbs.h \ + $(intermediates)/svg/JSSVGPathSegCurvetoCubicRel.h \ + $(intermediates)/svg/JSSVGPathSegCurvetoCubicSmoothAbs.h \ + $(intermediates)/svg/JSSVGPathSegCurvetoCubicSmoothRel.h \ + $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticAbs.h \ + $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticRel.h \ + $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticSmoothAbs.h \ + $(intermediates)/svg/JSSVGPathSegCurvetoQuadraticSmoothRel.h \ + $(intermediates)/svg/JSSVGPathSegLinetoAbs.h \ + $(intermediates)/svg/JSSVGPathSegLinetoHorizontalAbs.h \ + $(intermediates)/svg/JSSVGPathSegLinetoHorizontalRel.h \ + $(intermediates)/svg/JSSVGPathSegLinetoRel.h \ + $(intermediates)/svg/JSSVGPathSegLinetoVerticalAbs.h \ + $(intermediates)/svg/JSSVGPathSegLinetoVerticalRel.h \ + $(intermediates)/svg/JSSVGPathSegList.h \ + $(intermediates)/svg/JSSVGPathSegMovetoAbs.h \ + $(intermediates)/svg/JSSVGPathSegMovetoRel.h \ + $(intermediates)/svg/JSSVGPatternElement.h \ + $(intermediates)/svg/JSSVGPoint.h \ + $(intermediates)/svg/JSSVGPointList.h \ + $(intermediates)/svg/JSSVGPolygonElement.h \ + $(intermediates)/svg/JSSVGPolylineElement.h \ + $(intermediates)/svg/JSSVGPreserveAspectRatio.h \ + $(intermediates)/svg/JSSVGRadialGradientElement.h \ + $(intermediates)/svg/JSSVGRect.h \ + $(intermediates)/svg/JSSVGRectElement.h \ + $(intermediates)/svg/JSSVGRenderingIntent.h \ + $(intermediates)/svg/JSSVGSVGElement.h \ + $(intermediates)/svg/JSSVGScriptElement.h \ + $(intermediates)/svg/JSSVGSetElement.h \ + $(intermediates)/svg/JSSVGStopElement.h \ + $(intermediates)/svg/JSSVGStringList.h \ + $(intermediates)/svg/JSSVGStyleElement.h \ + $(intermediates)/svg/JSSVGSwitchElement.h \ + $(intermediates)/svg/JSSVGSymbolElement.h \ + $(intermediates)/svg/JSSVGTRefElement.h \ + $(intermediates)/svg/JSSVGTSpanElement.h \ + $(intermediates)/svg/JSSVGTextContentElement.h \ + $(intermediates)/svg/JSSVGTextElement.h \ + $(intermediates)/svg/JSSVGTextPathElement.h \ + $(intermediates)/svg/JSSVGTextPositioningElement.h \ + $(intermediates)/svg/JSSVGTitleElement.h \ + $(intermediates)/svg/JSSVGTransform.h \ + $(intermediates)/svg/JSSVGTransformList.h \ + $(intermediates)/svg/JSSVGUnitTypes.h \ + $(intermediates)/svg/JSSVGUseElement.h \ + $(intermediates)/svg/JSSVGViewElement.h \ + $(intermediates)/svg/JSSVGZoomEvent.h +$(GEN): PRIVATE_PATH := $(LOCAL_PATH) +$(GEN): PRIVATE_CUSTOM_TOOL = perl -I$(PRIVATE_PATH)/bindings/scripts $(PRIVATE_PATH)/bindings/scripts/generate-bindings.pl --defines "$(FEATURE_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --include external/webkit/WebCore/dom --include external/webkit/WebCore/html --include external/webkit/WebCore/svg --outputdir $(dir $@) $< +$(GEN): $(intermediates)/svg/JS%.h : $(LOCAL_PATH)/svg/%.idl $(js_binding_scripts) + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp) + +# We also need the .cpp files, which are generated as side effects of the +# above rules. Specifying this explicitly makes -j2 work. +$(patsubst %.h,%.cpp,$(GEN)): $(intermediates)/svg/%.cpp : $(intermediates)/svg/%.h +endif + #new section for xml/DOMParser.idl GEN := \ $(intermediates)/xml/JSDOMParser.h \ @@ -495,6 +647,19 @@ $(GEN): $(LOCAL_PATH)/dom/make_names.pl $(html_tags) $(html_attrs) $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) +# SVG tag and attribute names + +ifeq ($(ENABLE_SVG), true) +GEN:= $(intermediates)/SVGNames.cpp $(intermediates)/SVGElementFactory.cpp $(intermediates)/JSSVGElementWrapperFactory.cpp +$(GEN): PRIVATE_PATH := $(LOCAL_PATH) +$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --tags $(svg_tags) --attrs $(svg_attrs) --factory --wrapperFactory --output $(dir $@) +$(GEN): svg_tags := $(LOCAL_PATH)/svg/svgtags.in +$(GEN): svg_attrs := $(LOCAL_PATH)/svg/svgattrs.in +$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(svg_tags) $(svg_attrs) + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) +endif + # XML attribute names GEN:= $(intermediates)/XMLNames.cpp @@ -505,7 +670,14 @@ $(GEN): $(LOCAL_PATH)/dom/make_names.pl $(xml_attrs) $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) -GEN:= $(intermediates)/ksvgcssproperties.h -$(GEN): - @echo > $@ +# XLink attribute names + +ifeq ($(ENABLE_SVG), true) +GEN:= $(intermediates)/XLinkNames.cpp +$(GEN): PRIVATE_PATH := $(LOCAL_PATH) +$(GEN): PRIVATE_CUSTOM_TOOL = perl -I $(PRIVATE_PATH)/bindings/scripts $< --attrs $(xlink_attrs) --output $(dir $@) +$(GEN): xlink_attrs := $(LOCAL_PATH)/svg/xlinkattrs.in +$(GEN): $(LOCAL_PATH)/dom/make_names.pl $(xlink_attrs) + $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) +endif diff --git a/WebCore/Android.mk b/WebCore/Android.mk index 4b41efa..6bead25 100644 --- a/WebCore/Android.mk +++ b/WebCore/Android.mk @@ -25,10 +25,8 @@ # bindings/js/JSCustomSQL*.cpp \ # bindings/js/JSCustomVersionChangeCallback.cpp \ # bindings/js/JSDatabaseCustom.cpp \ -# bindings/js/JSEventTargetSVGElementInstance.cpp \ # bindings/js/JSHTMLAudioElementConstructor.cpp \ # bindings/js/JSSQL*.cpp \ -# bindings/js/JSSVG*.cpp \ # bindings/js/JSStorageCustom.cpp \ # bindings/js/JSXSLTProcessor*.cpp \ # bindings/js/JSWorker*.cpp \ @@ -39,7 +37,6 @@ # bindings/js/*Wx.cpp \ # bridge/test*.cpp \ # css/CSSGrammar.y \ -# css/SVG*.cpp \ # dom/Worker*.cpp \ # dom/XMLTokenizerQt.cpp \ # editing/BackForwardListChromium.cpp \ @@ -50,7 +47,6 @@ # html/HTMLMediaElement.cpp \ # html/HTMLSourceElement.cpp \ # html/HTMLVideoElement.cpp \ -# loader/CachedResourceClientWalker.cpp \ # loader/CachedXBLDocument.cpp \ # loader/CachedXSLStyleSheet.cpp \ # loader/FTP*.cpp \ @@ -64,12 +60,10 @@ # page/WorkerNavigator.cpp \ # platform/ThreadingNone.cpp \ # platform/graphics/FloatPoint3D.cpp \ -# rendering/RenderSVG*.cpp \ # rendering/RenderThemeChromium*.cpp \ # rendering/RenderThemeSafari.cpp \ # rendering/RenderThemeWin.cpp \ # rendering/RenderVideo.cpp \ -# rendering/SVG*.cpp \ # xml/Access*.cpp \ # xml/NativeXPathNSResolver.cpp \ # xml/XPath* \ @@ -101,7 +95,6 @@ # /qt/* \ # /skia/* \ # ^storage/* \ -# ^svg/* \ # /symbian/* \ # /v8/* \ # /win/* \ @@ -186,6 +179,20 @@ LOCAL_SRC_FILES := \ bindings/js/JSPluginElementFunctions.cpp \ bindings/js/JSQuarantinedObjectWrapper.cpp \ bindings/js/JSRGBColor.cpp \ + +ifeq ($(ENABLE_SVG), true) +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ + bindings/js/JSSVGElementInstanceCustom.cpp \ + bindings/js/JSSVGLengthCustom.cpp \ + bindings/js/JSSVGMatrixCustom.cpp \ + bindings/js/JSSVGPathSegCustom.cpp \ + bindings/js/JSSVGPathSegListCustom.cpp \ + bindings/js/JSSVGPointListCustom.cpp \ + bindings/js/JSSVGTransformListCustom.cpp \ + +endif + +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ bindings/js/JSStyleSheetCustom.cpp \ bindings/js/JSStyleSheetListCustom.cpp \ bindings/js/JSTextCustom.cpp \ @@ -267,6 +274,16 @@ LOCAL_SRC_FILES := \ css/MediaQuery.cpp \ css/MediaQueryEvaluator.cpp \ css/MediaQueryExp.cpp \ + +ifeq ($(ENABLE_SVG), true) +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ + css/SVGCSSComputedStyleDeclaration.cpp \ + css/SVGCSSParser.cpp \ + css/SVGCSSStyleSelector.cpp \ + +endif + +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ css/ShadowValue.cpp \ css/StyleBase.cpp \ css/StyleList.cpp \ @@ -403,7 +420,6 @@ LOCAL_SRC_FILES := \ editing/WrapContentsInDummySpanCommand.cpp \ \ editing/android/EditorAndroid.cpp \ - \ editing/htmlediting.cpp \ editing/markup.cpp \ editing/visible_units.cpp \ @@ -792,6 +808,26 @@ LOCAL_SRC_FILES := \ rendering/RenderPath.cpp \ rendering/RenderReplaced.cpp \ rendering/RenderReplica.cpp \ + +ifeq ($(ENABLE_SVG), true) +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ + rendering/RenderSVGBlock.cpp \ + rendering/RenderSVGContainer.cpp \ + rendering/RenderSVGGradientStop.cpp \ + rendering/RenderSVGHiddenContainer.cpp \ + rendering/RenderSVGImage.cpp \ + rendering/RenderSVGInline.cpp \ + rendering/RenderSVGInlineText.cpp \ + rendering/RenderSVGRoot.cpp \ + rendering/RenderSVGTSpan.cpp \ + rendering/RenderSVGText.cpp \ + rendering/RenderSVGTextPath.cpp \ + rendering/RenderSVGTransformableContainer.cpp \ + rendering/RenderSVGViewportContainer.cpp \ + +endif + +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ rendering/RenderScrollbar.cpp \ rendering/RenderScrollbarPart.cpp \ rendering/RenderScrollbarTheme.cpp \ @@ -812,6 +848,18 @@ LOCAL_SRC_FILES := \ rendering/RenderWidget.cpp \ rendering/RenderWordBreak.cpp \ rendering/RootInlineBox.cpp \ + +ifeq ($(ENABLE_SVG), true) +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ + rendering/SVGCharacterLayoutInfo.cpp \ + rendering/SVGInlineFlowBox.cpp \ + rendering/SVGInlineTextBox.cpp \ + rendering/SVGRenderSupport.cpp \ + rendering/SVGRenderTreeAsText.cpp \ + rendering/SVGRootInlineBox.cpp \ + +endif +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ rendering/TextControlInnerElements.cpp \ rendering/bidi.cpp \ rendering/break_lines.cpp \ @@ -823,8 +871,14 @@ LOCAL_SRC_FILES := \ rendering/style/KeyframeList.cpp \ rendering/style/NinePieceImage.cpp \ rendering/style/RenderStyle.cpp \ + +ifeq ($(ENABLE_SVG), true) +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ rendering/style/SVGRenderStyle.cpp \ rendering/style/SVGRenderStyleDefs.cpp \ + +endif +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ rendering/style/ShadowData.cpp \ rendering/style/StyleBackgroundData.cpp \ rendering/style/StyleBoxData.cpp \ @@ -841,7 +895,179 @@ LOCAL_SRC_FILES := \ rendering/style/StyleVisualData.cpp \ \ storage/DatabaseAuthorizer.cpp \ + +ifeq ($(ENABLE_SVG), true) +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ + svg/ColorDistance.cpp \ + svg/Filter.cpp \ + svg/FilterEffect.cpp \ + svg/SVGAElement.cpp \ + svg/SVGAltGlyphElement.cpp \ + svg/SVGAngle.cpp \ + svg/SVGAnimateColorElement.cpp \ + svg/SVGAnimateElement.cpp \ + svg/SVGAnimateMotionElement.cpp \ + svg/SVGAnimateTransformElement.cpp \ + svg/SVGAnimatedPathData.cpp \ + svg/SVGAnimatedPoints.cpp \ + svg/SVGAnimationElement.cpp \ + svg/SVGCircleElement.cpp \ + svg/SVGClipPathElement.cpp \ + svg/SVGColor.cpp \ + svg/SVGComponentTransferFunctionElement.cpp \ + svg/SVGCursorElement.cpp \ + svg/SVGDefinitionSrcElement.cpp \ + svg/SVGDefsElement.cpp \ + svg/SVGDescElement.cpp \ + svg/SVGDocument.cpp \ + svg/SVGDocumentExtensions.cpp \ + svg/SVGElement.cpp \ + svg/SVGElementInstance.cpp \ + svg/SVGElementInstanceList.cpp \ + svg/SVGEllipseElement.cpp \ + svg/SVGExternalResourcesRequired.cpp \ + svg/SVGFEBlendElement.cpp \ + svg/SVGFEColorMatrixElement.cpp \ + svg/SVGFEComponentTransferElement.cpp \ + svg/SVGFECompositeElement.cpp \ + svg/SVGFEDiffuseLightingElement.cpp \ + svg/SVGFEDisplacementMapElement.cpp \ + svg/SVGFEDistantLightElement.cpp \ + svg/SVGFEFloodElement.cpp \ + svg/SVGFEFuncAElement.cpp \ + svg/SVGFEFuncBElement.cpp \ + svg/SVGFEFuncGElement.cpp \ + svg/SVGFEFuncRElement.cpp \ + svg/SVGFEGaussianBlurElement.cpp \ + svg/SVGFEImageElement.cpp \ + svg/SVGFELightElement.cpp \ + svg/SVGFEMergeElement.cpp \ + svg/SVGFEMergeNodeElement.cpp \ + svg/SVGFEOffsetElement.cpp \ + svg/SVGFEPointLightElement.cpp \ + svg/SVGFESpecularLightingElement.cpp \ + svg/SVGFESpotLightElement.cpp \ + svg/SVGFETileElement.cpp \ + svg/SVGFETurbulenceElement.cpp \ + svg/SVGFilterElement.cpp \ + svg/SVGFilterPrimitiveStandardAttributes.cpp \ + svg/SVGFitToViewBox.cpp \ + svg/SVGFont.cpp \ + svg/SVGFontData.cpp \ + svg/SVGFontElement.cpp \ + svg/SVGFontFaceElement.cpp \ + svg/SVGFontFaceFormatElement.cpp \ + svg/SVGFontFaceNameElement.cpp \ + svg/SVGFontFaceSrcElement.cpp \ + svg/SVGFontFaceUriElement.cpp \ + svg/SVGForeignObjectElement.cpp \ + svg/SVGGElement.cpp \ + svg/SVGGlyphElement.cpp \ + svg/SVGGradientElement.cpp \ + svg/SVGHKernElement.cpp \ + svg/SVGImageElement.cpp \ + svg/SVGImageLoader.cpp \ + svg/SVGLangSpace.cpp \ + svg/SVGLength.cpp \ + svg/SVGLengthList.cpp \ + svg/SVGLineElement.cpp \ + svg/SVGLinearGradientElement.cpp \ + svg/SVGLocatable.cpp \ + svg/SVGMPathElement.cpp \ + svg/SVGMarkerElement.cpp \ + svg/SVGMaskElement.cpp \ + svg/SVGMetadataElement.cpp \ + svg/SVGMissingGlyphElement.cpp \ + svg/SVGNumberList.cpp \ + svg/SVGPaint.cpp \ + svg/SVGParserUtilities.cpp \ + svg/SVGPathElement.cpp \ + svg/SVGPathSegArc.cpp \ + svg/SVGPathSegClosePath.cpp \ + svg/SVGPathSegCurvetoCubic.cpp \ + svg/SVGPathSegCurvetoCubicSmooth.cpp \ + svg/SVGPathSegCurvetoQuadratic.cpp \ + svg/SVGPathSegCurvetoQuadraticSmooth.cpp \ + svg/SVGPathSegLineto.cpp \ + svg/SVGPathSegLinetoHorizontal.cpp \ + svg/SVGPathSegLinetoVertical.cpp \ + svg/SVGPathSegList.cpp \ + svg/SVGPathSegMoveto.cpp \ + svg/SVGPatternElement.cpp \ + svg/SVGPointList.cpp \ + svg/SVGPolyElement.cpp \ + svg/SVGPolygonElement.cpp \ + svg/SVGPolylineElement.cpp \ + svg/SVGPreserveAspectRatio.cpp \ + svg/SVGRadialGradientElement.cpp \ + svg/SVGRectElement.cpp \ + svg/SVGSVGElement.cpp \ + svg/SVGScriptElement.cpp \ + svg/SVGSetElement.cpp \ + svg/SVGStopElement.cpp \ + svg/SVGStringList.cpp \ + svg/SVGStylable.cpp \ + svg/SVGStyleElement.cpp \ + svg/SVGStyledElement.cpp \ + svg/SVGStyledLocatableElement.cpp \ + svg/SVGStyledTransformableElement.cpp \ + svg/SVGSwitchElement.cpp \ + svg/SVGSymbolElement.cpp \ + svg/SVGTRefElement.cpp \ + svg/SVGTSpanElement.cpp \ + svg/SVGTests.cpp \ + svg/SVGTextContentElement.cpp \ + svg/SVGTextElement.cpp \ + svg/SVGTextPathElement.cpp \ + svg/SVGTextPositioningElement.cpp \ + svg/SVGTitleElement.cpp \ + svg/SVGTransform.cpp \ + svg/SVGTransformDistance.cpp \ + svg/SVGTransformList.cpp \ + svg/SVGTransformable.cpp \ + svg/SVGURIReference.cpp \ + svg/SVGUseElement.cpp \ + svg/SVGViewElement.cpp \ + svg/SVGViewSpec.cpp \ + svg/SVGZoomAndPan.cpp \ + svg/SVGZoomEvent.cpp \ + \ + svg/animation/SMILTime.cpp \ + svg/animation/SMILTimeContainer.cpp \ + svg/animation/SVGSMILElement.cpp \ + \ + svg/graphics/SVGImage.cpp \ + svg/graphics/SVGPaintServer.cpp \ + svg/graphics/SVGPaintServerGradient.cpp \ + svg/graphics/SVGPaintServerLinearGradient.cpp \ + svg/graphics/SVGPaintServerPattern.cpp \ + svg/graphics/SVGPaintServerRadialGradient.cpp \ + svg/graphics/SVGPaintServerSolid.cpp \ + svg/graphics/SVGResource.cpp \ + svg/graphics/SVGResourceClipper.cpp \ + svg/graphics/SVGResourceFilter.cpp \ + svg/graphics/SVGResourceMarker.cpp \ + svg/graphics/SVGResourceMasker.cpp \ \ + svg/graphics/filters/SVGFEConvolveMatrix.cpp \ + svg/graphics/filters/SVGFEDiffuseLighting.cpp \ + svg/graphics/filters/SVGFEDisplacementMap.cpp \ + svg/graphics/filters/SVGFEFlood.cpp \ + svg/graphics/filters/SVGFEGaussianBlur.cpp \ + svg/graphics/filters/SVGFEImage.cpp \ + svg/graphics/filters/SVGFEMerge.cpp \ + svg/graphics/filters/SVGFEMorphology.cpp \ + svg/graphics/filters/SVGFEOffset.cpp \ + svg/graphics/filters/SVGFESpecularLighting.cpp \ + svg/graphics/filters/SVGFETile.cpp \ + svg/graphics/filters/SVGFETurbulence.cpp \ + svg/graphics/filters/SVGFilterEffect.cpp \ + svg/graphics/filters/SVGLightSource.cpp \ + \ + svg/graphics/skia/SVGResourceMaskerSkia.cpp \ + +endif +LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \ xml/DOMParser.cpp \ xml/XMLHttpRequest.cpp \ xml/XMLHttpRequestUpload.cpp \ diff --git a/WebCore/config.h b/WebCore/config.h index 1fb55eb..ddb772b 100644 --- a/WebCore/config.h +++ b/WebCore/config.h @@ -84,7 +84,9 @@ #define ENABLE_DATABASE 0 #undef ENABLE_FTPDIR #define ENABLE_FTPDIR 0 +#ifndef ENABLE_SVG #define ENABLE_SVG 0 +#endif #define ENABLE_SVG_EXPERIMENTAL_FEATURES 0 #define ENABLE_XBL 0 #define ENABLE_XPATH 0 diff --git a/WebCore/loader/EmptyClients.h b/WebCore/loader/EmptyClients.h index 1a412f7..5871f9f 100644 --- a/WebCore/loader/EmptyClients.h +++ b/WebCore/loader/EmptyClients.h @@ -246,6 +246,11 @@ public: virtual void updateGlobalHistory() { } virtual void updateGlobalHistoryForRedirectWithoutHistoryItem() { } virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; } +#ifdef ANDROID_HISTORY_CLIENT + virtual void dispatchDidAddHistoryItem(HistoryItem*) const {} + virtual void dispatchDidRemoveHistoryItem(HistoryItem*, int) const {} + virtual void dispatchDidChangeHistoryIndex(BackForwardList*) const {} +#endif virtual void saveViewStateToItem(HistoryItem*) { } virtual bool canCachePage() const { return false; } diff --git a/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp b/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp index 40d98ec..6a92a7f 100644 --- a/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp +++ b/WebCore/platform/graphics/android/GraphicsContextAndroid.cpp @@ -754,6 +754,18 @@ void GraphicsContext::clipOutEllipseInRect(const IntRect& r) GC2Canvas(this)->clipPath(path, SkRegion::kDifference_Op); } +#if ENABLE(SVG) +void GraphicsContext::clipPath(WindRule clipRule) +{ + if (paintingDisabled()) + return; + const SkPath* oldPath = m_data->getPath(); + SkPath path(*oldPath); + path.setFillType(clipRule == RULE_EVENODD ? SkPath::kEvenOdd_FillType : SkPath::kWinding_FillType); + GC2Canvas(this)->clipPath(path); +} +#endif + void GraphicsContext::clipOut(const Path& p) { if (paintingDisabled()) @@ -943,6 +955,30 @@ void GraphicsContext::setLineCap(LineCap cap) } } +#if ENABLE(SVG) +void GraphicsContext::setLineDash(const DashArray& dashes, float dashOffset) +{ + if (paintingDisabled()) + return; + + // FIXME: This is lifted directly off SkiaSupport, lines 49-74 + // so it is not guaranteed to work correctly. + size_t dashLength = dashes.size(); + if (!dashLength) + return; + + size_t count = (dashLength % 2) == 0 ? dashLength : dashLength * 2; + SkScalar* intervals = new SkScalar[count]; + + for (unsigned int i = 0; i < count; i++) + intervals[i] = dashes[i % dashLength]; +// FIXME: setDashPathEffect not defined +// platformContext()->setDashPathEffect(new SkDashPathEffect(intervals, count, dashOffset)); + + delete[] intervals; +} +#endif + void GraphicsContext::setLineJoin(LineJoin join) { switch (join) { diff --git a/WebCore/platform/graphics/android/PathAndroid.cpp b/WebCore/platform/graphics/android/PathAndroid.cpp index af870f5..6687c2b 100644 --- a/WebCore/platform/graphics/android/PathAndroid.cpp +++ b/WebCore/platform/graphics/android/PathAndroid.cpp @@ -266,6 +266,64 @@ void Path::transform(const TransformationMatrix& xform) m_path->transform(xform); } +#if ENABLE(SVG) +String Path::debugString() const +{ + String result; + + SkPath::Iter iter(*m_path, false); + SkPoint pts[4]; + + int numPoints = m_path->getPoints(0, 0); + SkPath::Verb verb; + + do { + verb = iter.next(pts); + switch (verb) { + case SkPath::kMove_Verb: + result += String::format("M%.2f,%.2f ", pts[0].fX, pts[0].fY); + numPoints -= 1; + break; + case SkPath::kLine_Verb: + if (!iter.isCloseLine()) { + result += String::format("L%.2f,%.2f ", pts[1].fX, pts[1].fY); + numPoints -= 1; + } + break; + case SkPath::kQuad_Verb: + result += String::format("Q%.2f,%.2f,%.2f,%.2f ", + pts[1].fX, pts[1].fY, + pts[2].fX, pts[2].fY); + numPoints -= 2; + break; + case SkPath::kCubic_Verb: + result += String::format("C%.2f,%.2f,%.2f,%.2f,%.2f,%.2f ", + pts[1].fX, pts[1].fY, + pts[2].fX, pts[2].fY, + pts[3].fX, pts[3].fY); + numPoints -= 3; + break; + case SkPath::kClose_Verb: + result += "Z "; + break; + case SkPath::kDone_Verb: + break; + } + } while (verb != SkPath::kDone_Verb); + + // If you have a path that ends with an M, Skia will not iterate the + // trailing M. That's nice of it, but Apple's paths output the trailing M + // and we want out layout dumps to look like theirs + if (numPoints) { + ASSERT(numPoints==1); + m_path->getLastPt(pts); + result += String::format("M%.2f,%.2f ", pts[0].fX, pts[0].fY); + } + + return result.stripWhiteSpace(); +} +#endif + /////////////////////////////////////////////////////////////////////////////// // Computes the bounding box for the stroke and style currently selected into @@ -311,4 +369,30 @@ FloatRect Path::strokeBoundingRect(StrokeStyleApplier* applier) return r; } +#if ENABLE(SVG) +bool Path::strokeContains(StrokeStyleApplier* applier, const FloatPoint& point) const +{ +#if 0 + ASSERT(applier); + GraphicsContext* scratch = scratchContext(); + scratch->save(); + + applier->strokeStyle(scratch); + + SkPaint paint; + scratch->platformContext()->setupPaintForStroking(&paint, 0, 0); + SkPath strokePath; + paint.getFillPath(*platformPath(), &strokePath); + bool contains = SkPathContainsPoint(&strokePath, point, + SkPath::kWinding_FillType); + + scratch->restore(); + return contains; +#else + // FIXME: + return false; +#endif +} +#endif + } |