/** * 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. */ #include "ViewProps.h" #include #include #include #include #include namespace facebook { namespace react { ViewProps::ViewProps(const YGStyle &yogaStyle): YogaStylableProps(yogaStyle) {} ViewProps::ViewProps(const ViewProps &sourceProps, const RawProps &rawProps): Props(sourceProps, rawProps), YogaStylableProps(sourceProps, rawProps), opacity(convertRawProp(rawProps, "opacity", sourceProps.opacity, (Float)1.0)), foregroundColor(convertRawProp(rawProps, "foregroundColor", sourceProps.foregroundColor)), backgroundColor(convertRawProp(rawProps, "backgroundColor", sourceProps.backgroundColor)), borderRadii(convertRawProp(rawProps, "border", "Radius", sourceProps.borderRadii)), borderColors(convertRawProp(rawProps, "border", "Color", sourceProps.borderColors)), borderStyles(convertRawProp(rawProps, "border", "Style", sourceProps.borderStyles)), shadowColor(convertRawProp(rawProps, "shadowColor", sourceProps.shadowColor)), shadowOffset(convertRawProp(rawProps, "shadowOffset", sourceProps.shadowOffset)), shadowOpacity(convertRawProp(rawProps, "shadowOpacity", sourceProps.shadowOpacity)), shadowRadius(convertRawProp(rawProps, "shadowRadius", sourceProps.shadowRadius)), transform(convertRawProp(rawProps, "transform", sourceProps.transform)), backfaceVisibility(convertRawProp(rawProps, "backfaceVisibility", sourceProps.backfaceVisibility)), shouldRasterize(convertRawProp(rawProps, "shouldRasterize", sourceProps.shouldRasterize)), zIndex(convertRawProp(rawProps, "zIndex", sourceProps.zIndex)), pointerEvents(convertRawProp(rawProps, "pointerEvents", sourceProps.pointerEvents)), hitSlop(convertRawProp(rawProps, "hitSlop", sourceProps.hitSlop)), onLayout(convertRawProp(rawProps, "onLayout", sourceProps.onLayout)) {}; #pragma mark - Convenience Methods BorderMetrics ViewProps::resolveBorderMetrics(bool isRTL) const { auto borderWidths = CascadedBorderWidths { .left = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeLeft]), .top = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeTop]), .right = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeRight]), .bottom = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeBottom]), .start = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeStart]), .end = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeEnd]), .horizontal = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeHorizontal]), .vertical = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeVertical]), .all = optionalFloatFromYogaValue(yogaStyle.border[YGEdgeAll]) }; return { .borderColors = borderColors.resolve(isRTL, {}), .borderWidths = borderWidths.resolve(isRTL, 0), .borderRadii = borderRadii.resolve(isRTL, 0), .borderStyles = borderStyles.resolve(isRTL, BorderStyle::Solid) }; } #pragma mark - DebugStringConvertible #if RN_DEBUG_STRING_CONVERTIBLE SharedDebugStringConvertibleList ViewProps::getDebugProps() const { const auto &defaultViewProps = ViewProps(); return AccessibilityProps::getDebugProps() + YogaStylableProps::getDebugProps() + SharedDebugStringConvertibleList { debugStringConvertibleItem("zIndex", zIndex, defaultViewProps.zIndex), debugStringConvertibleItem("opacity", opacity, defaultViewProps.opacity), debugStringConvertibleItem("foregroundColor", foregroundColor, defaultViewProps.foregroundColor), debugStringConvertibleItem("backgroundColor", backgroundColor, defaultViewProps.backgroundColor), }; } #endif } // namespace react } // namespace facebook