Skip to content

Commit 02e3a99

Browse files
Nick Lefeverfacebook-github-bot
authored andcommitted
Back out "Use uint32_t as internal Color representation" (#53622)
Summary: Pull Request resolved: #53622 Reverting to avoid lossy conversion on hosts expecting signed int values for color conversion. Changelog: [Internal] Reviewed By: rozele, javache Differential Revision: D81785268 fbshipit-source-id: 4a8d099e378fa55e76a58c2ab0356d88e344de2c
1 parent 44b2da0 commit 02e3a99

File tree

8 files changed

+29
-29
lines changed

8 files changed

+29
-29
lines changed

packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ static void updateBorderColorPropValue(
310310
const std::optional<SharedColor>& newColor,
311311
const std::optional<SharedColor>& oldColor) {
312312
if (newColor != oldColor) {
313-
result[propName] = *newColor.value_or(SharedColor());
313+
result[propName] = newColor.has_value() ? *newColor.value() : NULL;
314314
}
315315
}
316316

packages/react-native/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/HostPlatformColor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
namespace facebook::react {
1414

15-
using Color = uint32_t;
15+
using Color = int32_t;
1616

1717
namespace HostPlatformColor {
1818
constexpr facebook::react::Color UndefinedColor = 0;

packages/react-native/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ inline SharedColor parsePlatformColor(
4242
auto color =
4343
getColorFromJava(fabricUIManager, surfaceId, *javaResourcePaths);
4444

45-
auto argb = (uint32_t)color;
45+
auto argb = (int64_t)color;
4646
auto ratio = 255.f;
4747
colorComponents.alpha = ((argb >> 24) & 0xFF) / ratio;
4848
colorComponents.red = ((argb >> 16) & 0xFF) / ratio;

packages/react-native/ReactCommon/react/renderer/graphics/platform/cxx/react/renderer/graphics/HostPlatformColor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
namespace facebook::react {
1515

16-
using Color = uint32_t;
16+
using Color = int32_t;
1717

1818
namespace HostPlatformColor {
1919
constexpr facebook::react::Color UndefinedColor = 0;

packages/react-native/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@
1414
namespace facebook::react {
1515

1616
struct DynamicColor {
17-
uint32_t lightColor = 0;
18-
uint32_t darkColor = 0;
19-
uint32_t highContrastLightColor = 0;
20-
uint32_t highContrastDarkColor = 0;
17+
int32_t lightColor = 0;
18+
int32_t darkColor = 0;
19+
int32_t highContrastLightColor = 0;
20+
int32_t highContrastDarkColor = 0;
2121
};
2222

2323
struct Color {
24-
Color(uint32_t color);
24+
Color(int32_t color);
2525
Color(const DynamicColor& dynamicColor);
2626
Color(const ColorComponents& components);
2727
Color() : uiColor_(nullptr){};
28-
uint32_t getColor() const;
28+
int32_t getColor() const;
2929
std::size_t getUIColorHash() const;
3030

3131
static Color createSemanticColor(std::vector<std::string>& semanticItems);
@@ -38,7 +38,7 @@ struct Color {
3838

3939
ColorComponents getColorComponents() const {
4040
float ratio = 255;
41-
uint32_t primitiveColor = getColor();
41+
int32_t primitiveColor = getColor();
4242
return ColorComponents{
4343
.red = (float)((primitiveColor >> 16) & 0xff) / ratio,
4444
.green = (float)((primitiveColor >> 8) & 0xff) / ratio,
@@ -47,7 +47,7 @@ struct Color {
4747
}
4848
bool operator==(const Color& other) const;
4949
bool operator!=(const Color& other) const;
50-
operator uint32_t() const {
50+
operator int32_t() const {
5151
return getColor();
5252
}
5353

packages/react-native/ReactCommon/react/renderer/graphics/platform/ios/react/renderer/graphics/HostPlatformColor.mm

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ bool UIColorIsP3ColorSpace(const std::shared_ptr<void> &uiColor)
3636
return false;
3737
}
3838

39-
UIColor *_Nullable UIColorFromInt32(uint32_t intColor)
39+
UIColor *_Nullable UIColorFromInt32(int32_t intColor)
4040
{
4141
CGFloat a = CGFloat((intColor >> 24) & 0xFF) / 255.0;
4242
CGFloat r = CGFloat((intColor >> 16) & 0xFF) / 255.0;
@@ -49,10 +49,10 @@ bool UIColorIsP3ColorSpace(const std::shared_ptr<void> &uiColor)
4949

5050
UIColor *_Nullable UIColorFromDynamicColor(const facebook::react::DynamicColor &dynamicColor)
5151
{
52-
uint32_t light = dynamicColor.lightColor;
53-
uint32_t dark = dynamicColor.darkColor;
54-
uint32_t highContrastLight = dynamicColor.highContrastLightColor;
55-
uint32_t highContrastDark = dynamicColor.highContrastDarkColor;
52+
int32_t light = dynamicColor.lightColor;
53+
int32_t dark = dynamicColor.darkColor;
54+
int32_t highContrastLight = dynamicColor.highContrastLightColor;
55+
int32_t highContrastDark = dynamicColor.highContrastDarkColor;
5656

5757
UIColor *lightColor = UIColorFromInt32(light);
5858
UIColor *darkColor = UIColorFromInt32(dark);
@@ -83,7 +83,7 @@ bool UIColorIsP3ColorSpace(const std::shared_ptr<void> &uiColor)
8383
return nil;
8484
}
8585

86-
uint32_t ColorFromColorComponents(const facebook::react::ColorComponents &components)
86+
int32_t ColorFromColorComponents(const facebook::react::ColorComponents &components)
8787
{
8888
float ratio = 255;
8989
auto color = ((int32_t)round((float)components.alpha * ratio) & 0xff) << 24 |
@@ -92,15 +92,15 @@ uint32_t ColorFromColorComponents(const facebook::react::ColorComponents &compon
9292
return color;
9393
}
9494

95-
uint32_t ColorFromUIColor(UIColor *color)
95+
int32_t ColorFromUIColor(UIColor *color)
9696
{
9797
CGFloat rgba[4];
9898
[color getRed:&rgba[0] green:&rgba[1] blue:&rgba[2] alpha:&rgba[3]];
9999
return ColorFromColorComponents(
100100
{.red = (float)rgba[0], .green = (float)rgba[1], .blue = (float)rgba[2], .alpha = (float)rgba[3]});
101101
}
102102

103-
uint32_t ColorFromUIColorForSpecificTraitCollection(
103+
int32_t ColorFromUIColorForSpecificTraitCollection(
104104
const std::shared_ptr<void> &uiColor,
105105
UITraitCollection *traitCollection)
106106
{
@@ -113,7 +113,7 @@ uint32_t ColorFromUIColorForSpecificTraitCollection(
113113
return 0;
114114
}
115115

116-
uint32_t ColorFromUIColor(const std::shared_ptr<void> &uiColor)
116+
int32_t ColorFromUIColor(const std::shared_ptr<void> &uiColor)
117117
{
118118
return ColorFromUIColorForSpecificTraitCollection(uiColor, [UITraitCollection currentTraitCollection]);
119119
}
@@ -172,7 +172,7 @@ uint32_t ColorFromUIColor(const std::shared_ptr<void> &uiColor)
172172

173173
} // anonymous namespace
174174

175-
Color::Color(uint32_t color)
175+
Color::Color(int32_t color)
176176
{
177177
uiColor_ = wrapManagedObject(UIColorFromInt32(color));
178178
uiColorHashValue_ = facebook::react::hash_combine(color, 0);
@@ -217,7 +217,7 @@ uint32_t ColorFromUIColor(const std::shared_ptr<void> &uiColor)
217217
return !(*this == other);
218218
}
219219

220-
uint32_t Color::getColor() const
220+
int32_t Color::getColor() const
221221
{
222222
return ColorFromUIColor(uiColor_);
223223
}

packages/react-native/ReactCxxPlatform/react/devsupport/DevLoadingViewModule.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
namespace facebook::react {
1111

12-
const uint32_t DEFAULT_TEXT_COLOR = 0xFFFFFFFF;
13-
const uint32_t DEFAULT_BACKGROUND_COLOR = 0xFF2584E8;
12+
const int32_t DEFAULT_TEXT_COLOR = 0xFFFFFFFF;
13+
const int32_t DEFAULT_BACKGROUND_COLOR = 0xFF2584E8;
1414

1515
DevLoadingViewModule::DevLoadingViewModule(
1616
std::shared_ptr<CallInvoker> jsInvoker,
@@ -27,8 +27,8 @@ DevLoadingViewModule::~DevLoadingViewModule() {
2727
void DevLoadingViewModule::showMessage(
2828
jsi::Runtime& /*rt*/,
2929
const std::string& message,
30-
std::optional<uint32_t> textColor,
31-
std::optional<uint32_t> backgroundColor) {
30+
std::optional<int32_t> textColor,
31+
std::optional<int32_t> backgroundColor) {
3232
if (auto devUIDelegate = devUIDelegate_.lock()) {
3333
devUIDelegate->showLoadingView(
3434
message,

packages/react-native/ReactCxxPlatform/react/devsupport/DevLoadingViewModule.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ class DevLoadingViewModule
2727
void showMessage(
2828
jsi::Runtime& rt,
2929
const std::string& message,
30-
std::optional<uint32_t> textColor,
31-
std::optional<uint32_t> backgroundColor);
30+
std::optional<int32_t> textColor,
31+
std::optional<int32_t> backgroundColor);
3232

3333
void hide(jsi::Runtime& rt);
3434

0 commit comments

Comments
 (0)