chromium/third_party/blink/renderer/core/layout/svg/svg_text_layout_attributes_builder.h

// Copyright 2021 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_SVG_SVG_TEXT_LAYOUT_ATTRIBUTES_BUILDER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SVG_SVG_TEXT_LAYOUT_ATTRIBUTES_BUILDER_H_

#include "third_party/blink/renderer/core/layout/svg/svg_character_data.h"
#include "third_party/blink/renderer/core/layout/svg/svg_inline_node_data.h"
#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"

namespace blink {

class InlineItem;
class InlineNode;
class LayoutBlockFlow;

// This class builds a list of <addressable character offset,
// its attribute values> for the specified SVG <text>.
//
// This is almost an implementation of '3. Resolve character positioning'
// in the algorithm [1]. However this runs during PrepareLayout() rather
// than during the SVG text layout algorithm because we'd like to use the
// result of this class in InlineNode::CollectInlines().
//
// Also, this is responsible to make lists of index ranges for <textPath> and
// textLength.
//
// [1] https://svgwg.org/svg2-draft/text.html#TextLayoutAlgorithm
class SvgTextLayoutAttributesBuilder final {};

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SVG_SVG_TEXT_LAYOUT_ATTRIBUTES_BUILDER_H_