Mercurial > MadButterfly
diff Android/java/org/madbutterfly/MBView.java @ 572:dcd7adb2c0fc
Merge from Android_Skia
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Wed, 09 Jun 2010 17:30:09 +0800 |
parents | c468e397614d |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Android/java/org/madbutterfly/MBView.java Wed Jun 09 17:30:09 2010 +0800 @@ -0,0 +1,77 @@ +package org.madbutterfly; + +import android.view.SurfaceView; +import android.view.SurfaceHolder; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Bitmap; +import android.graphics.Paint; +import android.graphics.Xfermode; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; + +public class MBView extends SurfaceView { + redraw_man rdman; + Canvas cr, backend; + Bitmap cr_bmap, backend_bmap; + Paint copy_pnt; + int w, h; + + public MBView(Context context) { + super(context); + Paint paint; + Xfermode mode; + + rdman = null; + cr = null; + backend = null; + + mode = new PorterDuffXfermode(PorterDuff.Mode.SRC); + copy_pnt = new Paint(); + copy_pnt.setXfermode(mode); + w = 100; + h = 100; + } + + public redraw_man get_rdman() { + if(rdman != null) + return rdman; + + w = getWidth(); + h = getHeight(); + + cr_bmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); + cr = new Canvas(cr_bmap); + backend_bmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); + backend = new Canvas(backend_bmap); + + rdman = new redraw_man(cr, backend, this); + + return rdman; + } + + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + this.w = w; + this.h = h; + + if(rdman == null) { + get_rdman(); + return; + } + + cr_bmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); + cr.setBitmap(cr_bmap); + backend_bmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); + backend.setBitmap(backend_bmap); + } + + public void redraw() { + SurfaceHolder holder; + Canvas canvas; + + holder = getHolder(); + canvas = holder.lockCanvas(); + canvas.drawBitmap(backend_bmap, 0, 0, copy_pnt); + holder.unlockCanvasAndPost(canvas); + } +}