⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 290880 in webkit


Ignore:
Timestamp:
Mar 7, 2022, 3:16:26 AM (5 years ago)
Author:
Nikolas Zimmermann
Message:

[LBSE] Begin layer-aware RenderSVGTransformableContainer implementation
​https://bugs.webkit.org/show_bug.cgi?id=237024

Reviewed by Rob Buis.

Create RenderSVGContainer based on the downstream LBSE implementation.

This patch does not yet enable the creation of RenderSVGContainer
renderers if LBSE is enabled, since the derived classes, such as
RenderSVGHiddenContainer / RenderSVGViewportContainer / ..., are still
missing in LBSE.

Covered by existing tests, no change in behaviour.

  • Sources.txt: Add RenderSVGTransformableContainer.* to build.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • rendering/RenderObject.h:

(WebCore::RenderObject::isSVGTransformableContainer const):

  • rendering/svg/RenderSVGTransformableContainer.cpp: Added.

(WebCore::RenderSVGTransformableContainer::RenderSVGTransformableContainer):
(WebCore::associatedUseElement):
(WebCore::RenderSVGTransformableContainer::additionalContainerTranslation const):
(WebCore::RenderSVGTransformableContainer::calculateViewport):
(WebCore::RenderSVGTransformableContainer::layoutChildren):
(WebCore::RenderSVGTransformableContainer::updateFromStyle):
(WebCore::RenderSVGTransformableContainer::applyTransform const):
(WebCore::RenderSVGTransformableContainer::styleWillChange):
(WebCore::RenderSVGTransformableContainer::graphicsElement const):

  • rendering/svg/RenderSVGTransformableContainer.h: Added.
  • rendering/svg/SVGContainerLayout.cpp:

(WebCore::SVGContainerLayout::transformToRootChanged):

  • svg/SVGElement.cpp: Create renderer for <g> elements in LBSE mode.

(WebCore::createSVGLayerAwareElementSet):

  • svg/SVGGElement.cpp: Ditto.

(WebCore::SVGGElement::createElementRenderer):

Location:
trunk/Source/WebCore
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r290879 r290880  
     12022-03-07  Nikolas Zimmermann  <nzimmermann@igalia.com>
     2
     3        [LBSE] Begin layer-aware RenderSVGTransformableContainer implementation
     4        https://bugs.webkit.org/show_bug.cgi?id=237024
     5
     6        Reviewed by Rob Buis.
     7
     8        Create RenderSVGContainer based on the downstream LBSE implementation.
     9
     10        This patch does not yet enable the creation of RenderSVGContainer
     11        renderers if LBSE is enabled, since the derived classes, such as
     12        RenderSVGHiddenContainer / RenderSVGViewportContainer / ..., are still
     13        missing in LBSE.
     14
     15        Covered by existing tests, no change in behaviour.
     16
     17        * Sources.txt: Add RenderSVGTransformableContainer.* to build.
     18        * WebCore.xcodeproj/project.pbxproj: Ditto.
     19        * rendering/RenderObject.h:
     20        (WebCore::RenderObject::isSVGTransformableContainer const):
     21        * rendering/svg/RenderSVGTransformableContainer.cpp: Added.
     22        (WebCore::RenderSVGTransformableContainer::RenderSVGTransformableContainer):
     23        (WebCore::associatedUseElement):
     24        (WebCore::RenderSVGTransformableContainer::additionalContainerTranslation const):
     25        (WebCore::RenderSVGTransformableContainer::calculateViewport):
     26        (WebCore::RenderSVGTransformableContainer::layoutChildren):
     27        (WebCore::RenderSVGTransformableContainer::updateFromStyle):
     28        (WebCore::RenderSVGTransformableContainer::applyTransform const):
     29        (WebCore::RenderSVGTransformableContainer::styleWillChange):
     30        (WebCore::RenderSVGTransformableContainer::graphicsElement const):
     31        * rendering/svg/RenderSVGTransformableContainer.h: Added.
     32        * rendering/svg/SVGContainerLayout.cpp:
     33        (WebCore::SVGContainerLayout::transformToRootChanged):
     34        * svg/SVGElement.cpp: Create renderer for <g> elements in LBSE mode.
     35        (WebCore::createSVGLayerAwareElementSet):
     36        * svg/SVGGElement.cpp: Ditto.
     37        (WebCore::SVGGElement::createElementRenderer):
     38
    1392022-03-07  Matt Woodrow  <mattwoodrow@apple.com>
    240
  • trunk/Source/WebCore/Sources.txt

    r290816 r290880  
    25122512rendering/svg/RenderSVGText.cpp
    25132513rendering/svg/RenderSVGTextPath.cpp
     2514rendering/svg/RenderSVGTransformableContainer.cpp
    25142515rendering/svg/RenderSVGViewportContainer.cpp
    25152516rendering/svg/SVGBoundingBoxComputation.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r290872 r290880  
    12641264                436708E512D9CA4B00044234 /* LegacyRenderSVGRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708A612D9CA4B00044234 /* LegacyRenderSVGRoot.h */; };
    12651265                436708E512D9DB4B00044234 /* RenderSVGRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708A612D9DB4B00044234 /* RenderSVGRoot.h */; };
     1266                436707E724C9CA4B10044234 /* RenderSVGTransformableContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 436718BB12D9CA4B00042234 /* RenderSVGTransformableContainer.h */; };
    12661267                436708E912D9CA4B00044234 /* LegacyRenderSVGTransformableContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708AA12D9CA4B00044234 /* LegacyRenderSVGTransformableContainer.h */; };
    12671268                436708EB12D9CA4B00044234 /* RenderSVGViewportContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 436708AC12D9CA4B00044234 /* RenderSVGViewportContainer.h */; };
    … …  
    90969097                436708A612D9CA4B00044234 /* LegacyRenderSVGRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyRenderSVGRoot.h; sourceTree = "<group>"; };
    90979098                436708A612D9DB4B00044234 /* RenderSVGRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGRoot.h; sourceTree = "<group>"; };
     9099                436708B812C9CA4C00011434 /* RenderSVGTransformableContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGTransformableContainer.cpp; sourceTree = "<group>"; };
    90989100                436708A912D9CA4B00044234 /* LegacyRenderSVGTransformableContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LegacyRenderSVGTransformableContainer.cpp; sourceTree = "<group>"; };
     9101                436718BB12D9CA4B00042234 /* RenderSVGTransformableContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGTransformableContainer.h; sourceTree = "<group>"; };
    90999102                436708AA12D9CA4B00044234 /* LegacyRenderSVGTransformableContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyRenderSVGTransformableContainer.h; sourceTree = "<group>"; };
    91009103                436708AB12D9CA4B00044234 /* RenderSVGViewportContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGViewportContainer.cpp; sourceTree = "<group>"; };
    … …  
    1914919152                                0854B0081255E4E600B9CDD0 /* RenderSVGTextPath.cpp */,
    1915019153                                0854B0091255E4E600B9CDD0 /* RenderSVGTextPath.h */,
     19154                                436708B812C9CA4C00011434 /* RenderSVGTransformableContainer.cpp */,
     19155                                436718BB12D9CA4B00042234 /* RenderSVGTransformableContainer.h */,
    1915119156                                0854B00B1255E4E600B9CDD0 /* RenderSVGTSpan.h */,
    1915219157                                436708AB12D9CA4B00044234 /* RenderSVGViewportContainer.cpp */,
    … …  
    3700637011                                0854B0191255E4E600B9CDD0 /* RenderSVGText.h in Headers */,
    3700737012                                0854B01B1255E4E600B9CDD0 /* RenderSVGTextPath.h in Headers */,
     37013                                436707E724C9CA4B10044234 /* RenderSVGTransformableContainer.h in Headers */,
    3700837014                                0854B01D1255E4E600B9CDD0 /* RenderSVGTSpan.h in Headers */,
    3700937015                                436708EB12D9CA4B00044234 /* RenderSVGViewportContainer.h in Headers */,
  • trunk/Source/WebCore/rendering/RenderObject.h

    r290867 r290880  
    328328    virtual bool isSVGContainer() const { return false; }
    329329    virtual bool isLegacySVGContainer() const { return false; }
     330    virtual bool isSVGTransformableContainer() const { return false; }
    330331    virtual bool isLegacySVGTransformableContainer() const { return false; }
    331332    virtual bool isSVGViewportContainer() const { return false; }
  • trunk/Source/WebCore/rendering/svg/SVGContainerLayout.cpp

    r290326 r290880  
    4040#include "RenderSVGShape.h"
    4141#include "RenderSVGText.h"
     42#include "RenderSVGTransformableContainer.h"
    4243#include "RenderSVGViewportContainer.h"
    4344#include "SVGRenderSupport.h"
    … …  
    272273{
    273274    while (ancestor) {
    274         // FIXME: [LBSE] Upstream RenderSVGTransformableContainer changes
    275         // if (is<RenderSVGTransformableContainer>(*ancestor))
    276         //     return downcast<const RenderSVGTransformableContainer>(*ancestor).didTransformToRootUpdate();
    277 
    278         // FIXME: [LBSE] Upstream RenderSVGTransformableContainer changes
     275        if (is<RenderSVGTransformableContainer>(*ancestor))
     276            return downcast<const RenderSVGTransformableContainer>(*ancestor).didTransformToRootUpdate();
     277
     278        // FIXME: [LBSE] Upstream RenderSVGViewportContainer changes
    279279        // if (is<RenderSVGViewportContainer>(*ancestor))
    280280        //     return downcast<const RenderSVGViewportContainer>(*ancestor).didTransformToRootUpdate();
  • trunk/Source/WebCore/svg/SVGElement.cpp

    r289892 r290880  
    532532    using namespace SVGNames;
    533533    MemoryCompactLookupOnlyRobinHoodHashSet<AtomString> set;
    534     for (auto& tag : { rectTag.get() })
     534    for (auto& tag : { gTag.get(), rectTag.get() })
    535535        set.add(tag.localName());
    536536    return set;
  • trunk/Source/WebCore/svg/SVGGElement.cpp

    r290326 r290880  
    2626#include "RenderSVGHiddenContainer.h"
    2727#include "RenderSVGResource.h"
     28#include "RenderSVGTransformableContainer.h"
    2829#include "SVGNames.h"
    2930#include <wtf/IsoMallocInlines.h>
    … …  
    5253RenderPtr<RenderElement> SVGGElement::createElementRenderer(RenderStyle&& style, const RenderTreePosition&)
    5354{
     55#if ENABLE(LAYER_BASED_SVG_ENGINE)
     56    // FIXME: [LBSE] Support hidden containers
     57    if (document().settings().layerBasedSVGEngineEnabled())
     58        return createRenderer<RenderSVGTransformableContainer>(*this, WTFMove(style));
     59#endif
     60
    5461    // SVG 1.1 testsuite explicitly uses constructs like <g display="none"><linearGradient>
    5562    // We still have to create renderers for the <g> & <linearGradient> element, though the
Note: See TracChangeset for help on using the changeset viewer.