chromium/third_party/blink/renderer/core/layout/inline/line_break_candidate.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_INLINE_LINE_BREAK_CANDIDATE_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_INLINE_LINE_BREAK_CANDIDATE_H_

#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/layout/inline/inline_item_text_index.h"
#include "third_party/blink/renderer/core/layout/inline/line_break_point.h"
#include "third_party/blink/renderer/platform/geometry/layout_unit.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"

namespace blink {

class InlineItem;
class LineBreaker;
class LineInfo;

//
// Represents a break candidate (break opportunity).
//
struct CORE_EXPORT LineBreakCandidate : public LineBreakPoint {};

CORE_EXPORT std::ostream& operator<<(std::ostream& ostream,
                                     const LineBreakCandidate& candidate);

//
// A vector of `LineBreakCandidate`.
//
LineBreakCandidates;

//
// Provides a context for computing `LineBreakCandidate` from multiple
// `LineInfo` and `InlineItemResult`.
//
class CORE_EXPORT LineBreakCandidateContext {};

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_INLINE_LINE_BREAK_CANDIDATE_H_