#include "third_party/blink/renderer/core/layout/inline/logical_line_builder.h"
#include <algorithm>
#include "base/containers/adapters.h"
#include "third_party/blink/renderer/core/layout/disable_layout_side_effects_scope.h"
#include "third_party/blink/renderer/core/layout/inline/inline_box_state.h"
#include "third_party/blink/renderer/core/layout/inline/inline_child_layout_context.h"
#include "third_party/blink/renderer/core/layout/inline/inline_item_result_ruby_column.h"
#include "third_party/blink/renderer/core/layout/inline/inline_layout_algorithm.h"
#include "third_party/blink/renderer/core/layout/inline/inline_node.h"
#include "third_party/blink/renderer/core/layout/inline/justification_utils.h"
#include "third_party/blink/renderer/core/layout/inline/line_breaker.h"
#include "third_party/blink/renderer/core/layout/inline/line_info.h"
#include "third_party/blink/renderer/core/layout/inline/logical_line_item.h"
#include "third_party/blink/renderer/core/layout/inline/ruby_utils.h"
#include "third_party/blink/renderer/core/layout/layout_text_combine.h"
#include "third_party/blink/renderer/core/layout/logical_box_fragment.h"
#include "third_party/blink/renderer/platform/text/bidi_paragraph.h"
namespace blink {
LogicalLineBuilder::LogicalLineBuilder(InlineNode node,
const ConstraintSpace& constraint_space,
const InlineBreakToken* break_token,
InlineLayoutStateStack* state_stack,
InlineChildLayoutContext* context)
: … { … }
void LogicalLineBuilder::CreateLine(LineInfo* line_info,
LogicalLineItems* line_box,
InlineLayoutAlgorithm* main_line_helper) { … }
InlineBoxState* LogicalLineBuilder::HandleItemResults(
const LineInfo& line_info,
InlineItemResults& line_items,
LogicalLineItems* line_box,
InlineLayoutAlgorithm* main_line_helper,
InlineBoxState* box) { … }
InlineBoxState* LogicalLineBuilder::HandleOpenTag(
const InlineItem& item,
const InlineItemResult& item_result,
LogicalLineItems* line_box) { … }
InlineBoxState* LogicalLineBuilder::HandleCloseTag(
const InlineItem& item,
const InlineItemResult& item_result,
LogicalLineItems* line_box,
InlineBoxState* box) { … }
void LogicalLineBuilder::PlaceControlItem(const InlineItem& item,
const String& text_content,
InlineItemResult* item_result,
LogicalLineItems* line_box,
InlineBoxState* box) { … }
void LogicalLineBuilder::PlaceHyphen(const InlineItemResult& item_result,
LayoutUnit hyphen_inline_size,
LogicalLineItems* line_box,
InlineBoxState* box) { … }
InlineBoxState* LogicalLineBuilder::PlaceAtomicInline(
const InlineItem& item,
InlineItemResult* item_result,
LogicalLineItems* line_box) { … }
void LogicalLineBuilder::PlaceLayoutResult(InlineItemResult* item_result,
LogicalLineItems* line_box,
InlineBoxState* box,
LayoutUnit inline_offset) { … }
void LogicalLineBuilder::PlaceInitialLetterBox(const InlineItem& item,
InlineItemResult* item_result,
LogicalLineItems* line_box) { … }
InlineBoxState* LogicalLineBuilder::PlaceRubyColumn(
const LineInfo& line_info,
InlineItemResult& item_result,
LogicalLineItems& line_box,
InlineBoxState* box) { … }
void LogicalLineBuilder::PlaceRubyAnnotation(
InlineItemResult& item_result,
std::optional<LayoutUnit> line_available_size,
wtf_size_t index,
LineInfo& annotation_line,
LogicalRubyColumn& logical_column) { … }
void LogicalLineBuilder::PlaceListMarker(const InlineItem& item,
InlineItemResult* item_result) { … }
void LogicalLineBuilder::BidiReorder(
TextDirection base_direction,
LogicalLineItems* line_box,
HeapVector<Member<LogicalRubyColumn>>& column_list) { … }
void LogicalLineBuilder::RebuildBoxStates(const LineInfo& line_info,
wtf_size_t start_item_index,
wtf_size_t end_item_index) { … }
}