From 2bf55b61091d4dcd7f9626780f188fe0a60123dc Mon Sep 17 00:00:00 2001 From: Saad Najmi Date: Wed, 29 Mar 2023 04:41:20 -0700 Subject: [PATCH] Fix `testColorInterpolation` on macOS --- .../NativeAnimation/Nodes/RCTInterpolationAnimatedNode.m | 4 ++-- Libraries/NativeAnimation/RCTAnimationUtils.h | 7 ++++--- Libraries/NativeAnimation/RCTAnimationUtils.m | 8 ++++---- .../rn-tester/RNTesterUnitTests/RCTAnimationUtilsTests.m | 8 ++++---- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.m b/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.m index b8a0949bcc..ff7fac0c2d 100644 --- a/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.m +++ b/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.m @@ -105,8 +105,8 @@ NSString *RCTInterpolateString( for (id value in outputRangeConfig) { switch (_outputType) { case RCTInterpolationOutputColor: { - UIColor *color = [RCTConvert UIColor:value]; - [outputRange addObject:color ? color : [UIColor whiteColor]]; + RCTUIColor *color = [RCTConvert UIColor:value]; // [macOS] + [outputRange addObject:color ? color : [RCTUIColor whiteColor]]; // [macOS] break; } case RCTInterpolationOutputString: diff --git a/Libraries/NativeAnimation/RCTAnimationUtils.h b/Libraries/NativeAnimation/RCTAnimationUtils.h index 338a88b483..7ac9b660b5 100644 --- a/Libraries/NativeAnimation/RCTAnimationUtils.h +++ b/Libraries/NativeAnimation/RCTAnimationUtils.h @@ -9,6 +9,7 @@ #import #import +#import // [macOS] RCT_EXTERN NSString *const EXTRAPOLATE_TYPE_IDENTITY; RCT_EXTERN NSString *const EXTRAPOLATE_TYPE_CLAMP; @@ -32,11 +33,11 @@ RCT_EXTERN CGFloat RCTInterpolateValueInRange( NSString *extrapolateLeft, NSString *extrapolateRight); -RCT_EXTERN int32_t -RCTInterpolateColorInRange(CGFloat value, NSArray *inputRange, NSArray *outputRange); +RCT_EXTERN uint32_t +RCTInterpolateColorInRange(CGFloat value, NSArray *inputRange, NSArray *outputRange); // [macOS] // Represents a color as a int32_t. RGB components are assumed to be in [0-255] range and alpha in [0-1] range -RCT_EXTERN int32_t RCTColorFromComponents(CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha); +RCT_EXTERN uint32_t RCTColorFromComponents(CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha); /** * Coefficient to slow down animations, respects the ios diff --git a/Libraries/NativeAnimation/RCTAnimationUtils.m b/Libraries/NativeAnimation/RCTAnimationUtils.m index 22ee2bc908..fab1173440 100644 --- a/Libraries/NativeAnimation/RCTAnimationUtils.m +++ b/Libraries/NativeAnimation/RCTAnimationUtils.m @@ -84,7 +84,7 @@ CGFloat RCTInterpolateValueInRange( return RCTInterpolateValue(value, inputMin, inputMax, outputMin, outputMax, extrapolateLeft, extrapolateRight); } -int32_t RCTInterpolateColorInRange(CGFloat value, NSArray *inputRange, NSArray *outputRange) +uint32_t RCTInterpolateColorInRange(CGFloat value, NSArray *inputRange, NSArray *outputRange) // [macOS] { NSUInteger rangeIndex = RCTFindIndexOfNearestValue(value, inputRange); CGFloat inputMin = inputRange[rangeIndex].doubleValue; @@ -102,10 +102,10 @@ int32_t RCTInterpolateColorInRange(CGFloat value, NSArray *inputRang alphaMin + (value - inputMin) * (alphaMax - alphaMin) / (inputMax - inputMin)); } -int32_t RCTColorFromComponents(CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha) +uint32_t RCTColorFromComponents(CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha) { - return ((int)round(alpha * 255) & 0xFF) << 24 | ((int)round(red) & 0xFF) << 16 | ((int)round(green) & 0xFF) << 8 | - ((int)round(blue) & 0xFF); + return ((uint32_t)round(alpha * 255) & 0xFF) << 24 | ((uint32_t)round(red) & 0xFF) << 16 | ((uint32_t)round(green) & 0xFF) << 8 | + ((uint32_t)round(blue) & 0xFF); } #if TARGET_IPHONE_SIMULATOR diff --git a/packages/rn-tester/RNTesterUnitTests/RCTAnimationUtilsTests.m b/packages/rn-tester/RNTesterUnitTests/RCTAnimationUtilsTests.m index 5926ffd382..f2934bdb00 100644 --- a/packages/rn-tester/RNTesterUnitTests/RCTAnimationUtilsTests.m +++ b/packages/rn-tester/RNTesterUnitTests/RCTAnimationUtilsTests.m @@ -98,15 +98,15 @@ static CGFloat RCTSimpleInterpolation(CGFloat value, NSArray *inputR - (void)testColorInterpolation { NSArray *input = @[ @0, @1 ]; - NSArray *output = @[ [UIColor redColor], [UIColor blueColor] ]; + NSArray *output = @[ [RCTUIColor redColor], [RCTUIColor blueColor] ]; // [macOS] uint32_t value; value = RCTInterpolateColorInRange(0, input, output); - XCTAssertEqualObjects([RCTConvert UIColor:@(value)], [UIColor redColor]); + XCTAssertEqualObjects([RCTConvert UIColor:@(value)], [RCTUIColor redColor]); // [macOS] value = RCTInterpolateColorInRange(0.5, input, output); XCTAssertEqualObjects( - [RCTConvert UIColor:@(value)], [UIColor colorWithRed:128. / 255 green:0 blue:128. / 255 alpha:1]); + [RCTConvert UIColor:@(value)], [RCTUIColor colorWithRed:128. / 255 green:0 blue:128. / 255 alpha:1]); // [macOS] value = RCTInterpolateColorInRange(1, input, output); - XCTAssertEqualObjects([RCTConvert UIColor:@(value)], [UIColor blueColor]); + XCTAssertEqualObjects([RCTConvert UIColor:@(value)], [RCTUIColor blueColor]); // [macOS] } - (void)testStringInterpolation