/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.react.views.image;
import javax.annotation.Nullable;
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
import com.facebook.drawee.drawable.ScalingUtils;
/**
* Converts JS resize modes into Android-specific scale type.
*/
public class ImageResizeMode {
/**
* Converts JS resize modes into {@code ScalingUtils.ScaleType}.
* See {@code ImageResizeMode.js}.
*/
public static ScalingUtils.ScaleType toScaleType(@Nullable String resizeModeValue) {
if ("contain".equals(resizeModeValue)) {
return ScalingUtils.ScaleType.CENTER_INSIDE;
}
if ("cover".equals(resizeModeValue)) {
return ScalingUtils.ScaleType.CENTER_CROP;
}
if ("stretch".equals(resizeModeValue)) {
return ScalingUtils.ScaleType.FIT_XY;
}
if (resizeModeValue == null) {
// Use the default. Never use null.
return defaultValue();
}
throw new JSApplicationIllegalArgumentException(
"Invalid resize mode: '" + resizeModeValue + "'");
}
/**
* This is the default as per web and iOS.
* We want to be consistent across platforms.
*/
public static ScalingUtils.ScaleType defaultValue() {
return ScalingUtils.ScaleType.CENTER_CROP;
}
}