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

// Copyright 2016 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_INLINE_LAYOUT_ALGORITHM_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_INLINE_INLINE_LAYOUT_ALGORITHM_H_

#include "base/dcheck_is_on.h"
#include "base/notreached.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/layout/box_fragment_builder.h"
#include "third_party/blink/renderer/core/layout/constraint_space_builder.h"
#include "third_party/blink/renderer/core/layout/inline/inline_node.h"
#include "third_party/blink/renderer/core/layout/inline/line_box_fragment_builder.h"
#include "third_party/blink/renderer/core/layout/inline/logical_line_item.h"
#include "third_party/blink/renderer/core/layout/layout_algorithm.h"
#include "third_party/blink/renderer/core/layout/unpositioned_float.h"
#include "third_party/blink/renderer/platform/fonts/font_baseline.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"

namespace blink {

class ColumnSpannerPath;
class ConstraintSpace;
class ExclusionSpace;
class InlineBreakToken;
class InlineChildLayoutContext;
class InlineItem;
class InlineLayoutStateStack;
class InlineNode;
class LineInfo;
class LogicalLineContainer;
struct InlineItemResult;
struct LeadingFloats;

// A class for laying out an inline formatting context, i.e. a block with inline
// children.
//
// This class determines the position of InlineItem and build line boxes.
//
// Uses LineBreaker to find InlineItems to form a line.
class CORE_EXPORT InlineLayoutAlgorithm final
    : public LayoutAlgorithm<InlineNode,
                             LineBoxFragmentBuilder,
                             InlineBreakToken> {};

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_INLINE_INLINE_LAYOUT_ALGORITHM_H_