Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e07e163 authored by Leon Scroggins III's avatar Leon Scroggins III Committed by Leon Scroggins
Browse files

Fix scaling + cropping in ImageDecoder

Bug: 141735646
Test: I9ab9115ee4cbc74549f7b914d99b667c700199d5

When using a subset, do not change desiredWidth/desiredHeight, which
changes the scale used below. Instead, just change the size of the
SkBitmap, so it looks correct.

Change-Id: Ie9682afb9324bcdfc81f1d9664f9fcc3891f8939
parent a3b702fa
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -374,16 +374,17 @@ static jobject ImageDecoder_nDecodeBitmap(JNIEnv* env, jobject /*clazz*/, jlong
    if (scale || jsubset) {
        int translateX = 0;
        int translateY = 0;
        SkImageInfo scaledInfo;
        if (jsubset) {
            SkIRect subset;
            GraphicsJNI::jrect_to_irect(env, jsubset, &subset);

            translateX = -subset.fLeft;
            translateY = -subset.fTop;
            desiredWidth  =  subset.width();
            desiredHeight =  subset.height();
            scaledInfo = bitmapInfo.makeWH(subset.width(), subset.height());
        } else {
            scaledInfo = bitmapInfo.makeWH(desiredWidth, desiredHeight);
        }
        SkImageInfo scaledInfo = bitmapInfo.makeWH(desiredWidth, desiredHeight);
        SkBitmap scaledBm;
        if (!scaledBm.setInfo(scaledInfo)) {
            doThrowIOE(env, "Failed scaled setInfo");