Fix `testColorInterpolation` on macOS
This commit is contained in:
Родитель
bee4806d5e
Коммит
2bf55b6109
|
@ -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:
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import <React/RCTDefines.h>
|
||||
#import <React/RCTUIKit.h> // [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<NSNumber *> *inputRange, NSArray<UIColor *> *outputRange);
|
||||
RCT_EXTERN uint32_t
|
||||
RCTInterpolateColorInRange(CGFloat value, NSArray<NSNumber *> *inputRange, NSArray<RCTUIColor *> *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
|
||||
|
|
|
@ -84,7 +84,7 @@ CGFloat RCTInterpolateValueInRange(
|
|||
return RCTInterpolateValue(value, inputMin, inputMax, outputMin, outputMax, extrapolateLeft, extrapolateRight);
|
||||
}
|
||||
|
||||
int32_t RCTInterpolateColorInRange(CGFloat value, NSArray<NSNumber *> *inputRange, NSArray<UIColor *> *outputRange)
|
||||
uint32_t RCTInterpolateColorInRange(CGFloat value, NSArray<NSNumber *> *inputRange, NSArray<RCTUIColor *> *outputRange) // [macOS]
|
||||
{
|
||||
NSUInteger rangeIndex = RCTFindIndexOfNearestValue(value, inputRange);
|
||||
CGFloat inputMin = inputRange[rangeIndex].doubleValue;
|
||||
|
@ -102,10 +102,10 @@ int32_t RCTInterpolateColorInRange(CGFloat value, NSArray<NSNumber *> *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
|
||||
|
|
|
@ -98,15 +98,15 @@ static CGFloat RCTSimpleInterpolation(CGFloat value, NSArray<NSNumber *> *inputR
|
|||
- (void)testColorInterpolation
|
||||
{
|
||||
NSArray<NSNumber *> *input = @[ @0, @1 ];
|
||||
NSArray<UIColor *> *output = @[ [UIColor redColor], [UIColor blueColor] ];
|
||||
NSArray<RCTUIColor *> *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
|
||||
|
|
Загрузка…
Ссылка в новой задаче