
org.robolectric.shadows.ShadowBitmapRegionDecoder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of framework Show documentation
Show all versions of framework Show documentation
An alternative Android testing framework.
The newest version!
package org.robolectric.shadows;
import android.graphics.*;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.util.ReflectionHelpers;
import java.io.*;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static org.robolectric.RuntimeEnvironment.getApiLevel;
import static org.robolectric.Shadows.shadowOf;
@Implements(BitmapRegionDecoder.class)
public class ShadowBitmapRegionDecoder {
private int width;
private int height;
@Implementation
public static BitmapRegionDecoder newInstance(byte[] data, int offset, int length, boolean isShareable) throws IOException {
return fillWidthAndHeight(newInstance(), new ByteArrayInputStream(data));
}
@Implementation
public static BitmapRegionDecoder newInstance(FileDescriptor fd, boolean isShareable) throws IOException {
return fillWidthAndHeight(newInstance(), new FileInputStream(fd));
}
@Implementation
public static BitmapRegionDecoder newInstance(InputStream is, boolean isShareable) throws IOException {
return fillWidthAndHeight(newInstance(), is);
}
@Implementation
public static BitmapRegionDecoder newInstance(String pathName, boolean isShareable) throws IOException {
return fillWidthAndHeight(newInstance(), new FileInputStream(pathName));
}
private static BitmapRegionDecoder fillWidthAndHeight(BitmapRegionDecoder bitmapRegionDecoder, InputStream is) {
ShadowBitmapRegionDecoder shadowDecoder = shadowOf(bitmapRegionDecoder);
Point imageSize = ImageUtil.getImageSizeFromStream(is);
if (imageSize != null) {
shadowDecoder.width = imageSize.x;
shadowDecoder.height = imageSize.y;
}
return bitmapRegionDecoder;
}
@Implementation
public int getWidth() {
return width;
}
@Implementation
public int getHeight() {
return height;
}
@Implementation
public Bitmap decodeRegion(Rect rect, BitmapFactory.Options options) {
return Bitmap.createBitmap(rect.width(), rect.height(),
options.inPreferredConfig != null ? options.inPreferredConfig : Bitmap.Config.ARGB_8888);
}
private static BitmapRegionDecoder newInstance() {
if (getApiLevel() >= LOLLIPOP) {
return ReflectionHelpers.callConstructor(BitmapRegionDecoder.class,
new ReflectionHelpers.ClassParameter<>(long.class, 0L));
} else {
return ReflectionHelpers.callConstructor(BitmapRegionDecoder.class,
new ReflectionHelpers.ClassParameter<>(int.class, 0));
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy