/* * Copyright (c) Facebook, Inc. and its 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 namespace facebook { namespace react { class TextLayoutManager; using SharedTextLayoutManager = std::shared_ptr; /* * Cross platform facade for Android-specific TextLayoutManager. */ class TextLayoutManager { public: TextLayoutManager(const ContextContainer::Shared &contextContainer) : contextContainer_(contextContainer){}; ~TextLayoutManager(); /* * Measures `attributedString` using native text rendering infrastructure. */ TextMeasurement measure( AttributedStringBox attributedStringBox, 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. */ void *getNativeTextLayoutManager() const; private: TextMeasurement doMeasure( AttributedString attributedString, ParagraphAttributes paragraphAttributes, LayoutConstraints layoutConstraints) const; void *self_; ContextContainer::Shared contextContainer_; TextMeasureCache measureCache_{}; }; } // namespace react } // namespace facebook