Mercurial > MadButterfly
diff Android/java/org/madbutterfly/paint.java @ 493:1b6228092a57 Android_Skia
Java code for MadButterfly JNI.
This is Java code that access MadButterfly JNI interface.
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Thu, 26 Nov 2009 15:02:51 +0800 |
parents | |
children | 2d7df44e6299 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Android/java/org/madbutterfly/paint.java Thu Nov 26 15:02:51 2009 +0800 @@ -0,0 +1,70 @@ +package org.madbutterfly; + +import java.util.ArrayList; + +class paint { + protected int addr; + redraw_man rdman; + ArrayList members; + + public paint(redraw_man rdman, int addr) { + this.addr = addr; + this.rdman = rdman; + members = new ArrayList(); + } + + protected void invalid() { + addr = 0; + } + + protected void finalize() { + if(addr != 0) + _jni.rdman_paint_free(rdman._rdman_addr, addr); + } + + public void stroke(shape sh) { + no_stroke(sh); + + if(sh.fill != this) + members.add(sh); + + sh.stroke = this; + + _jni.rdman_paint_stroke(rdman._rdman_addr, addr, sh.addr); + } + + public void fill(shape sh) { + no_fill(sh); + + if(sh.stroke != this) + members.add(sh); + + sh.fill = this; + + _jni.rdman_paint_fill(rdman._rdman_addr, addr, sh.addr); + } + + public boolean is_empty() { + return members.size() == 0; + } + + public static void no_stroke(shape sh) { + int i; + + if(sh.stroke != null && sh.stroke != sh.fill) { + i = sh.stroke.members.indexOf(sh); + sh.stroke.members.remove(i); + } + sh.stroke = null; + } + + public static void no_fill(shape sh) { + int i; + + if(sh.fill != null && sh.stroke != sh.fill) { + i = sh.stroke.members.indexOf(sh); + sh.stroke.members.remove(i); + } + sh.fill = null; + } +}