[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