haikuwebkit/LayoutTests/svg/text/text-viewbox-rescale-expect...

24 lines
1.3 KiB
Plaintext
Raw Permalink Normal View History

Recompute font metrics on scale changes https://bugs.webkit.org/show_bug.cgi?id=75091 Patch by Philip Rogers <pdr@google.com> on 2012-02-23 Reviewed by Nikolas Zimmermann. Source/WebCore: SVG text metrics depend on the transform from renderer to the svg root which requires that we propagate transform changes down to text. This change adds a boolean for tracking transform changes to SVGViewportContainers and SVGTransformableContainers, and updates RenderSVGText::layout() to recalculate text metrics if the transform of an ancestor has changed. Tests: platform/mac/svg/text/text-rescale.html platform/mac/svg/text/text-viewbox-rescale.html svg/text/text-rescale.html svg/text/text-viewbox-rescale.html * rendering/RenderObject.h: (WebCore::RenderObject::isSVGTransformableContainer): (WebCore::RenderObject::isSVGViewportContainer): * rendering/svg/RenderSVGContainer.h: (WebCore::RenderSVGContainer::didTransformToRootUpdate): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::computeNewScaledFontForStyle): * rendering/svg/RenderSVGText.cpp: (WebCore::RenderSVGText::RenderSVGText): (WebCore::RenderSVGText::layout): * rendering/svg/RenderSVGText.h: (WebCore::RenderSVGText::setNeedsTextMetricsUpdate): (RenderSVGText): * rendering/svg/RenderSVGTransformableContainer.cpp: (WebCore::RenderSVGTransformableContainer::RenderSVGTransformableContainer): (WebCore::RenderSVGTransformableContainer::calculateLocalTransform): * rendering/svg/RenderSVGTransformableContainer.h: (WebCore::RenderSVGTransformableContainer::isSVGTransformableContainer): (WebCore::RenderSVGTransformableContainer::didTransformToRootUpdate): (RenderSVGTransformableContainer): * rendering/svg/RenderSVGViewportContainer.cpp: (WebCore::RenderSVGViewportContainer::RenderSVGViewportContainer): (WebCore::RenderSVGViewportContainer::calcViewport): * rendering/svg/RenderSVGViewportContainer.h: (WebCore::RenderSVGViewportContainer::didTransformToRootUpdate): (RenderSVGViewportContainer): * rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::transformToRootChanged): (WebCore): (WebCore::SVGRenderSupport::layoutChildren): * rendering/svg/SVGRenderSupport.h: (SVGRenderSupport): LayoutTests: * platform/chromium-linux/svg/text/text-rescale-expected.png: Added. * platform/chromium-linux/svg/text/text-rescale-expected.txt: Added. * platform/chromium-linux/svg/text/text-viewbox-rescale-expected.png: Added. * platform/chromium-linux/svg/text/text-viewbox-rescale-expected.txt: Added. * platform/chromium/test_expectations.txt: * platform/mac/svg/text/text-rescale-expected.png: Added. * platform/mac/svg/text/text-rescale-expected.txt: Added. * platform/mac/svg/text/text-rescale.html: Added. * platform/mac/svg/text/text-viewbox-rescale-expected.png: Added. * platform/mac/svg/text/text-viewbox-rescale-expected.txt: Added. * platform/mac/svg/text/text-viewbox-rescale.html: Added. * svg/text/text-rescale-expected.png: Added. * svg/text/text-rescale-expected.txt: Added. * svg/text/text-rescale.html: Added. * svg/text/text-viewbox-rescale-expected.png: Added. * svg/text/text-viewbox-rescale-expected.txt: Added. * svg/text/text-viewbox-rescale.html: Added. Canonical link: https://commits.webkit.org/96477@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@108699 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-02-24 00:52:35 +00:00
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x584
layer at (0,0) size 200x200
[svg] Remove unnecessary rounding in SVGRootInlineBox::layoutRootBox https://bugs.webkit.org/show_bug.cgi?id=107771 Source/WebCore: Reviewed by Levi Weintraub. SVGRootInlineBox::layoutRootBox rounds the location and size of the container to the nearest enclosing integer values. Now that layout uses subpixel positioning this is no longer needed and results in undesirable rounding. For high-dpi screens in particular this is especially noticeable as it is rounded to "pixels" which can map to two our more device pixels. Test: svg/text/text-rect-precision.html * rendering/svg/SVGRootInlineBox.cpp: (WebCore::SVGRootInlineBox::layoutRootBox): Change from enclosingIntRect to enclosingLayoutRect to align to the closest containing LayoutRect now that layout is done using subpixel precision. LayoutTests: Reviewed by Levi Weintraub. Add test for svg text subpixel measurement and update expectations as needed. * css3/zoom-coords.xhtml: * platform/chromium/TestExpectations: * platform/mac/TestExpectations: * svg/W3C-SVG-1.1-SE/color-prop-05-t-expected.txt: * svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.txt: * svg/W3C-SVG-1.1-SE/pservers-pattern-03-f-expected.txt: * svg/W3C-SVG-1.1-SE/struct-use-14-f-expected.txt: * svg/W3C-SVG-1.1-SE/svgdom-over-01-f-expected.txt: * svg/W3C-SVG-1.1-SE/types-dom-05-b-expected.txt: * svg/custom/glyph-setting-d-attribute-expected.txt: * svg/foreignObject/text-tref-02-b-expected.txt: * svg/hixie/viewbox/002-expected.txt: * svg/hixie/viewbox/003-expected.txt: * svg/text/text-rect-precision.html: Added. * svg/text/text-viewbox-rescale-expected.txt: * svg/zoom/page/zoom-zoom-coords-expected.txt: * svg/zoom/page/zoom-zoom-coords.xhtml: Canonical link: https://commits.webkit.org/126049@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@140728 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-01-24 22:48:50 +00:00
RenderSVGRoot {svg} at (59,40) size 101x126
RenderSVGViewportContainer {svg} at (59,40) size 101x26
Recompute font metrics on scale changes https://bugs.webkit.org/show_bug.cgi?id=75091 Patch by Philip Rogers <pdr@google.com> on 2012-02-23 Reviewed by Nikolas Zimmermann. Source/WebCore: SVG text metrics depend on the transform from renderer to the svg root which requires that we propagate transform changes down to text. This change adds a boolean for tracking transform changes to SVGViewportContainers and SVGTransformableContainers, and updates RenderSVGText::layout() to recalculate text metrics if the transform of an ancestor has changed. Tests: platform/mac/svg/text/text-rescale.html platform/mac/svg/text/text-viewbox-rescale.html svg/text/text-rescale.html svg/text/text-viewbox-rescale.html * rendering/RenderObject.h: (WebCore::RenderObject::isSVGTransformableContainer): (WebCore::RenderObject::isSVGViewportContainer): * rendering/svg/RenderSVGContainer.h: (WebCore::RenderSVGContainer::didTransformToRootUpdate): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::computeNewScaledFontForStyle): * rendering/svg/RenderSVGText.cpp: (WebCore::RenderSVGText::RenderSVGText): (WebCore::RenderSVGText::layout): * rendering/svg/RenderSVGText.h: (WebCore::RenderSVGText::setNeedsTextMetricsUpdate): (RenderSVGText): * rendering/svg/RenderSVGTransformableContainer.cpp: (WebCore::RenderSVGTransformableContainer::RenderSVGTransformableContainer): (WebCore::RenderSVGTransformableContainer::calculateLocalTransform): * rendering/svg/RenderSVGTransformableContainer.h: (WebCore::RenderSVGTransformableContainer::isSVGTransformableContainer): (WebCore::RenderSVGTransformableContainer::didTransformToRootUpdate): (RenderSVGTransformableContainer): * rendering/svg/RenderSVGViewportContainer.cpp: (WebCore::RenderSVGViewportContainer::RenderSVGViewportContainer): (WebCore::RenderSVGViewportContainer::calcViewport): * rendering/svg/RenderSVGViewportContainer.h: (WebCore::RenderSVGViewportContainer::didTransformToRootUpdate): (RenderSVGViewportContainer): * rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::transformToRootChanged): (WebCore): (WebCore::SVGRenderSupport::layoutChildren): * rendering/svg/SVGRenderSupport.h: (SVGRenderSupport): LayoutTests: * platform/chromium-linux/svg/text/text-rescale-expected.png: Added. * platform/chromium-linux/svg/text/text-rescale-expected.txt: Added. * platform/chromium-linux/svg/text/text-viewbox-rescale-expected.png: Added. * platform/chromium-linux/svg/text/text-viewbox-rescale-expected.txt: Added. * platform/chromium/test_expectations.txt: * platform/mac/svg/text/text-rescale-expected.png: Added. * platform/mac/svg/text/text-rescale-expected.txt: Added. * platform/mac/svg/text/text-rescale.html: Added. * platform/mac/svg/text/text-viewbox-rescale-expected.png: Added. * platform/mac/svg/text/text-viewbox-rescale-expected.txt: Added. * platform/mac/svg/text/text-viewbox-rescale.html: Added. * svg/text/text-rescale-expected.png: Added. * svg/text/text-rescale-expected.txt: Added. * svg/text/text-rescale.html: Added. * svg/text/text-viewbox-rescale-expected.png: Added. * svg/text/text-viewbox-rescale-expected.txt: Added. * svg/text/text-viewbox-rescale.html: Added. Canonical link: https://commits.webkit.org/96477@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@108699 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-02-24 00:52:35 +00:00
RenderSVGText {text} at (0,0) size 1x1 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 1x1
chunk 1 text run 1 at (0.30,0.30) startOffset 0 endOffset 5 width 0.26: "PASS "
RenderSVGTSpan {tspan} at (0,0) size 1x1
RenderSVGInlineText {#text} at (0,0) size 1x1
chunk 1 text run 1 at (0.56,0.30) startOffset 0 endOffset 4 width 0.24: "PASS"
RenderSVGInlineText {#text} at (0,0) size 0x0
[svg] Remove unnecessary rounding in SVGRootInlineBox::layoutRootBox https://bugs.webkit.org/show_bug.cgi?id=107771 Source/WebCore: Reviewed by Levi Weintraub. SVGRootInlineBox::layoutRootBox rounds the location and size of the container to the nearest enclosing integer values. Now that layout uses subpixel positioning this is no longer needed and results in undesirable rounding. For high-dpi screens in particular this is especially noticeable as it is rounded to "pixels" which can map to two our more device pixels. Test: svg/text/text-rect-precision.html * rendering/svg/SVGRootInlineBox.cpp: (WebCore::SVGRootInlineBox::layoutRootBox): Change from enclosingIntRect to enclosingLayoutRect to align to the closest containing LayoutRect now that layout is done using subpixel precision. LayoutTests: Reviewed by Levi Weintraub. Add test for svg text subpixel measurement and update expectations as needed. * css3/zoom-coords.xhtml: * platform/chromium/TestExpectations: * platform/mac/TestExpectations: * svg/W3C-SVG-1.1-SE/color-prop-05-t-expected.txt: * svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.txt: * svg/W3C-SVG-1.1-SE/pservers-pattern-03-f-expected.txt: * svg/W3C-SVG-1.1-SE/struct-use-14-f-expected.txt: * svg/W3C-SVG-1.1-SE/svgdom-over-01-f-expected.txt: * svg/W3C-SVG-1.1-SE/types-dom-05-b-expected.txt: * svg/custom/glyph-setting-d-attribute-expected.txt: * svg/foreignObject/text-tref-02-b-expected.txt: * svg/hixie/viewbox/002-expected.txt: * svg/hixie/viewbox/003-expected.txt: * svg/text/text-rect-precision.html: Added. * svg/text/text-viewbox-rescale-expected.txt: * svg/zoom/page/zoom-zoom-coords-expected.txt: * svg/zoom/page/zoom-zoom-coords.xhtml: Canonical link: https://commits.webkit.org/126049@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@140728 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-01-24 22:48:50 +00:00
RenderSVGViewportContainer {svg} at (59,140) size 101x26
Recompute font metrics on scale changes https://bugs.webkit.org/show_bug.cgi?id=75091 Patch by Philip Rogers <pdr@google.com> on 2012-02-23 Reviewed by Nikolas Zimmermann. Source/WebCore: SVG text metrics depend on the transform from renderer to the svg root which requires that we propagate transform changes down to text. This change adds a boolean for tracking transform changes to SVGViewportContainers and SVGTransformableContainers, and updates RenderSVGText::layout() to recalculate text metrics if the transform of an ancestor has changed. Tests: platform/mac/svg/text/text-rescale.html platform/mac/svg/text/text-viewbox-rescale.html svg/text/text-rescale.html svg/text/text-viewbox-rescale.html * rendering/RenderObject.h: (WebCore::RenderObject::isSVGTransformableContainer): (WebCore::RenderObject::isSVGViewportContainer): * rendering/svg/RenderSVGContainer.h: (WebCore::RenderSVGContainer::didTransformToRootUpdate): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::computeNewScaledFontForStyle): * rendering/svg/RenderSVGText.cpp: (WebCore::RenderSVGText::RenderSVGText): (WebCore::RenderSVGText::layout): * rendering/svg/RenderSVGText.h: (WebCore::RenderSVGText::setNeedsTextMetricsUpdate): (RenderSVGText): * rendering/svg/RenderSVGTransformableContainer.cpp: (WebCore::RenderSVGTransformableContainer::RenderSVGTransformableContainer): (WebCore::RenderSVGTransformableContainer::calculateLocalTransform): * rendering/svg/RenderSVGTransformableContainer.h: (WebCore::RenderSVGTransformableContainer::isSVGTransformableContainer): (WebCore::RenderSVGTransformableContainer::didTransformToRootUpdate): (RenderSVGTransformableContainer): * rendering/svg/RenderSVGViewportContainer.cpp: (WebCore::RenderSVGViewportContainer::RenderSVGViewportContainer): (WebCore::RenderSVGViewportContainer::calcViewport): * rendering/svg/RenderSVGViewportContainer.h: (WebCore::RenderSVGViewportContainer::didTransformToRootUpdate): (RenderSVGViewportContainer): * rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::transformToRootChanged): (WebCore): (WebCore::SVGRenderSupport::layoutChildren): * rendering/svg/SVGRenderSupport.h: (SVGRenderSupport): LayoutTests: * platform/chromium-linux/svg/text/text-rescale-expected.png: Added. * platform/chromium-linux/svg/text/text-rescale-expected.txt: Added. * platform/chromium-linux/svg/text/text-viewbox-rescale-expected.png: Added. * platform/chromium-linux/svg/text/text-viewbox-rescale-expected.txt: Added. * platform/chromium/test_expectations.txt: * platform/mac/svg/text/text-rescale-expected.png: Added. * platform/mac/svg/text/text-rescale-expected.txt: Added. * platform/mac/svg/text/text-rescale.html: Added. * platform/mac/svg/text/text-viewbox-rescale-expected.png: Added. * platform/mac/svg/text/text-viewbox-rescale-expected.txt: Added. * platform/mac/svg/text/text-viewbox-rescale.html: Added. * svg/text/text-rescale-expected.png: Added. * svg/text/text-rescale-expected.txt: Added. * svg/text/text-rescale.html: Added. * svg/text/text-viewbox-rescale-expected.png: Added. * svg/text/text-viewbox-rescale-expected.txt: Added. * svg/text/text-viewbox-rescale.html: Added. Canonical link: https://commits.webkit.org/96477@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@108699 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-02-24 00:52:35 +00:00
RenderSVGText {text} at (0,0) size 1x1 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 1x1
chunk 1 text run 1 at (0.30,0.30) startOffset 0 endOffset 5 width 0.26: "PASS "
RenderSVGTSpan {tspan} at (0,0) size 1x1
RenderSVGInlineText {#text} at (0,0) size 1x1
chunk 1 text run 1 at (0.56,0.30) startOffset 0 endOffset 4 width 0.24: "PASS"
RenderSVGInlineText {#text} at (0,0) size 0x0