mirror of
https://github.com/status-im/react-native.git
synced 2025-01-10 01:25:39 +00:00
dd3a6eda70
Summary: This diff contains several tight to each other changes (which can/should not be split into several diffs): * The props parsing/conversion process was de-virtualized: we don't use virtual `apply` method to parse props anymore. Instead, we use old-fashioned constructors. * All fields of Props classes which represent props values were marked as `const` which make impossible to modify them after the objects were created (even if we have non-const value-of/pointer-to the whole Props object). Those fields are also `public` now. * All custom handwritten getters were removed (because we don't need them anymore). So, now we don't need all those custom getters which makes code much more compact, performant and codegen-friendly. Reviewed By: fkgozali Differential Revision: D7901245 fbshipit-source-id: 9f4b1fd2da64bf963b63215ed3bd74b9d3c58dd5
60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#include "BaseTextShadowNode.h"
|
|
|
|
#include <fabric/debug/DebugStringConvertibleItem.h>
|
|
|
|
#include "RawTextShadowNode.h"
|
|
#include "RawTextProps.h"
|
|
#include "TextShadowNode.h"
|
|
#include "TextProps.h"
|
|
|
|
namespace facebook {
|
|
namespace react {
|
|
|
|
AttributedString BaseTextShadowNode::getAttributedString(
|
|
const TextAttributes &textAttributes,
|
|
const SharedShadowNodeSharedList &childNodes
|
|
) const {
|
|
// TODO: Implement caching.
|
|
|
|
AttributedString attributedString;
|
|
|
|
for (auto &&childNode : *childNodes) {
|
|
// RawShadowNode
|
|
SharedRawTextShadowNode rawTextShadowNode = std::dynamic_pointer_cast<const RawTextShadowNode>(childNode);
|
|
if (rawTextShadowNode) {
|
|
AttributedString::Fragment fragment;
|
|
fragment.string = rawTextShadowNode->getProps()->text;
|
|
fragment.textAttributes = textAttributes;
|
|
attributedString.appendFragment(fragment);
|
|
continue;
|
|
}
|
|
|
|
// TextShadowNode
|
|
SharedTextShadowNode textShadowNode = std::dynamic_pointer_cast<const TextShadowNode>(childNode);
|
|
if (textShadowNode) {
|
|
TextAttributes localTextAttributes = textAttributes;
|
|
localTextAttributes.apply(textShadowNode->getProps()->textAttributes);
|
|
attributedString.appendAttributedString(textShadowNode->getAttributedString(localTextAttributes, textShadowNode->getChildren()));
|
|
continue;
|
|
}
|
|
|
|
// Any other kind of ShadowNode
|
|
AttributedString::Fragment fragment;
|
|
fragment.shadowNode = childNode;
|
|
fragment.textAttributes = textAttributes;
|
|
attributedString.appendFragment(fragment);
|
|
}
|
|
|
|
return attributedString;
|
|
}
|
|
|
|
} // namespace react
|
|
} // namespace facebook
|