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..872089c9d304fb68adc00cff1a5ae2f2e5e0e1bf |
--- /dev/null |
+++ b/platform_tools/android/apps/canvasproof/src/main/java/org/skia/canvasproof/HwuiPictureView.java |
@@ -0,0 +1,72 @@ |
+/* |
+ * 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"; |
+ private Picture picture; |
+ private float scale; |
+ private Picture defaultPicture; |
+ |
+ public boolean fullTime; |
+ |
+ HwuiPictureView(Context context) { |
+ super(context); |
+ this.scale = 1.0f; |
+ } |
+ public void setScale(float s) { |
+ this.scale = s; |
+ } |
+ public void setPicture(Picture p) { |
+ this.picture = p; |
+ this.invalidate(); |
+ } |
+ |
+ @Override |
+ protected void onDraw(Canvas canvas) { |
+ if (this.picture != null) { |
+ canvas.save(); |
+ canvas.scale(scale, scale); |
+ HwuiPictureView.draw(canvas, this.picture); |
+ canvas.restore(); |
+ if (fullTime) { |
+ this.invalidate(); |
+ } |
+ } |
+ } |
+ |
+ static private void draw(Canvas canvas, Picture p) { |
+ if (android.os.Build.VERSION.SDK_INT > 22) { |
+ try { |
+ canvas.drawPicture(p); |
+ return; |
+ } catch (java.lang.Exception e) { |
+ Log.e(TAG, "Exception while drawing picture in Hwui"); |
+ } |
+ } |
+ if (p.getWidth() > 0 && p.getHeight() > 0) { |
+ // Fallback to software rendering. |
+ Bitmap bm = Bitmap.createBitmap(p.getWidth(), p.getHeight(), |
+ Bitmap.Config.ARGB_8888); |
+ (new Canvas(bm)).drawPicture(p); |
+ canvas.drawBitmap(bm, 0.0f, 0.0f, null); |
+ bm.recycle(); |
+ } |
+ } |
+} |