[Fencommits] libvob: Eventhandler stub, simple test which do not work and twids.

Matti J. Katila majukati at cc.jyu.fi
Tue Mar 7 02:05:15 EET 2006


Tue Mar  7 01:04:13 EET 2006  Matti J. Katila <majukati at cc.jyu.fi>
  * Eventhandler stub, simple test which do not work and twids.

diff -rN -u libvob-old/org/nongnu/libvob/impl/lwjgl/LWJGLUpdateManager.java libvob-new/org/nongnu/libvob/impl/lwjgl/LWJGLUpdateManager.java
--- libvob-old/org/nongnu/libvob/impl/lwjgl/LWJGLUpdateManager.java	2006-03-07 02:05:12.442118359 +0200
+++ libvob-new/org/nongnu/libvob/impl/lwjgl/LWJGLUpdateManager.java	2006-03-07 01:34:37.000000000 +0200
@@ -1,6 +1,11 @@
 package org.nongnu.libvob.impl.lwjgl;
 
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.input.Mouse;
+import org.lwjgl.opengl.Display;
 import org.nongnu.libvob.AbstractUpdateManager;
+import org.nongnu.libvob.Binder;
+import org.nongnu.libvob.VobMouseEvent;
 
 public class LWJGLUpdateManager extends AbstractUpdateManager {
 
@@ -13,13 +18,49 @@
 	super(r);
     }
 
+    /* There can be only one screen in lwjgl so we can put the binder here.
+     */
+    public Binder binder;
+
     protected boolean handleEvents(boolean waitForEvent) {
-	
-	
-	return false;
+	// check wheher the window is minimized or under others..
+	if (!Display.isVisible())
+	{
+	    // sleep sometime perhaps
+	    // return false;
+	}
+
+	boolean eventsWereReceived = false;
+	Keyboard.poll();
+	while (Keyboard.next())
+	{
+	    // stupid impl.
+	    eventsWereReceived = true;
+	    int key = Keyboard.getEventKey();
+	    System.out.println("key event:: name: "+Keyboard.getKeyName(key)+
+		    ", char: "+ Keyboard.getEventCharacter()+
+		    ", state: "+Keyboard.getEventKeyState());
+	    binder.keystroke(Keyboard.getKeyName(key));
+	}
+	Mouse.poll();
+	while (Mouse.next())
+	{
+	    // stupid impl.
+	    eventsWereReceived = true;
+	    int x = Mouse.getX(), y = Mouse.getY(), z = Mouse.getDWheel();
+	    int button = Mouse.getEventButton();
+	    int state = VobMouseEvent.MOUSE_PRESSED;
+	    int modifiers = 0;
+	    int type = VobMouseEvent.MOUSE_MOVED;
+	    VobMouseEvent ev = new VobMouseEvent(type, x,y,z, modifiers , button);
+	    System.out.println(ev);
+	    binder.mouse(ev);
+	}
+	return eventsWereReceived;
     }
 
-    protected void interruptEventloop() { }
+    protected void interruptEventloop() { 
+    }
 
     protected void synchronizeToolkit() { }
 
diff -rN -u libvob-old/org/nongnu/libvob/impl/lwjgl/LWJGL_API.java libvob-new/org/nongnu/libvob/impl/lwjgl/LWJGL_API.java
--- libvob-old/org/nongnu/libvob/impl/lwjgl/LWJGL_API.java	2006-03-07 02:05:12.443118208 +0200
+++ libvob-new/org/nongnu/libvob/impl/lwjgl/LWJGL_API.java	2006-03-07 02:05:13.594944052 +0200
@@ -1,12 +1,16 @@
 package org.nongnu.libvob.impl.lwjgl;
 
+import java.io.File;
+
 import org.nongnu.libvob.GraphicsAPI;
 import org.nongnu.libvob.TextStyle;
+import org.nongnu.libvob.gl.impl.lwjgl.mosaictext.LWJGL_Text;
 
 public class LWJGL_API extends GraphicsAPI {
 
     public void startUpdateManager(Runnable r) {
 	LWJGLUpdateManager.startUpdateManager(r);
+	LWJGL_Text.getInstance().setImageDirectory(new File("./tmp/"));
     }
 
     public Window createWindow() {
@@ -18,40 +22,7 @@
     }
 
     public TextStyle getTextStyle(String family, int style, int size) {
-	return new TextStyle(){
-
-	    public float getScaleByHeight(float h) {
-		return 0;
-	    }
-
-	    public TextStyle getScaledStyle(float h) {
-		return this;
-	    }
-
-	    public float getWidth(String s, float scale) {
-		return 0;
-	    }
-
-	    public float getWidth(char[] chars, int offs, int len, float scale) {
-		return 0;
-	    }
-
-	    public float getHeight(float scale) {
-		return 0;
-	    }
-
-	    public float getAscent(float scale) {
-		return 0;
-	    }
-
-	    public float getDescent(float scale) {
-		return 0;
-	    }
-
-	    public float getLeading(float scale) {
-		return 0;
-	    }
-	};
+	return LWJGL_Text.getInstance().create(family, style, size);
     }
 
 }
diff -rN -u libvob-old/org/nongnu/libvob/impl/lwjgl/LWJGL_Screen.java libvob-new/org/nongnu/libvob/impl/lwjgl/LWJGL_Screen.java
--- libvob-old/org/nongnu/libvob/impl/lwjgl/LWJGL_Screen.java	2006-03-07 02:05:12.444118057 +0200
+++ libvob-new/org/nongnu/libvob/impl/lwjgl/LWJGL_Screen.java	2006-03-07 01:34:37.000000000 +0200
@@ -1,8 +1,12 @@
 package org.nongnu.libvob.impl.lwjgl;
 
 import java.awt.Dimension;
+import java.awt.image.PixelGrabber;
 
 import org.lwjgl.LWJGLException;
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.input.Mouse;
+import org.lwjgl.opengl.AWTGLCanvas;
 import org.lwjgl.opengl.Display;
 import org.lwjgl.opengl.DisplayMode;
 import org.nongnu.libvob.AbstractUpdateManager;
@@ -36,6 +40,8 @@
 	    Display.setDisplayMode(new DisplayMode(1, 1));
 	    Display.setFullscreen(false);
 	    Display.create();
+	    Mouse.create();
+	    Keyboard.create();
 	    Display.setTitle("Grazy Little Window");
 	} catch (LWJGLException e) {
 	    e.printStackTrace();
@@ -44,6 +50,8 @@
 
     public void finalize() throws Throwable {
 	super.finalize();
+	Keyboard.destroy();
+	Mouse.destroy();
 	Display.destroy();
     }
 
@@ -124,7 +132,16 @@
     }
 
     public int[] readPixels(int x, int y, int w, int h) {
-	return null;
+	int[] pix = new int[w*h];
+//	if(dbg) p("Readpixels: "+x+" "+y+" "+w+" "+h+" "+cache);
+	PixelGrabber pg = new PixelGrabber(((AWTGLCanvas)Display.getDrawable()).createImage(w,h).getSource(),
+			x, y, w, h, pix, 0, w);
+	try {
+	    pg.grabPixels();
+	} catch(InterruptedException e) {
+	    throw new Error("Interrupted readpixels");
+	}
+	return pix;
     }
 
     public void setLocation(int x, int y, int w, int h) {
@@ -139,10 +156,8 @@
     public void setCursor(String name) {
     }
 
-    Binder binder;
-
     public void registerBinder(Binder s) {
-	binder = s;
+	((LWJGLUpdateManager)AbstractUpdateManager.getInstance()).binder = s;
     }
 
     public void addTimeout(int ms, Object o) {
diff -rN -u libvob-old/org/nongnu/libvob/impl/lwjgl/LWJGL_SimpleVobTester.java libvob-new/org/nongnu/libvob/impl/lwjgl/LWJGL_SimpleVobTester.java
--- libvob-old/org/nongnu/libvob/impl/lwjgl/LWJGL_SimpleVobTester.java	1970-01-01 02:00:00.000000000 +0200
+++ libvob-new/org/nongnu/libvob/impl/lwjgl/LWJGL_SimpleVobTester.java	2006-03-07 01:34:37.000000000 +0200
@@ -0,0 +1,86 @@
+// (c): Matti J. Katila
+
+
+package org.nongnu.libvob.impl.lwjgl;
+
+import java.awt.Color;
+
+import org.nongnu.libvob.AbstractUpdateManager;
+import org.nongnu.libvob.Binder;
+import org.nongnu.libvob.GraphicsAPI;
+import org.nongnu.libvob.Screen;
+import org.nongnu.libvob.Shower;
+import org.nongnu.libvob.VobMouseEvent;
+import org.nongnu.libvob.VobScene;
+import org.nongnu.libvob.GraphicsAPI.Window;
+import org.nongnu.libvob.impl.WindowAnimationImpl;
+import org.nongnu.libvob.vobs.RectVob;
+import org.nongnu.libvob.vobs.SolidBackdropVob;
+import org.nongnu.libvob.vobs.TestSpotVob;
+
+public class LWJGL_SimpleVobTester implements Runnable {
+
+    public static void main(String[] args) {
+	System.setProperty("vob.api", "lwjgl");
+	System.setProperty("java.library.path","../depends/");
+	System.setProperties(System.getProperties());
+	GraphicsAPI.getInstance().startUpdateManager(new LWJGL_SimpleVobTester());
+    }
+    
+    public static void main(Runnable c) {
+	System.setProperty("vob.api", "lwjgl");
+	System.setProperty("java.library.path","../depends/");
+	System.setProperties(System.getProperties());
+	GraphicsAPI.getInstance().startUpdateManager(c);
+    }
+    
+    
+
+    protected VobScene gen(VobScene vs) {
+	return vs;
+    }
+    
+    
+    public void run() {
+	
+	final Window window = GraphicsAPI.getInstance().createWindow();
+	window.setLocation(0,0,200,200);
+    
+
+	
+	WindowAnimationImpl windowAnim = new WindowAnimationImpl(window, new Binder(){
+	    public void keystroke(String s) {
+	    }
+	    public void mouse(VobMouseEvent e) {
+	    }
+	    public void setScreen(Screen s) {
+	    }
+	    public void timeout(Object id) {
+	    }
+	    public void repaint() {
+	    }
+	    public void windowClosed() {
+	    }}, new Shower(){
+		public VobScene generate(VobScene vs) {
+		    vs = window.createVobScene();
+		    return gen(vs);
+/*
+		    vs.put(new SolidBackdropVob(new Color(.9f, .8f, .5f)));
+		    int cs = 0;
+		    vs.put(new TestSpotVob(0,0,0, Color.BLUE), vs.translateCS(0, "bar", 15,15));
+		    vs.put(new RectVob(Color.BLACK, 15), cs=vs.boxCS(0, "foo", 10,20,20,50,50));
+		    vs.put(new RectVob(Color.MAGENTA, 5), cs=vs.boxCS(cs, "foo", 10,50,50,25,25));
+		    vs.put(new RectVob(Color.RED, 1), cs=vs.scaleCS(cs, "foo", 2,1.5f));
+		    return vs;
+*/
+		}
+		public void setScreen(Screen s) {
+		}}, false);
+
+
+	AbstractUpdateManager.addWindow((Screen)windowAnim);
+	AbstractUpdateManager.chg();
+
+    }
+
+}
diff -rN -u libvob-old/org/nongnu/libvob/impl/lwjgl/SimpleTest.java libvob-new/org/nongnu/libvob/impl/lwjgl/SimpleTest.java
--- libvob-old/org/nongnu/libvob/impl/lwjgl/SimpleTest.java	1970-01-01 02:00:00.000000000 +0200
+++ libvob-new/org/nongnu/libvob/impl/lwjgl/SimpleTest.java	2006-03-07 02:05:13.586945262 +0200
@@ -0,0 +1,84 @@
+// (c): Matti J. Katila
+
+
+package org.nongnu.libvob.impl.lwjgl;
+
+import java.awt.Color;
+
+import org.nongnu.libvob.AbstractUpdateManager;
+import org.nongnu.libvob.Binder;
+import org.nongnu.libvob.GraphicsAPI;
+import org.nongnu.libvob.Screen;
+import org.nongnu.libvob.Shower;
+import org.nongnu.libvob.Vob;
+import org.nongnu.libvob.VobMouseEvent;
+import org.nongnu.libvob.VobScene;
+import org.nongnu.libvob.GraphicsAPI.Window;
+import org.nongnu.libvob.gl.GL;
+import org.nongnu.libvob.gl.GLRen;
+import org.nongnu.libvob.gl.Ren;
+import org.nongnu.libvob.gl.Paper;
+import org.nongnu.libvob.gl.PaperMill;
+import org.nongnu.libvob.gl.GLRen.PaperQuad;
+import org.nongnu.libvob.impl.WindowAnimationImpl;
+import org.nongnu.libvob.vobs.RectVob;
+import org.nongnu.libvob.vobs.SolidBackdropVob;
+import org.nongnu.libvob.vobs.TestSpotVob;
+import org.nongnu.libvob.vobs.TextVob;
+
+public class SimpleTest implements Runnable {
+
+    public static void main(String[] args) {
+	System.setProperty("vob.api", "lwjgl");
+	System.setProperty("java.library.path","../depends/");
+	System.setProperties(System.getProperties());
+	GraphicsAPI.getInstance().startUpdateManager(new SimpleTest());
+    }
+
+    public void run() {
+	
+	final Window window = GraphicsAPI.getInstance().createWindow();
+	window.setLocation(0,0,200,200);
+    
+
+	
+	WindowAnimationImpl windowAnim = new WindowAnimationImpl(window, new Binder(){
+	    public void keystroke(String s) {
+	    }
+	    public void mouse(VobMouseEvent e) {
+	    }
+	    public void setScreen(Screen s) {
+	    }
+	    public void timeout(Object id) {
+	    }
+	    public void repaint() {
+	    }
+	    public void windowClosed() {
+	    }}, new Shower(){
+		public VobScene generate(VobScene vs) {
+		    vs = window.createVobScene();
+		    vs.put(new SolidBackdropVob(new Color(.9f, .8f, .5f)));
+		    int cs = 0;
+		    vs.put(new TestSpotVob(0,0,0, Color.BLUE), vs.translateCS(0, "bar", 15,15));
+		    vs.put(new RectVob(Color.BLACK, 15), cs=vs.boxCS(0, "foo", 10,20,20,50,50));
+		    vs.put(new RectVob(Color.MAGENTA, 5), cs=vs.boxCS(cs, "foo", 10,50,50,25,25));
+		    vs.put(new RectVob(Color.RED, 1), cs=vs.scaleCS(cs, "foo", 2,1.5f));
+		    vs.put(new TextVob(GraphicsAPI.getInstance().getTextStyle("sans", 0, 12), "foobar"), cs=vs.scaleCS(cs, "t", 10,10));
+		    
+		    PaperMill.Paper paper = PaperMill.getInstance().getPaper(42);
+		    Ren.PaperQuad pq = Ren.createPaperQuad(paper, 0, 0, 1, 1, 1);
+		    int cs1 = vs.orthoCS(0, "1", 0, 0, 0, 200, 200);
+		    vs.map.put(pq, cs1, 0);
+
+		    return vs;
+		}
+		public void setScreen(Screen s) {
+		}}, false);
+
+
+	AbstractUpdateManager.addWindow((Screen)windowAnim);
+	AbstractUpdateManager.chg();
+
+    }
+
+}




More information about the Fencommits mailing list