diff --git a/Libraries/LibWeb/Layout/Node.h b/Libraries/LibWeb/Layout/Node.h index 984bbb2975d..7eb08f25da3 100644 --- a/Libraries/LibWeb/Layout/Node.h +++ b/Libraries/LibWeb/Layout/Node.h @@ -101,6 +101,7 @@ public: virtual bool is_svg_geometry_box() const { return false; } virtual bool is_svg_mask_box() const { return false; } virtual bool is_svg_svg_box() const { return false; } + virtual bool is_svg_graphics_box() const { return false; } virtual bool is_label() const { return false; } virtual bool is_replaced_box() const { return false; } virtual bool is_list_item_box() const { return false; } @@ -108,6 +109,7 @@ public: virtual bool is_fieldset_box() const { return false; } virtual bool is_legend_box() const { return false; } virtual bool is_table_wrapper() const { return false; } + virtual bool is_node_with_style() const { return false; } virtual bool is_node_with_style_and_box_model_metrics() const { return false; } template @@ -245,6 +247,8 @@ protected: NodeWithStyle(DOM::Document&, DOM::Node*, NonnullOwnPtr); private: + virtual bool is_node_with_style() const final { return true; } + void reset_table_box_computed_values_used_by_wrapper_to_init_values(); void propagate_style_to_anonymous_wrappers(); @@ -252,6 +256,9 @@ private: RefPtr m_list_style_image; }; +template<> +inline bool Node::fast_is() const { return is_node_with_style(); } + class NodeWithStyleAndBoxModelMetrics : public NodeWithStyle { GC_CELL(NodeWithStyleAndBoxModelMetrics, NodeWithStyle); diff --git a/Libraries/LibWeb/Layout/SVGGraphicsBox.h b/Libraries/LibWeb/Layout/SVGGraphicsBox.h index a915fce6672..05bf851d41e 100644 --- a/Libraries/LibWeb/Layout/SVGGraphicsBox.h +++ b/Libraries/LibWeb/Layout/SVGGraphicsBox.h @@ -23,6 +23,12 @@ public: SVG::SVGGraphicsElement const& dom_node() const { return as(SVGBox::dom_node()); } virtual GC::Ptr create_paintable() const override; + +private: + virtual bool is_svg_graphics_box() const override { return true; } }; +template<> +inline bool Node::fast_is() const { return is_svg_graphics_box(); } + } diff --git a/Libraries/LibWeb/Painting/Paintable.h b/Libraries/LibWeb/Painting/Paintable.h index a47211cb64d..90198f8d33b 100644 --- a/Libraries/LibWeb/Painting/Paintable.h +++ b/Libraries/LibWeb/Painting/Paintable.h @@ -125,6 +125,7 @@ public: [[nodiscard]] virtual bool is_paintable_box() const { return false; } [[nodiscard]] virtual bool is_paintable_with_lines() const { return false; } [[nodiscard]] virtual bool is_svg_paintable() const { return false; } + [[nodiscard]] virtual bool is_svg_svg_paintable() const { return false; } [[nodiscard]] virtual bool is_text_paintable() const { return false; } DOM::Document const& document() const; diff --git a/Libraries/LibWeb/Painting/SVGSVGPaintable.h b/Libraries/LibWeb/Painting/SVGSVGPaintable.h index c5c3ceee70e..c21a3ac7eff 100644 --- a/Libraries/LibWeb/Painting/SVGSVGPaintable.h +++ b/Libraries/LibWeb/Painting/SVGSVGPaintable.h @@ -28,6 +28,12 @@ public: protected: SVGSVGPaintable(Layout::SVGSVGBox const&); + +private: + virtual bool is_svg_svg_paintable() const final { return true; } }; +template<> +inline bool Paintable::fast_is() const { return is_svg_svg_paintable(); } + }