mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
4e59508a8e
Summary: This diff extends the ParagraphAttribute class to store the value of the includeFontPadding prop. Note that this is an Android only prop, I'm not creating android blocks to improve "cleanliness" of the code. changelog: [Internal][Fabric] Internal change in Fabric to support Text.includeFontPadding prop in fabric Reviewed By: shergin Differential Revision: D21446738 fbshipit-source-id: 0543e86aa18ce10f7a56bbaafe111cce0179ea86
96 lines
2.4 KiB
C++
96 lines
2.4 KiB
C++
/*
|
|
* 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 <limits>
|
|
|
|
#include <folly/Hash.h>
|
|
#include <react/attributedstring/primitives.h>
|
|
#include <react/debug/DebugStringConvertible.h>
|
|
#include <react/graphics/Geometry.h>
|
|
|
|
namespace facebook {
|
|
namespace react {
|
|
|
|
class ParagraphAttributes;
|
|
|
|
using SharedParagraphAttributes = std::shared_ptr<const ParagraphAttributes>;
|
|
|
|
/*
|
|
* Represents all visual attributes of a paragraph of text.
|
|
* Two data structures, ParagraphAttributes and AttributedText, should be
|
|
* enough to define visual representation of a piece of text on the screen.
|
|
*/
|
|
class ParagraphAttributes : public DebugStringConvertible {
|
|
public:
|
|
#pragma mark - Fields
|
|
|
|
/*
|
|
* Maximum number of lines which paragraph can take.
|
|
* Zero value represents "no limit".
|
|
*/
|
|
int maximumNumberOfLines{};
|
|
|
|
/*
|
|
* In case if a text cannot fit given boundaries, defines a place where
|
|
* an ellipsize should be placed.
|
|
*/
|
|
EllipsizeMode ellipsizeMode{};
|
|
|
|
TextBreakStrategy textBreakStrategy{};
|
|
|
|
/*
|
|
* Enables font size adjustment to fit constrained boundaries.
|
|
*/
|
|
bool adjustsFontSizeToFit{};
|
|
|
|
/*
|
|
* (Android only) Leaves enough room for ascenders and descenders instead of
|
|
* using the font ascent and descent strictly.
|
|
*/
|
|
bool includeFontPadding{true};
|
|
|
|
/*
|
|
* In case of font size adjustment enabled, defines minimum and maximum
|
|
* font sizes.
|
|
*/
|
|
Float minimumFontSize{std::numeric_limits<Float>::quiet_NaN()};
|
|
Float maximumFontSize{std::numeric_limits<Float>::quiet_NaN()};
|
|
|
|
bool operator==(const ParagraphAttributes &) const;
|
|
bool operator!=(const ParagraphAttributes &) const;
|
|
|
|
#pragma mark - DebugStringConvertible
|
|
|
|
#if RN_DEBUG_STRING_CONVERTIBLE
|
|
SharedDebugStringConvertibleList getDebugProps() const override;
|
|
#endif
|
|
};
|
|
|
|
} // namespace react
|
|
} // namespace facebook
|
|
|
|
namespace std {
|
|
|
|
template <>
|
|
struct hash<facebook::react::ParagraphAttributes> {
|
|
size_t operator()(
|
|
const facebook::react::ParagraphAttributes &attributes) const {
|
|
return folly::hash::hash_combine(
|
|
0,
|
|
attributes.maximumNumberOfLines,
|
|
attributes.ellipsizeMode,
|
|
attributes.textBreakStrategy,
|
|
attributes.adjustsFontSizeToFit,
|
|
attributes.minimumFontSize,
|
|
attributes.maximumFontSize,
|
|
attributes.includeFontPadding);
|
|
}
|
|
};
|
|
} // namespace std
|