Chromium Code Reviews| Index: platform_tools/android/apps/canvasproof/src/main/java/org/skia/canvasproof/HwuiPictureView.java |
| diff --git a/platform_tools/android/apps/canvasproof/src/main/java/org/skia/canvasproof/HwuiPictureView.java b/platform_tools/android/apps/canvasproof/src/main/java/org/skia/canvasproof/HwuiPictureView.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5dfbfa0b70feb06f9696ce0070c8571503ac33ac |
| --- /dev/null |
| +++ b/platform_tools/android/apps/canvasproof/src/main/java/org/skia/canvasproof/HwuiPictureView.java |
| @@ -0,0 +1,75 @@ |
| +/* |
| + * Copyright 2015 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +package org.skia.canvasproof; |
| + |
| +import android.content.Context; |
| +import android.graphics.Bitmap; |
| +import android.graphics.Canvas; |
| +import android.graphics.Color; |
| +import android.graphics.Paint; |
| +import android.graphics.Picture; |
| +import android.util.Log; |
| +import android.view.View; |
| +import java.io.IOException; |
| +import java.io.InputStream; |
| + |
| +public class HwuiPictureView extends View { |
| + private static final String TAG = "HwuiPictureView"; |
| + |
| + HwuiPictureView(Context context) { |
| + super(context); |
| + this.scale = 1.0f; |
| + } |
| + public void setScale(float s) { |
| + this.scale = s; |
| + } |
| + @SuppressWarnings("deprecation") // purposely using this |
|
tomhudson
2015/08/24 20:10:25
Tell us why.
(Also, this doesn't seem to be @overr
hal.canary
2015/08/31 21:16:56
removed.
Dang. This was taking an input stream r
|
| + public void setPicture(Picture p) { |
| + this.picture = p; |
| + this.invalidate(); |
| + } |
| + |
| + @Override |
| + protected void onDraw(Canvas canvas) { |
| + if (this.picture != null) { |
| + long now = System.currentTimeMillis(); |
| + canvas.save(); |
| + canvas.scale(scale, scale); |
| + HwuiPictureView.draw(canvas, this.picture); |
| + canvas.restore(); |
| + Log.v(TAG, String.format("RENDER TIME: %d", |
| + System.currentTimeMillis() - now)); |
| + } |
| + |
| + } |
| + |
| + static private void draw(Canvas canvas, Picture p) { |
| + if (android.os.Build.VERSION.SDK_INT > 22) { |
| + try { |
| + p.draw(canvas); |
| + return; |
| + } catch (java.lang.Exception e) { |
| + Log.e(TAG, "Exception while drawing picture in Hwui"); |
| + } |
| + } |
| + if (p.getWidth() > 0 && p.getHeight() > 0) { |
| + Bitmap bm = Bitmap.createBitmap(p.getWidth(), p.getHeight(), |
| + Bitmap.Config.ARGB_8888); |
| + p.draw(new Canvas(bm)); |
| + canvas.drawBitmap(bm, 0.0f, 0.0f, null); |
| + bm.recycle(); |
| + } else { |
| + Log.v(TAG, String.format("picture = (%d x %d)", |
| + p.getWidth(),p.getHeight())); |
| + } |
| + } |
| + Picture picture; |
| + float scale; |
| + Picture defaultPicture; |
| + |
| +} |