| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2024-10-04 13:19:50 +02:00
										 |  |  |  * Copyright (c) 2022, Andreas Kling <andreas@ladybird.org> | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibWeb/Layout/AvailableSpace.h>
 | 
					
						
							|  |  |  | #include <math.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::Layout { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-23 17:46:10 +00:00
										 |  |  | AvailableSize AvailableSize::make_definite(CSSPixels value) | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2023-08-17 17:11:04 +02:00
										 |  |  |     VERIFY(!value.might_be_saturated()); | 
					
						
							| 
									
										
										
										
											2022-09-27 15:29:17 +02:00
										 |  |  |     return AvailableSize { Type::Definite, value }; | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-27 15:29:17 +02:00
										 |  |  | AvailableSize AvailableSize::make_indefinite() | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2023-08-17 17:26:31 +02:00
										 |  |  |     return AvailableSize { Type::Indefinite, CSSPixels::max() }; | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-27 15:29:17 +02:00
										 |  |  | AvailableSize AvailableSize::make_min_content() | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2022-09-27 15:29:17 +02:00
										 |  |  |     return AvailableSize { Type::MinContent, 0 }; | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-27 15:29:17 +02:00
										 |  |  | AvailableSize AvailableSize::make_max_content() | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2023-08-17 17:26:31 +02:00
										 |  |  |     return AvailableSize { Type::MaxContent, CSSPixels::max() }; | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-20 23:17:38 +13:00
										 |  |  | String AvailableSize::to_string() const | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     switch (m_type) { | 
					
						
							|  |  |  |     case Type::Definite: | 
					
						
							| 
									
										
										
										
											2023-11-20 23:17:38 +13:00
										 |  |  |         return MUST(String::formatted("definite({})", m_value)); | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  |     case Type::Indefinite: | 
					
						
							| 
									
										
										
										
											2023-11-20 23:17:38 +13:00
										 |  |  |         return "indefinite"_string; | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  |     case Type::MinContent: | 
					
						
							| 
									
										
										
										
											2023-11-20 23:17:38 +13:00
										 |  |  |         return "min-content"_string; | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  |     case Type::MaxContent: | 
					
						
							| 
									
										
										
										
											2023-11-20 23:17:38 +13:00
										 |  |  |         return "max-content"_string; | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  |     } | 
					
						
							|  |  |  |     VERIFY_NOT_REACHED(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-20 23:17:38 +13:00
										 |  |  | String AvailableSpace::to_string() const | 
					
						
							| 
									
										
										
										
											2022-09-27 15:29:17 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2023-11-20 23:17:38 +13:00
										 |  |  |     return MUST(String::formatted("{} x {}", width, height)); | 
					
						
							| 
									
										
										
										
											2022-09-27 15:29:17 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-23 17:46:10 +00:00
										 |  |  | AvailableSize::AvailableSize(Type type, CSSPixels value) | 
					
						
							| 
									
										
										
										
											2022-09-25 19:12:09 +02:00
										 |  |  |     : m_type(type) | 
					
						
							|  |  |  |     , m_value(value) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |