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;
+    }
+}