newsmemory-ios-sdk/Frameworks/React-FabricComponents.xcfr.../ios-arm64_x86_64-simulator/Headers/react/renderer/textlayoutmanager/TextLayoutManager.h

72 lines
2.1 KiB
C++

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <react/renderer/attributedstring/AttributedStringBox.h>
#include <react/renderer/attributedstring/ParagraphAttributes.h>
#include <react/renderer/core/LayoutConstraints.h>
#include <react/renderer/textlayoutmanager/TextLayoutContext.h>
#include <react/renderer/textlayoutmanager/TextMeasureCache.h>
#include <react/utils/ContextContainer.h>
#include <memory>
namespace facebook::react {
/*
* Cross platform facade for text measurement (e.g. Android-specific
* TextLayoutManager)
*/
class TextLayoutManager {
public:
TextLayoutManager(const ContextContainer::Shared& contextContainer);
/*
* Not copyable.
*/
TextLayoutManager(const TextLayoutManager&) = delete;
TextLayoutManager& operator=(const TextLayoutManager&) = delete;
/*
* Not movable.
*/
TextLayoutManager(TextLayoutManager&&) = delete;
TextLayoutManager& operator=(TextLayoutManager&&) = delete;
/*
* Measures `attributedString` using native text rendering infrastructure.
*/
TextMeasurement measure(
const AttributedStringBox& attributedStringBox,
const ParagraphAttributes& paragraphAttributes,
const TextLayoutContext& layoutContext,
const LayoutConstraints& layoutConstraints) const;
/*
* Measures lines of `attributedString` using native text rendering
* infrastructure.
*/
LinesMeasurements measureLines(
const AttributedStringBox& attributedStringBox,
const ParagraphAttributes& paragraphAttributes,
const Size& size) const;
/*
* Returns an opaque pointer to platform-specific TextLayoutManager.
* Is used on a native views layer to delegate text rendering to the manager.
*/
std::shared_ptr<void> getNativeTextLayoutManager() const;
protected:
std::shared_ptr<const ContextContainer> contextContainer_;
std::shared_ptr<void> nativeTextLayoutManager_;
TextMeasureCache textMeasureCache_;
LineMeasureCache lineMeasureCache_;
};
} // namespace facebook::react