mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-03 06:40:05 +00:00
Everywhere: Hoist the Libraries folder to the top-level
This commit is contained in:
parent
950e819ee7
commit
93712b24bf
Notes:
github-actions[bot]
2024-11-10 11:51:52 +00:00
Author: https://github.com/trflynn89
Commit: 93712b24bf
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2256
Reviewed-by: https://github.com/sideshowbarker
4547 changed files with 104 additions and 113 deletions
72
Libraries/LibWeb/Layout/LineBuilder.h
Normal file
72
Libraries/LibWeb/Layout/LineBuilder.h
Normal file
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Andreas Kling <andreas@ladybird.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/Layout/InlineFormattingContext.h>
|
||||
|
||||
namespace Web::Layout {
|
||||
|
||||
class LineBuilder {
|
||||
AK_MAKE_NONCOPYABLE(LineBuilder);
|
||||
AK_MAKE_NONMOVABLE(LineBuilder);
|
||||
|
||||
public:
|
||||
LineBuilder(InlineFormattingContext&, LayoutState&, LayoutState::UsedValues& containing_block_used_values, CSS::Direction, CSS::WritingMode);
|
||||
~LineBuilder();
|
||||
|
||||
enum class ForcedBreak {
|
||||
No,
|
||||
Yes,
|
||||
};
|
||||
|
||||
void break_line(ForcedBreak, Optional<CSSPixels> next_item_width = {});
|
||||
void append_box(Box const&, CSSPixels leading_size, CSSPixels trailing_size, CSSPixels leading_margin, CSSPixels trailing_margin);
|
||||
void append_text_chunk(TextNode const&, size_t offset_in_node, size_t length_in_node, CSSPixels leading_size, CSSPixels trailing_size, CSSPixels leading_margin, CSSPixels trailing_margin, CSSPixels content_width, CSSPixels content_height, RefPtr<Gfx::GlyphRun>);
|
||||
|
||||
// Returns whether a line break occurred.
|
||||
bool break_if_needed(CSSPixels next_item_width)
|
||||
{
|
||||
if (should_break(next_item_width)) {
|
||||
break_line(LineBuilder::ForcedBreak::No, next_item_width);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void update_last_line();
|
||||
|
||||
void remove_last_line_if_empty();
|
||||
|
||||
CSSPixels current_block_offset() const { return m_current_block_offset; }
|
||||
void set_current_block_offset(CSSPixels block_offset) { m_current_block_offset = block_offset; }
|
||||
|
||||
void recalculate_available_space();
|
||||
CSSPixels y_for_float_to_be_inserted_here(Box const&);
|
||||
|
||||
auto& inline_formatting_context() { return m_context; }
|
||||
|
||||
private:
|
||||
void begin_new_line(bool increment_y, bool is_first_break_in_sequence = true);
|
||||
|
||||
bool should_break(CSSPixels next_item_width);
|
||||
|
||||
LineBox& ensure_last_line_box();
|
||||
|
||||
InlineFormattingContext& m_context;
|
||||
LayoutState& m_layout_state;
|
||||
LayoutState::UsedValues& m_containing_block_used_values;
|
||||
AvailableSize m_available_width_for_current_line { AvailableSize::make_indefinite() };
|
||||
CSSPixels m_current_block_offset { 0 };
|
||||
CSSPixels m_max_height_on_current_line { 0 };
|
||||
CSSPixels m_text_indent { 0 };
|
||||
CSS::Direction m_direction { CSS::Direction::Ltr };
|
||||
CSS::WritingMode m_writing_mode { CSS::WritingMode::HorizontalTb };
|
||||
|
||||
bool m_last_line_needs_update { false };
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue