mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:02:43 +00:00 
			
		
		
		
	 dc9cb449b1
			
		
	
	
		dc9cb449b1
		
	
	
	
	
		
			
			This removes the awkward hack to recompute the layout transform at paint time, and makes it possible for path sizes to be computed during layout. For example, it's possible to use relative units in SVG shapes (e.g. <rect>), which can be resolved during layout, but would be hard to resolve again during painting.
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2020, Matthew Olsson <mattco@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <AK/Optional.h>
 | |
| #include <LibWeb/Layout/SVGGraphicsBox.h>
 | |
| #include <LibWeb/SVG/SVGGeometryElement.h>
 | |
| 
 | |
| namespace Web::Layout {
 | |
| 
 | |
| class SVGGeometryBox final : public SVGGraphicsBox {
 | |
|     JS_CELL(SVGGeometryBox, SVGGraphicsBox);
 | |
| 
 | |
| public:
 | |
|     SVGGeometryBox(DOM::Document&, SVG::SVGGeometryElement&, NonnullRefPtr<CSS::StyleProperties>);
 | |
|     virtual ~SVGGeometryBox() override = default;
 | |
| 
 | |
|     SVG::SVGGeometryElement& dom_node() { return static_cast<SVG::SVGGeometryElement&>(SVGGraphicsBox::dom_node()); }
 | |
|     SVG::SVGGeometryElement const& dom_node() const { return static_cast<SVG::SVGGeometryElement const&>(SVGGraphicsBox::dom_node()); }
 | |
| 
 | |
|     virtual JS::GCPtr<Painting::Paintable> create_paintable() const override;
 | |
| 
 | |
| private:
 | |
|     virtual bool is_svg_geometry_box() const final { return true; }
 | |
| };
 | |
| 
 | |
| template<>
 | |
| inline bool Node::fast_is<SVGGeometryBox>() const { return is_svg_geometry_box(); }
 | |
| 
 | |
| }
 |