Merge "Remove needlessly thrown IOException." into lmp-dev

This commit is contained in:
Deepanshu Gupta
2014-11-10 18:54:19 +00:00
committed by Android (Google) Code Review
2 changed files with 52 additions and 59 deletions

View File

@ -141,7 +141,6 @@ public final class Bitmap_Delegate {
* Creates and returns a {@link Bitmap} initialized with the given stream content. * Creates and returns a {@link Bitmap} initialized with the given stream content.
* *
* @param input the stream from which to read the bitmap content * @param input the stream from which to read the bitmap content
* @param createFlags
* @param density the density associated with the bitmap * @param density the density associated with the bitmap
* *
* @see Bitmap#isPremultiplied() * @see Bitmap#isPremultiplied()
@ -166,8 +165,7 @@ public final class Bitmap_Delegate {
* @see Bitmap#isMutable() * @see Bitmap#isMutable()
* @see Bitmap#getDensity() * @see Bitmap#getDensity()
*/ */
public static Bitmap createBitmap(BufferedImage image, boolean isMutable, public static Bitmap createBitmap(BufferedImage image, boolean isMutable, Density density) {
Density density) throws IOException {
return createBitmap(image, getPremultipliedBitmapCreateFlags(isMutable), density); return createBitmap(image, getPremultipliedBitmapCreateFlags(isMutable), density);
} }
@ -175,7 +173,6 @@ public final class Bitmap_Delegate {
* Creates and returns a {@link Bitmap} initialized with the given {@link BufferedImage} * Creates and returns a {@link Bitmap} initialized with the given {@link BufferedImage}
* *
* @param image the bitmap content * @param image the bitmap content
* @param createFlags
* @param density the density associated with the bitmap * @param density the density associated with the bitmap
* *
* @see Bitmap#isPremultiplied() * @see Bitmap#isPremultiplied()
@ -183,7 +180,7 @@ public final class Bitmap_Delegate {
* @see Bitmap#getDensity() * @see Bitmap#getDensity()
*/ */
public static Bitmap createBitmap(BufferedImage image, Set<BitmapCreateFlags> createFlags, public static Bitmap createBitmap(BufferedImage image, Set<BitmapCreateFlags> createFlags,
Density density) throws IOException { Density density) {
// create a delegate with the given image. // create a delegate with the given image.
Bitmap_Delegate delegate = new Bitmap_Delegate(image, Config.ARGB_8888); Bitmap_Delegate delegate = new Bitmap_Delegate(image, Config.ARGB_8888);

View File

@ -57,63 +57,59 @@ public class RenderDrawable extends RenderAction<DrawableParams> {
public Result render() { public Result render() {
checkLock(); checkLock();
try { // get the drawable resource value
// get the drawable resource value DrawableParams params = getParams();
DrawableParams params = getParams(); HardwareConfig hardwareConfig = params.getHardwareConfig();
HardwareConfig hardwareConfig = params.getHardwareConfig(); ResourceValue drawableResource = params.getDrawable();
ResourceValue drawableResource = params.getDrawable();
// resolve it // resolve it
BridgeContext context = getContext(); BridgeContext context = getContext();
drawableResource = context.getRenderResources().resolveResValue(drawableResource); drawableResource = context.getRenderResources().resolveResValue(drawableResource);
if (drawableResource == null || if (drawableResource == null ||
drawableResource.getResourceType() != ResourceType.DRAWABLE) { drawableResource.getResourceType() != ResourceType.DRAWABLE) {
return Status.ERROR_NOT_A_DRAWABLE.createResult(); return Status.ERROR_NOT_A_DRAWABLE.createResult();
}
// create a simple FrameLayout
FrameLayout content = new FrameLayout(context);
// get the actual Drawable object to draw
Drawable d = ResourceHelper.getDrawable(drawableResource, context);
content.setBackground(d);
// set the AttachInfo on the root view.
AttachInfo_Accessor.setAttachInfo(content);
// measure
int w = hardwareConfig.getScreenWidth();
int h = hardwareConfig.getScreenHeight();
int w_spec = MeasureSpec.makeMeasureSpec(w, MeasureSpec.EXACTLY);
int h_spec = MeasureSpec.makeMeasureSpec(h, MeasureSpec.EXACTLY);
content.measure(w_spec, h_spec);
// now do the layout.
content.layout(0, 0, w, h);
// preDraw setup
AttachInfo_Accessor.dispatchOnPreDraw(content);
// draw into a new image
BufferedImage image = getImage(w, h);
// create an Android bitmap around the BufferedImage
Bitmap bitmap = Bitmap_Delegate.createBitmap(image,
true /*isMutable*/, hardwareConfig.getDensity());
// create a Canvas around the Android bitmap
Canvas canvas = new Canvas(bitmap);
canvas.setDensity(hardwareConfig.getDensity().getDpiValue());
// and draw
content.draw(canvas);
return Status.SUCCESS.createResult(image);
} catch (IOException e) {
return ERROR_UNKNOWN.createResult(e.getMessage(), e);
} }
// create a simple FrameLayout
FrameLayout content = new FrameLayout(context);
// get the actual Drawable object to draw
Drawable d = ResourceHelper.getDrawable(drawableResource, context);
content.setBackground(d);
// set the AttachInfo on the root view.
AttachInfo_Accessor.setAttachInfo(content);
// measure
int w = hardwareConfig.getScreenWidth();
int h = hardwareConfig.getScreenHeight();
int w_spec = MeasureSpec.makeMeasureSpec(w, MeasureSpec.EXACTLY);
int h_spec = MeasureSpec.makeMeasureSpec(h, MeasureSpec.EXACTLY);
content.measure(w_spec, h_spec);
// now do the layout.
content.layout(0, 0, w, h);
// preDraw setup
AttachInfo_Accessor.dispatchOnPreDraw(content);
// draw into a new image
BufferedImage image = getImage(w, h);
// create an Android bitmap around the BufferedImage
Bitmap bitmap = Bitmap_Delegate.createBitmap(image,
true /*isMutable*/, hardwareConfig.getDensity());
// create a Canvas around the Android bitmap
Canvas canvas = new Canvas(bitmap);
canvas.setDensity(hardwareConfig.getDensity().getDpiValue());
// and draw
content.draw(canvas);
return Status.SUCCESS.createResult(image);
} }
protected BufferedImage getImage(int w, int h) { protected BufferedImage getImage(int w, int h) {