/* * 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 #include #include #include #include #include namespace facebook::react { class TextLayoutManager; /* * Cross platform facade for iOS-specific RCTTTextLayoutManager. */ class TextLayoutManager { public: TextLayoutManager(const ContextContainer::Shared& contextContainer); /* * Measures `attributedString` using native text rendering infrastructure. */ TextMeasurement measure( AttributedStringBox attributedStringBox, ParagraphAttributes paragraphAttributes, LayoutConstraints layoutConstraints, std::shared_ptr hostTextStorage) const; /* * Measures lines of `attributedString` using native text rendering * infrastructure. */ LinesMeasurements measureLines( AttributedString attributedString, ParagraphAttributes paragraphAttributes, Size size) const; std::shared_ptr getHostTextStorage( AttributedString attributedString, ParagraphAttributes paragraphAttributes, LayoutConstraints layoutConstraints) 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 getNativeTextLayoutManager() const; private: std::shared_ptr self_; TextMeasureCache measureCache_{}; }; } // namespace facebook::react