| 
									
										
										
										
											2024-11-05 08:07:13 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2024, Kostya Farber <kostya.farber@gmail.com> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibWeb/Forward.h>
 | 
					
						
							|  |  |  | #include <LibWeb/HTML/HTMLLegendElement.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Layout/FieldSetBox.h>
 | 
					
						
							| 
									
										
										
										
											2024-11-23 15:47:32 +00:00
										 |  |  | #include <LibWeb/Layout/LegendBox.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Painting/FieldSetPaintable.h>
 | 
					
						
							| 
									
										
										
										
											2024-11-05 08:07:13 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace Web::Layout { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-19 14:47:18 +01:00
										 |  |  | GC_DEFINE_ALLOCATOR(FieldSetBox); | 
					
						
							| 
									
										
										
										
											2024-11-05 08:07:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-20 16:35:12 +01:00
										 |  |  | FieldSetBox::FieldSetBox(DOM::Document& document, DOM::Element& element, GC::Ref<CSS::ComputedProperties> style) | 
					
						
							| 
									
										
										
										
											2024-11-05 08:07:13 +00:00
										 |  |  |     : BlockContainer(document, &element, move(style)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | FieldSetBox::~FieldSetBox() = default; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bool FieldSetBox::has_rendered_legend() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // https://html.spec.whatwg.org/#rendered-legend
 | 
					
						
							| 
									
										
										
										
											2024-11-23 15:47:32 +00:00
										 |  |  |     bool has_rendered_legend = false; | 
					
						
							|  |  |  |     if (has_children()) { | 
					
						
							|  |  |  |         for_each_child_of_type<Box>([&](Box const& child) { | 
					
						
							|  |  |  |             if (child.is_anonymous()) | 
					
						
							|  |  |  |                 return IterationDecision::Continue; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (!child.is_legend_box()) | 
					
						
							|  |  |  |                 return IterationDecision::Break; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             has_rendered_legend = child.computed_values().float_() == CSS::Float::None | 
					
						
							|  |  |  |                 && child.computed_values().position() != CSS::Positioning::Absolute | 
					
						
							|  |  |  |                 && child.computed_values().position() != CSS::Positioning::Fixed; | 
					
						
							|  |  |  |             return IterationDecision::Break; | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2024-11-05 08:07:13 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-11-23 15:47:32 +00:00
										 |  |  |     return has_rendered_legend; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GC::Ptr<Painting::Paintable> FieldSetBox::create_paintable() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     return Painting::FieldSetPaintable::create(*this); | 
					
						
							| 
									
										
										
										
											2024-11-05 08:07:13 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |