Skip to content
Permalink
Browse files
[LBSE] Fix/enable zooming & panning - improve interop
https://bugs.webkit.org/show_bug.cgi?id=245507

Reviewed by Rob Buis.

Zooming/panning is entirely broken and unprecdictable if LBSE is activated.
It often shows no immediate effect, or painting artefacts upon scrolling.

Fix panning by implementing RenderSVGRoot::updateFromElement() and using
it from SVGSVGElement::updateCurrentTranslate() to request pan updates.
Forward updateFromElement() calls to the viewportContainer() (the anonymous
RenderSVGViewportContainer wrapping the rest of the SVG render tree) to
update the layer transform.

Enforce 'HasSVGTransform' flag to be set on thew viewportContainer() if
it gained a SVG transform due to full page zoom or panning. It only used
to work if other means caused the flag to be set (e.g. viewBox transform).

This also improves interop with Blink/Gecko, resolving a 15+ year old issue.
SVGs with relative sized width/height cannot be zoomed (stroke-width enlarges,
but document stays at the same size, scrollbars never appear).
RenderSVGRoot::computeReplacedLogicalWidth() now multiples the result by the
effectiveZoom() if the document has no intrinsic width (e.g. % units!).
Likewise computeReplacedLogicalHeight() now also respects the zoom.

The other code paths in computeReplacedLogicalWidh() already implicitely took the
zoom into account, e.g. if isEmbeddedThroughFrameContainingSVGDocument() = true, the
containingBlock() availableLogicalWidth() is returned. These kind of CSS values are
multiplied by the effectiveZoom() by default during Length resolving, whereas SVG elements
don't - see Style::BuilderState::useSVGZoomRulesForLength. This is correct for the whole
SVG subtree, since the effectiveZoom() induced scaling is realized by applying a transform
to the outermost RenderSVGViewportContainer layer, not by scaling individual length values.

This PR fixes all page zoom / panning / .. issues in LBSE.
Covered by various existing tests (see TestExpectations changes).

* LayoutTests/platform/mac-monterey-wk2-lbse-text/TestExpectations:
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/custom/pan-direction-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/absolute-sized-document-no-scrollbars-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/absolute-sized-document-scrollbars-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/relative-sized-document-scrollbars-expected.png: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/relative-sized-document-scrollbars-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-coords-viewattr-01-b-expected.png: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-coords-viewattr-01-b-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-foreign-content-expected.png: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-foreign-content-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-foreignObject-expected.png: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-foreignObject-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-hixie-mixed-008-expected.png: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-hixie-mixed-008-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-hixie-mixed-009-expected.png: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-hixie-mixed-009-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-hixie-rendering-model-004-expected.png: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-hixie-rendering-model-004-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-svg-as-object-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-svg-float-border-padding-expected.png: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-svg-float-border-padding-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-svg-through-object-with-absolute-size-2-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-svg-through-object-with-auto-size-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt: Added.
* LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/zoom/text/zoom-hixie-mixed-008-expected.png: Added.
* Source/WebCore/rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::computeReplacedLogicalWidth const):
(WebCore::RenderSVGRoot::computeReplacedLogicalHeight const):
(WebCore::RenderSVGRoot::updateLayoutSizeIfNeeded):
(WebCore::RenderSVGRoot::updateFromElement):
(WebCore::RenderSVGRoot::updateFromStyle):
(WebCore::RenderSVGRoot::computeViewportSize const):
(WebCore::RenderSVGRoot::overflowClipRect const):
* Source/WebCore/rendering/svg/RenderSVGRoot.h:
* Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:
(WebCore::RenderSVGViewportContainer::updateLayoutSizeIfNeeded):
(WebCore::RenderSVGViewportContainer::needsHasSVGTransformFlag const):
(WebCore::RenderSVGViewportContainer::updateFromStyle):
(WebCore::RenderSVGViewportContainer::updateLayerTransform):
* Source/WebCore/rendering/svg/RenderSVGViewportContainer.h:
* Source/WebCore/svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::updateCurrentTranslate):

Canonical link: https://commits.webkit.org/255727@main
  • Loading branch information
nikolaszimmermann committed Oct 19, 2022
1 parent 146ca51 commit f2385c386d5eaaab21f8a97cf49835827af1f259
Show file tree
Hide file tree
Showing 32 changed files with 750 additions and 57 deletions.
@@ -70,6 +70,7 @@ svg/filters/feConvolveMatrix-negative-orderX.svg
svg/filters/feConvolveMatrix-negative-orderY.svg [ ImageOnlyFailure ]
svg/filters/feConvolveMatrix-non-integral-order.svg [ ImageOnlyFailure ]
svg/filters/feConvolveMatrix-zero-divisor.svg [ ImageOnlyFailure ]
svg/filters/feDiffuseLighting-bottomRightPixel.html [ ImageOnlyFailure ]
svg/filters/feDiffuseLighting-fePointLight-primitiveUnits-objectBoundingBox.svg [ ImageOnlyFailure ]
svg/filters/feDiffuseLighting-feSpotLight-dynamic-update.svg [ ImageOnlyFailure ]
svg/filters/feDiffuseLighting-feSpotLight-primitiveUnits-objectBoundingBox.svg [ ImageOnlyFailure ]
@@ -182,10 +183,11 @@ svg/paint-order/paint-order-stroke-marker.svg [ ImageOnlyFailure ]
svg/paint-order/paint-order-stroke.svg [ ImageOnlyFailure ]

# SVGImage support incomplete
svg/as-image/image-respects-pageScaleFactor-change.html [ ImageOnlyFailure ]
svg/as-image/same-image-two-instances.html [ ImageOnlyFailure ]
svg/as-image/svg-as-image-with-relative-size.html [ ImageOnlyFailure ]
svg/custom/use-image-in-g.svg [ ImageOnlyFailure ]
svg/as-image/image-respects-pageScaleFactor-change.html [ ImageOnlyFailure ]
svg/as-image/same-image-two-instances.html [ ImageOnlyFailure ]
svg/as-image/svg-as-image-with-relative-size.html [ ImageOnlyFailure ]
svg/custom/use-image-in-g.svg [ ImageOnlyFailure ]
svg/zoom/page/zoom-img-preserveAspectRatio-support-1.html [ ImageOnlyFailure ]

# SVG document w/o viewBox + <img> sizing differs to FF/Chrome
svg/as-background-image/background-image-preserveaspectRatio-support.html [ ImageOnlyFailure ]
@@ -218,31 +220,10 @@ svg/zoom/page/zoom-zoom-coords.xhtml [ Failure ]
# General repainting issue
svg/custom/js-repaint-rect-on-path-with-stroke.svg [ Failure ]

# Panning issues
svg/custom/pan-direction.svg [ Failure ]

# General placement issue with foreignObject (HTML renderers at different position than in legacy, due to LayoutUnit transition)
# Affects all tests in svg/dynamic-updates... need to fix the underlying issue first with top priority, to enable these tests too.
svg/dynamic-updates [ Skip ]

# Page zoom issues
svg/zoom/page/absolute-sized-document-no-scrollbars.svg [ Failure ]
svg/zoom/page/absolute-sized-document-scrollbars.svg [ Failure ]
svg/zoom/page/relative-sized-document-scrollbars.svg [ Failure ]
svg/zoom/page/zoom-coords-viewattr-01-b.svg [ Failure ]
svg/zoom/page/zoom-foreign-content.svg [ Failure ]
svg/zoom/page/zoom-foreignObject.svg [ Failure ]
svg/zoom/page/zoom-hixie-mixed-008.xml [ Failure ]
svg/zoom/page/zoom-hixie-mixed-009.xml [ Failure ]
svg/zoom/page/zoom-hixie-rendering-model-004.xhtml [ Failure ]
svg/zoom/page/zoom-replaced-intrinsic-ratio-001.htm [ Failure ]
svg/zoom/page/zoom-svg-as-object.html [ Failure ]
svg/zoom/page/zoom-svg-float-border-padding.xml [ Failure ]
svg/zoom/page/zoom-svg-through-object-with-absolute-size-2.xhtml [ Failure ]
svg/zoom/page/zoom-svg-through-object-with-auto-size.html [ Failure ]
svg/zoom/page/zoom-svg-through-object-with-override-size.html [ Failure ]
svg/zoom/text/zoom-hixie-mixed-008.xml [ ImageOnlyFailure ]

# No gradients
svg/W3C-SVG-1.1-SE/pservers-grad-17-b.svg [ ImageOnlyFailure ]
svg/W3C-SVG-1.1-SE/pservers-grad-20-b.svg [ ImageOnlyFailure ]
@@ -334,6 +315,7 @@ svg/wicd/test-scalable-background-image1.xhtml [ ImageOnlyFai
svg/wicd/test-scalable-background-image2.xhtml [ ImageOnlyFailure ]
svg/zoom/page/zoom-background-image-tiled.html [ ImageOnlyFailure ]
svg/zoom/page/zoom-svg-as-background-with-relative-size.html [ ImageOnlyFailure ]
svg/zoom/page/zoom-svg-through-object-with-override-size.html [ ImageOnlyFailure ]

# No patterns
svg/W3C-SVG-1.1-SE/pservers-pattern-04-f.svg [ ImageOnlyFailure ]
@@ -624,7 +606,6 @@ svg/custom/object-no-size-attributes.xhtml [
svg/custom/object-sizing-no-width-height.xhtml [ Failure ]
svg/custom/object-sizing.xhtml [ Failure ]
svg/wicd/sizing-flakiness.html [ ImageOnlyFailure ]
svg/zoom/page/zoom-img-preserveAspectRatio-support-1.html [ Failure ]

# CSS 'mix-blend-mode' broken
svg/css/mix-blend-mode-background-root.svg [ ImageOnlyFailure ]
@@ -0,0 +1,10 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
RenderSVGRoot {svg} at (0,0) size 800x600
layer at (0,0) size 800x600
RenderSVGViewportContainer at (0,0) size 800x600
layer at (-1000,-1000) size 5000x5000 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
RenderSVGRect {rect} at (-1000,-1000) size 5000x5000 [fill={[type=SOLID] [color=#FF0000]}] [x=-1000.00] [y=-1000.00] [width=5000.00] [height=5000.00]
layer at (50,50) size 20x20
RenderSVGRect {rect} at (50,50) size 20x20 [fill={[type=SOLID] [color=#008000]}] [x=50.00] [y=50.00] [width=20.00] [height=20.00]
@@ -0,0 +1,8 @@
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 576x432
RenderSVGRoot {svg} at (0,0) size 576x432
layer at (0,0) size 576x432
RenderSVGViewportContainer at (0,0) size 576x432
layer at (1,1) size 478x358
RenderSVGRect {rect} at (1,1) size 478x358 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
@@ -0,0 +1,8 @@
layer at (0,0) size 829x622
RenderView at (0,0) size 785x585
layer at (0,0) size 829x622 scrollWidth 576 scrollHeight 432
RenderSVGRoot {svg} at (0,0) size 829.44x622.08
layer at (0,0) size 830x623 backgroundClip at (0,0) size 829.44x622.08 clip at (0,0) size 829.44x622.08
RenderSVGViewportContainer at (0,0) size 829.44x622.08
layer at (1,1) size 478x358
RenderSVGRect {rect} at (1,1) size 478x358 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,8 @@
layer at (0,0) size 1356x1011 backgroundClip at (0,0) size 1356.47x1010.88 clip at (0,0) size 1356.47x1010.88
RenderView at (0,0) size 785x585
layer at (0,0) size 1356x1011 backgroundClip at (0,0) size 1356.47x1010.88 clip at (0,0) size 1356.47x1010.88 scrollWidth 942 scrollHeight 702
RenderSVGRoot {svg} at (0,0) size 1356.47x1010.88
layer at (0,0) size 1357x1011 backgroundClip at (0,0) size 1356.47x1010.88 clip at (0,0) size 1356.47x1010.88
RenderSVGViewportContainer at (0,0) size 1356.47x1010.88
layer at (7.84,5.84) size 771x575
RenderSVGRect {rect} at (7.84,5.84) size 769.31x573.31 [stroke={[type=SOLID] [color=#000000]}] [x=7.85] [y=5.85] [width=769.29] [height=573.30]
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,130 @@
layer at (0,0) size 1130x842
RenderView at (0,0) size 785x585
layer at (0,0) size 1130x842 scrollWidth 942 scrollHeight 702
RenderSVGRoot {svg} at (0,0) size 1130.39x842.39
layer at (0,0) size 1131x843 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGViewportContainer at (0,0) size 1130.39x842.39
layer at (0,-28.02) size 126x212 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,-28.02) size 125.55x210.27
layer at (0,-28.02) size 126x211 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,0) size 125.55x210.27
layer at (10,21.98) size 37x10
RenderSVGText {text} at (10,50) size 38x11 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 38x11
chunk 1 text run 1 at (10.00,30.00) startOffset 0 endOffset 10 width 37.40: "SVG to fit"
layer at (0.50,0.50) size 30x40
RenderSVGTransformableContainer {g} at (0.50,28.52) size 29x39
layer at (0.50,0.50) size 29x39
RenderSVGRect {rect} at (0,0) size 29x39 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [x=0.50] [y=0.50] [width=29.00] [height=39.00]
layer at (5,5) size 21x21
RenderSVGTransformableContainer {g} at (4.50,4.50) size 20x20
layer at (5,5) size 20x20
RenderSVGEllipse {circle} at (0,0) size 20x20 [fill={[type=SOLID] [color=#FFFF00]}] [cx=15.00] [cy=15.00] [r=10.00]
layer at (10.50,10.50) size 4x4
RenderSVGEllipse {circle} at (5.50,5.50) size 3x3 [fill={[type=SOLID] [color=#000000]}] [cx=12.00] [cy=12.00] [r=1.50]
layer at (15.50,10.50) size 4x4
RenderSVGEllipse {circle} at (10.50,5.50) size 3x3 [fill={[type=SOLID] [color=#000000]}] [cx=17.00] [cy=12.00] [r=1.50]
layer at (10,19) size 10x4
RenderSVGPath {path} at (5,14) size 10x4 [stroke={[type=SOLID] [color=#000000] [stroke width=2.00]}] [fill={[type=SOLID] [color=#000000]}] [data="M 10 19 L 15 23 L 20 19"]
layer at (10,101.98) size 41x10
RenderSVGText {text} at (10,130) size 41x11 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 41x11
chunk 1 text run 1 at (10.00,110.00) startOffset 0 endOffset 10 width 40.63: "Viewport 1"
layer at (0.50,0.50) size 50x30
RenderSVGTransformableContainer {g} at (0.50,28.52) size 49x29
layer at (0.50,0.50) size 49x29
RenderSVGRect {rect} at (0,0) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (10,171.98) size 41x10
RenderSVGText {text} at (10,200) size 41x11 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 41x11
chunk 1 text run 1 at (10.00,180.00) startOffset 0 endOffset 10 width 40.63: "Viewport 2"
layer at (0.50,0.50) size 30x60
RenderSVGTransformableContainer {g} at (0.50,28.52) size 29x59
layer at (0.50,0.50) size 29x59
RenderSVGRect {rect} at (0,0) size 29x59 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=29.00] [height=59.00]
layer at (0,-28.02) size 112x68 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,0) size 111.59x67.52
layer at (0,-13.02) size 50x53 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 49.50x52.52
layer at (0.50,0.50) size 50x30
RenderSVGRect {rect} at (0.50,13.52) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (0,0) size 50x31 backgroundClip at (0,13.02) size 30x26.98
RenderSVGViewportContainer {svg} at (0,13.02) size 50x30
layer at (0,-13.02) size 50x53 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 49.50x52.52
layer at (0.50,0.50) size 50x30
RenderSVGRect {rect} at (0.50,13.52) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (0,0) size 50x31 backgroundClip at (0,13.02) size 30x26.98 clip at (0,0) size 48.34x40
RenderSVGViewportContainer {svg} at (0,13.02) size 50x30
layer at (0,-13.02) size 50x53 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 49.50x52.52
layer at (0.50,0.50) size 50x30
RenderSVGRect {rect} at (0.50,13.52) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (0,0) size 50x31 backgroundClip at (0,13.02) size 30x26.98 clip at (0,0) size 30.02x40
RenderSVGViewportContainer {svg} at (0,13.02) size 50x30
layer at (0,-28.02) size 124x88 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,0) size 123.55x87.52
layer at (0,-13.02) size 30x73 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 29.50x72.52
layer at (0.50,0.50) size 30x60
RenderSVGRect {rect} at (0.50,13.52) size 29x59 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=29.00] [height=59.00]
layer at (0,0) size 30x61 backgroundClip at (0,0) size 30x60 clip at (0,0) size 30x60
RenderSVGViewportContainer {svg} at (0,13.02) size 30x60
layer at (0,-13.02) size 30x73 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 29.50x72.52
layer at (0.50,0.50) size 30x60
RenderSVGRect {rect} at (0.50,13.52) size 29x59 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=29.00] [height=59.00]
layer at (0,0) size 30x61 backgroundClip at (0,0) size 30x60 clip at (0,0) size 30x50
RenderSVGViewportContainer {svg} at (0,13.02) size 30x60
layer at (0,-13.02) size 30x73 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 29.50x72.52
layer at (0.50,0.50) size 30x60
RenderSVGRect {rect} at (0.50,13.52) size 29x59 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=29.00] [height=59.00]
layer at (0,0) size 30x61 backgroundClip at (0,0) size 30x60 clip at (0,0) size 30x40
RenderSVGViewportContainer {svg} at (0,13.02) size 30x60
layer at (0,-28.02) size 126x88 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,0) size 125.55x87.52
layer at (0,-13.02) size 30x73 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 29.50x72.52
layer at (0.50,0.50) size 30x60
RenderSVGRect {rect} at (0.50,13.52) size 29x59 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=29.00] [height=59.00]
layer at (0,0) size 30x61 backgroundClip at (0,0) size 30x60 clip at (0,0) size 20x40
RenderSVGViewportContainer {svg} at (0,13.02) size 30x60
layer at (0,-13.02) size 30x73 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 29.50x72.52
layer at (0.50,0.50) size 30x60
RenderSVGRect {rect} at (0.50,13.52) size 29x59 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=29.00] [height=59.00]
layer at (0,0) size 30x61 backgroundClip at (0,0) size 30x60 clip at (5,0) size 20x40
RenderSVGViewportContainer {svg} at (0,13.02) size 30x60
layer at (0,-13.02) size 30x73 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 29.50x72.52
layer at (0.50,0.50) size 30x60
RenderSVGRect {rect} at (0.50,13.52) size 29x59 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=29.00] [height=59.00]
layer at (0,0) size 30x61 backgroundClip at (0,0) size 30x60 clip at (10,0) size 20x40
RenderSVGViewportContainer {svg} at (0,13.02) size 30x60
layer at (0,-28.02) size 114x68 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,0) size 113.59x67.52
layer at (0,-13.02) size 50x53 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 49.50x52.52
layer at (0.50,0.50) size 50x30
RenderSVGRect {rect} at (0.50,13.52) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (0,0) size 50x31 backgroundClip at (0,13.02) size 30x18 clip at (0,0) size 30x18
RenderSVGViewportContainer {svg} at (0,13.02) size 50x30
layer at (0,-13.02) size 50x53 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 49.50x52.52
layer at (0.50,0.50) size 50x30
RenderSVGRect {rect} at (0.50,13.52) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (0,0) size 50x31 backgroundClip at (0,24.02) size 30x15.98 clip at (0,11) size 30x18
RenderSVGViewportContainer {svg} at (0,13.02) size 50x30
layer at (0,-13.02) size 50x53 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGTransformableContainer {g} at (0,15) size 49.50x52.52
layer at (0.50,0.50) size 50x30
RenderSVGRect {rect} at (0.50,13.52) size 49x29 [stroke={[type=SOLID] [color=#0000FF]}] [x=0.50] [y=0.50] [width=49.00] [height=29.00]
layer at (0,0) size 50x31 backgroundClip at (0,35.02) size 30x4.98 clip at (0,22) size 30x18
RenderSVGViewportContainer {svg} at (0,13.02) size 50x30
layer at (10,303.88) size 264x46
RenderSVGText {text} at (10,303) size 265x48 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,0) size 265x47
chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 264.47: "$Revision: 1.6 $"
layer at (1,1) size 478x358
RenderSVGRect {rect} at (1,1) size 478x358 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,21 @@
layer at (0,0) size 1628x1213 backgroundClip at (0,0) size 1627.77x1213.05 clip at (0,0) size 1627.77x1213.05
RenderView at (0,0) size 785x585
layer at (0,0) size 1628x1213 backgroundClip at (0,0) size 1627.77x1213.05 clip at (0,0) size 1627.77x1213.05 scrollWidth 942 scrollHeight 702
RenderSVGRoot {svg} at (0,0) size 1627.77x1213.05
layer at (0,0) size 1628x1214 backgroundClip at (0,0) size 1627.77x1213.05 clip at (0,0) size 1627.77x1213.05
RenderSVGViewportContainer at (0,0) size 1627.77x1213.05
layer at (0,0) size 800x600
RenderSVGForeignObject {foreignObject} at (0,0) size 800x600
RenderText {#text} at (0,0) size 0x0
layer at (0,0) size 300x150
RenderSVGRoot {svg} at (0,0) size 300x150
layer at (0,0) size 300x150
RenderSVGViewportContainer at (0,0) size 300x150
layer at (0,0) size 99x99
RenderSVGRect {rect} at (0,0) size 99x99 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=99.00] [height=99.00]
layer at (0,0) size 800x600
RenderSVGForeignObject {foreignObject} at (0,0) size 800x600
RenderBlock {html} at (0,0) size 800x99
RenderBlock {div} at (0,0) size 99x99 [bgcolor=#FF0000]
layer at (0,0) size 100x100
RenderSVGRect {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,26 @@
layer at (0,0) size 1130x842
RenderView at (0,0) size 785x585
layer at (0,0) size 1130x842 scrollWidth 942 scrollHeight 702
RenderSVGRoot {svg} at (0,0) size 1130.39x842.39
layer at (0,0) size 1131x843 backgroundClip at (0,0) size 1130.39x842.39 clip at (0,0) size 1130.39x842.39
RenderSVGViewportContainer at (0,0) size 1130.39x842.39
layer at (0,0) size 250x200
RenderSVGForeignObject {foreignObject} at (0,0) size 250x200
RenderBlock {xhtml:div} at (0,0) size 250x18
RenderText {#text} at (0,0) size 83x18
text run at (0,0) width 83: "This is a text"
RenderBlock (anonymous) at (0,18) size 250x18
RenderInline {xhtml:a} at (0,0) size 68x18 [color=#0000EE]
RenderText {#text} at (0,0) size 68x18
text run at (0,0) width 68: "and a link."
RenderBR {xhtml:br} at (67,0) size 1x18
RenderBlock {xhtml:div} at (0,36) size 250x18
RenderText {#text} at (0,0) size 56x18
text run at (0,0) width 56: "[HTML]"
layer at (0,0) size 250x200
RenderSVGRect {rect} at (0,0) size 250x200 [stroke={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=250.00] [height=200.00]
layer at (0,0) size 250x200 scrollHeight 204
RenderSVGForeignObject {foreignObject} at (0,0) size 250x200
RenderText {#text} at (0,0) size 0x0
layer at (260,0) size 250x200
RenderSVGRect {rect} at (260,0) size 250x200 [stroke={[type=SOLID] [color=#008000]}] [x=260.00] [y=0.00] [width=250.00] [height=200.00]
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit f2385c3

Please sign in to comment.