Mercurial > MadButterfly
view Android/java/org/madbutterfly/MBView.java @ 881:a17c4e231e54 abs_n_rel_center
Transform positions of radient paints.
cx, cy of radial and x1, y1, x2, y2 of linear gradient paints must be
transformed with aggregated matrix of painted shapes. Pattern to user
space transformation maybe used to get more precise color.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Sat, 25 Sep 2010 20:12:45 +0800 |
parents | c468e397614d |
children |
line wrap: on
line source
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); } }