Skip to content

Commit b58d98b

Browse files
committed
feat(image): wip resize mode c++ props
1 parent 366e26a commit b58d98b

File tree

6 files changed

+22
-13
lines changed

6 files changed

+22
-13
lines changed

packages/react-native/Libraries/Image/RCTImageUtils.mm

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ CGRect RCTTargetRect(CGSize sourceSize, CGSize destSize, CGFloat destScale, RCTR
7575

7676
// Calculate target aspect ratio if needed
7777
CGFloat targetAspect = 0.0;
78-
if (resizeMode != RCTResizeModeCenter && resizeMode != RCTResizeModeStretch) {
78+
if (resizeMode != RCTResizeModeCenter && resizeMode != RCTResizeModeStretch && resizeMode != RCTResizeModeNone) {
7979
targetAspect = destSize.width / destSize.height;
8080
if (aspect == targetAspect) {
8181
resizeMode = RCTResizeModeStretch;
@@ -146,12 +146,10 @@ CGRect RCTTargetRect(CGSize sourceSize, CGSize destSize, CGFloat destScale, RCTR
146146
},
147147
RCTCeilSize(sourceSize, destScale)};
148148
case RCTResizeModeNone:
149-
149+
// print something
150+
NSLog(@"Testing RCTResizeModeNone");
150151
return (CGRect){
151-
{
152-
0,
153-
0,
154-
},
152+
CGPointZero,
155153
RCTCeilSize(sourceSize, destScale)};
156154
}
157155
}
@@ -174,9 +172,8 @@ CGSize RCTTargetSize(
174172
BOOL allowUpscaling)
175173
{
176174
switch (resizeMode) {
177-
case RCTResizeModeCenter:
178175
case RCTResizeModeNone:
179-
176+
case RCTResizeModeCenter:
180177
return RCTTargetRect(sourceSize, destSize, destScale, resizeMode).size;
181178

182179
case RCTResizeModeStretch:
@@ -257,8 +254,8 @@ BOOL RCTUpscalingRequired(
257254
}
258255

259256
case RCTResizeModeRepeat:
260-
case RCTResizeModeCenter:
261257
case RCTResizeModeNone:
258+
case RCTResizeModeCenter:
262259

263260
return NO;
264261
}

packages/react-native/Libraries/Image/RCTResizeMode.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ typedef NS_ENUM(NSInteger, RCTResizeMode) {
1212
RCTResizeModeContain = UIViewContentModeScaleAspectFit,
1313
RCTResizeModeStretch = UIViewContentModeScaleToFill,
1414
RCTResizeModeCenter = UIViewContentModeCenter,
15+
RCTResizeModeNone = UIViewContentModeTopRight,
1516
RCTResizeModeRepeat = -1, // Use negative values to avoid conflicts with iOS enum values.
16-
RCTResizeModeNone = UIViewContentModeTopLeft,
1717
};
1818

1919
static inline RCTResizeMode RCTResizeModeFromUIViewContentMode(UIViewContentMode mode)
@@ -31,15 +31,15 @@ static inline RCTResizeMode RCTResizeModeFromUIViewContentMode(UIViewContentMode
3131
case UIViewContentModeCenter:
3232
return RCTResizeModeCenter;
3333
break;
34-
case UIViewContentModeTopLeft:
34+
case UIViewContentModeTopRight:
3535
return RCTResizeModeNone;
3636
break;
3737
case UIViewContentModeRedraw:
3838
case UIViewContentModeTop:
3939
case UIViewContentModeBottom:
4040
case UIViewContentModeLeft:
4141
case UIViewContentModeRight:
42-
case UIViewContentModeTopRight:
42+
case UIViewContentModeTopLeft:
4343
case UIViewContentModeBottomLeft:
4444
case UIViewContentModeBottomRight:
4545
return RCTResizeModeRepeat;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/image/ImageResizeMode.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public object ImageResizeMode {
1919
private const val RESIZE_MODE_STRETCH = "stretch"
2020
private const val RESIZE_MODE_CENTER = "center"
2121
private const val RESIZE_MODE_REPEAT = "repeat"
22+
private const val RESIZE_MODE_NONE = "none"
2223

2324
/** Converts JS resize modes into `ScalingUtils.ScaleType`. See `ImageResizeMode.js`. */
2425
@JvmStatic
@@ -30,6 +31,7 @@ public object ImageResizeMode {
3031
RESIZE_MODE_CENTER -> return ScalingUtils.ScaleType.CENTER_INSIDE
3132
// Handled via a combination of ScaleType and TileMode
3233
RESIZE_MODE_REPEAT -> return ScaleTypeStartInside.INSTANCE
34+
RESIZE_MODE_NONE -> return ScaleTypeStartInside.INSTANCE
3335
}
3436

3537
if (resizeModeValue != null) {
@@ -45,7 +47,8 @@ public object ImageResizeMode {
4547
if (RESIZE_MODE_CONTAIN == resizeModeValue ||
4648
RESIZE_MODE_COVER == resizeModeValue ||
4749
RESIZE_MODE_STRETCH == resizeModeValue ||
48-
RESIZE_MODE_CENTER == resizeModeValue) {
50+
RESIZE_MODE_CENTER == resizeModeValue ||
51+
RESIZE_MODE_NONE == resizeModeValue) {
4952
return TileMode.CLAMP
5053
}
5154
if (RESIZE_MODE_REPEAT == resizeModeValue) {

packages/react-native/ReactCommon/react/renderer/components/image/conversions.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ inline void fromRawValue(
148148
result = ImageResizeMode::Center;
149149
} else if (stringValue == "repeat") {
150150
result = ImageResizeMode::Repeat;
151+
} else if (stringValue == "none") {
152+
result = ImageResizeMode::None;
151153
} else {
152154
LOG(ERROR) << "Unsupported ImageResizeMode value: " << stringValue;
153155
react_native_expect(false);
@@ -168,6 +170,8 @@ inline std::string toString(const ImageResizeMode& value) {
168170
return "center";
169171
case ImageResizeMode::Repeat:
170172
return "repeat";
173+
case ImageResizeMode::None:
174+
return "none";
171175
}
172176
}
173177

packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ inline static UIViewContentMode RCTContentModeFromImageResizeMode(facebook::reac
2626
// Repeat resize mode is handled by the UIImage. Use scale to fill
2727
// so the repeated image fills the UIImageView.
2828
return UIViewContentModeScaleToFill;
29+
case facebook::react::ImageResizeMode::None:
30+
return UIViewContentModeTopLeft;
2931
}
3032
}
3133

@@ -42,6 +44,8 @@ inline std::string toString(const facebook::react::ImageResizeMode &value)
4244
return "center";
4345
case facebook::react::ImageResizeMode::Repeat:
4446
return "repeat";
47+
case facebook::react::ImageResizeMode::None:
48+
return "none";
4549
}
4650
}
4751

packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ enum class ImageResizeMode {
4747
Stretch,
4848
Center,
4949
Repeat,
50+
None,
5051
};
5152

5253
class ImageErrorInfo {

0 commit comments

Comments
 (0)