mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:12:43 +00:00 
			
		
		
		
	 7e4793df63
			
		
	
	
		7e4793df63
		
	
	
	
	
		
			
			This gets us a bit closer to the recommended algorithms in CSS 2.2 and CSS Table Module 3. A couple of table heavy websites (e.g. news.ycombinator.com, html5test.com, etc.) now look quite okay. :^)
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			818 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			818 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <AK/Forward.h>
 | |
| #include <LibWeb/Layout/BlockFormattingContext.h>
 | |
| 
 | |
| namespace Web::Layout {
 | |
| 
 | |
| struct ColumnWidth {
 | |
|     float min { 0 };
 | |
|     float max { 0 };
 | |
|     float used { 0 };
 | |
|     bool is_auto { true };
 | |
| };
 | |
| 
 | |
| class TableFormattingContext final : public BlockFormattingContext {
 | |
| public:
 | |
|     explicit TableFormattingContext(FormattingState&, BlockContainer const&, FormattingContext* parent);
 | |
|     ~TableFormattingContext();
 | |
| 
 | |
|     virtual void run(Box const&, LayoutMode) override;
 | |
| 
 | |
| private:
 | |
|     void calculate_column_widths(Box const& row, CSS::Length const& table_width, Vector<ColumnWidth>& column_widths);
 | |
|     void layout_row(Box const& row, Vector<ColumnWidth>& column_widths);
 | |
| };
 | |
| 
 | |
| }
 |