Revert D5172643: [ReactImageView] Remove useless code from ReactImageView.RoundedCornerPostprocessor
Differential Revision: D5172643 fbshipit-source-id: d8d27586d81479c950fe3dd49b24ad5ee29861fc
This commit is contained in:
parent
a26d87628c
commit
3c4057cbb4
|
@ -20,8 +20,10 @@ import android.graphics.Bitmap;
|
|||
import android.graphics.BitmapShader;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Path;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Shader;
|
||||
import android.graphics.drawable.Animatable;
|
||||
|
@ -30,6 +32,8 @@ import android.net.Uri;
|
|||
import android.widget.Toast;
|
||||
|
||||
import com.facebook.common.util.UriUtil;
|
||||
import com.facebook.react.common.build.ReactBuildConfig;
|
||||
import com.facebook.yoga.YogaConstants;
|
||||
import com.facebook.drawee.controller.AbstractDraweeControllerBuilder;
|
||||
import com.facebook.drawee.controller.BaseControllerListener;
|
||||
import com.facebook.drawee.controller.ControllerListener;
|
||||
|
@ -50,17 +54,15 @@ import com.facebook.imagepipeline.request.Postprocessor;
|
|||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.bridge.ReadableArray;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.common.build.ReactBuildConfig;
|
||||
import com.facebook.react.modules.fresco.ReactNetworkImageRequest;
|
||||
import com.facebook.react.uimanager.FloatUtil;
|
||||
import com.facebook.react.modules.fresco.ReactNetworkImageRequest;
|
||||
import com.facebook.react.uimanager.PixelUtil;
|
||||
import com.facebook.react.uimanager.UIManagerModule;
|
||||
import com.facebook.react.uimanager.events.EventDispatcher;
|
||||
import com.facebook.react.views.imagehelper.ImageSource;
|
||||
import com.facebook.react.views.imagehelper.MultiSourceHelper;
|
||||
import com.facebook.react.views.imagehelper.MultiSourceHelper.MultiSourceResult;
|
||||
import com.facebook.react.views.imagehelper.ResourceDrawableIdHelper;
|
||||
import com.facebook.yoga.YogaConstants;
|
||||
import com.facebook.react.views.imagehelper.MultiSourceHelper.MultiSourceResult;
|
||||
|
||||
/**
|
||||
* Wrapper class around Fresco's GenericDraweeView, enabling persisting props across multiple view
|
||||
|
@ -83,10 +85,35 @@ public class ReactImageView extends GenericDraweeView {
|
|||
* Because the postprocessor uses a modified bitmap, that would just get cropped in
|
||||
* 'cover' mode, so we fall back to Fresco's normal implementation.
|
||||
*/
|
||||
private static final Matrix sMatrix = new Matrix();
|
||||
private static final Matrix sInverse = new Matrix();
|
||||
private ImageResizeMethod mResizeMethod = ImageResizeMethod.AUTO;
|
||||
|
||||
private class RoundedCornerPostprocessor extends BasePostprocessor {
|
||||
|
||||
void getRadii(Bitmap source, float[] computedCornerRadii, float[] mappedRadii) {
|
||||
mScaleType.getTransform(
|
||||
sMatrix,
|
||||
new Rect(0, 0, source.getWidth(), source.getHeight()),
|
||||
source.getWidth(),
|
||||
source.getHeight(),
|
||||
0.0f,
|
||||
0.0f);
|
||||
sMatrix.invert(sInverse);
|
||||
|
||||
mappedRadii[0] = sInverse.mapRadius(computedCornerRadii[0]);
|
||||
mappedRadii[1] = mappedRadii[0];
|
||||
|
||||
mappedRadii[2] = sInverse.mapRadius(computedCornerRadii[1]);
|
||||
mappedRadii[3] = mappedRadii[2];
|
||||
|
||||
mappedRadii[4] = sInverse.mapRadius(computedCornerRadii[2]);
|
||||
mappedRadii[5] = mappedRadii[4];
|
||||
|
||||
mappedRadii[6] = sInverse.mapRadius(computedCornerRadii[3]);
|
||||
mappedRadii[7] = mappedRadii[6];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(Bitmap output, Bitmap source) {
|
||||
cornerRadii(sComputedCornerRadii);
|
||||
|
@ -104,11 +131,15 @@ public class ReactImageView extends GenericDraweeView {
|
|||
paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
|
||||
Canvas canvas = new Canvas(output);
|
||||
|
||||
float[] radii = new float[8];
|
||||
|
||||
getRadii(source, sComputedCornerRadii, radii);
|
||||
|
||||
Path pathForBorderRadius = new Path();
|
||||
|
||||
pathForBorderRadius.addRoundRect(
|
||||
new RectF(0, 0, source.getWidth(), source.getHeight()),
|
||||
sComputedCornerRadii,
|
||||
radii,
|
||||
Path.Direction.CW);
|
||||
|
||||
canvas.drawPath(pathForBorderRadius, paint);
|
||||
|
|
Loading…
Reference in New Issue