• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2015 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 package org.skia.canvasproof;
9 
10 import android.content.Context;
11 import android.graphics.Bitmap;
12 import android.graphics.Canvas;
13 import android.graphics.Color;
14 import android.graphics.Paint;
15 import android.graphics.Picture;
16 import android.util.Log;
17 import android.view.View;
18 import java.io.IOException;
19 import java.io.InputStream;
20 
21 public class HwuiPictureView extends View {
22     private static final String TAG = "HwuiPictureView";
23     private Picture picture;
24     private float scale;
25     private Picture defaultPicture;
26 
27     public boolean fullTime;
28 
HwuiPictureView(Context context)29     HwuiPictureView(Context context) {
30         super(context);
31         this.scale = 1.0f;
32     }
setScale(float s)33     public void setScale(float s) {
34         this.scale = s;
35     }
setPicture(Picture p)36     public void setPicture(Picture p) {
37         this.picture = p;
38         this.invalidate();
39     }
40 
41     @Override
onDraw(Canvas canvas)42     protected void onDraw(Canvas canvas) {
43         if (this.picture != null) {
44             canvas.save();
45             canvas.scale(scale, scale);
46             HwuiPictureView.draw(canvas, this.picture);
47             canvas.restore();
48             if (fullTime) {
49                 this.invalidate();
50             }
51         }
52     }
53 
draw(Canvas canvas, Picture p)54     static private void draw(Canvas canvas, Picture p) {
55         if (android.os.Build.VERSION.SDK_INT > 22) {
56             try {
57                 canvas.drawPicture(p);
58                 return;
59             } catch (java.lang.Exception e) {
60                 Log.e(TAG, "Exception while drawing picture in Hwui");
61             }
62         }
63         if (p.getWidth() > 0 && p.getHeight() > 0) {
64             // Fallback to software rendering.
65             Bitmap bm = Bitmap.createBitmap(p.getWidth(), p.getHeight(),
66                                             Bitmap.Config.ARGB_8888);
67             (new Canvas(bm)).drawPicture(p);
68             canvas.drawBitmap(bm, 0.0f, 0.0f, null);
69             bm.recycle();
70         }
71     }
72 }
73