From 947964e341e710b9078d89e68353fc73065450e5 Mon Sep 17 00:00:00 2001 From: Brian Matzon Date: Sun, 2 Mar 2003 18:57:50 +0000 Subject: [PATCH] simple mouse test added --- src/java/org/lwjgl/test/input/MouseTest.java | 192 +++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 src/java/org/lwjgl/test/input/MouseTest.java diff --git a/src/java/org/lwjgl/test/input/MouseTest.java b/src/java/org/lwjgl/test/input/MouseTest.java new file mode 100644 index 00000000..2e22ecdf --- /dev/null +++ b/src/java/org/lwjgl/test/input/MouseTest.java @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2002 Lightweight Java Game Library Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'Lightweight Java Game Library' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.test.input; + +import org.lwjgl.Display; +import org.lwjgl.DisplayMode; +import org.lwjgl.input.Mouse; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL; +import org.lwjgl.opengl.GLU; +import org.lwjgl.vector.Vector2f; + +/** + * $Id$ + *
+ * Mouse test + * + * @author Brian Matzon + * @version $Revision$ + */ +public class MouseTest { + + /** OpenGL instance */ + private GL gl; + + /** GLU instance */ + private GLU glu; + + /** position of quad to draw */ + private Vector2f position = new Vector2f(320.0f, 240.0f); + + /** Display mode selected */ + private DisplayMode displayMode; + + /** Creates a new instance of MouseTest */ + public MouseTest() { + } + + private void initialize() { + // find first display mode that allows us 640*480*16 + DisplayMode[] modes = Display.getAvailableDisplayModes(); + for (int i = 0; i < modes.length; i++) { + if (modes[i].width == 640 + && modes[i].height == 480 + && modes[i].bpp >= 16) { + displayMode = modes[i]; + break; + } + } + + // create display and opengl + setupDisplay(false); + + try { + Keyboard.create(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(-1); + } + } + + private void setupDisplay(boolean fullscreen) { + try { + Display.create(displayMode, fullscreen, "MouseTest"); + gl = new GL(); + gl.create(); + + glu = new GLU(gl); + } catch (Exception e) { + e.printStackTrace(); + System.exit(-1); + } + + initializeOpenGL(); + } + + private void initializeOpenGL() { + gl.clearColor(0.0f, 0.0f, 0.0f, 0.0f); + glu.ortho2D(0.0, Display.getWidth(), 0, Display.getHeight()); + } + + public void executeTest() { + initialize(); + + createMouse(); + + wiggleMouse(); + + Mouse.destroy(); + gl.destroy(); + Display.destroy(); + } + + private void createMouse() { + try { + Mouse.create(); + } catch (Exception e) { + e.printStackTrace(); + System.exit(-1); + } + } + + private void wiggleMouse() { + while (!Display.isCloseRequested()) { + if(Display.isMinimized()) { + continue; + } + + Mouse.poll(); + + position.x += Mouse.dx; + position.y -= Mouse.dy; + + if(position.x<0) { + position.x = 0; + } else if (position.x>Display.getWidth()-60) { + position.x = Display.getWidth()-60; + } + + if(position.y < 0) { + position.y = 0; + } else if (position.y>Display.getHeight()-30) { + position.y = Display.getHeight()-30; + } + + + render(); + + gl.swapBuffers(); + + Keyboard.poll(); + } + } + + private void render() { + gl.clear(GL.COLOR_BUFFER_BIT); + + gl.pushMatrix(); + gl.begin(GL.POLYGON); + { + gl.color3f(0.0f, 1.0f, 1.0f); + gl.vertex2f(position.x + 0.0f, position.y + 0.0f); + + gl.color3f(1.0f, 0.0f, 1.0f); + gl.vertex2f(position.x + 0.0f, position.y + 30.0f); + gl.vertex2f(position.x + 40.0f, position.y + 30.0f); + + gl.color3f(1.0f, 1.0f, 0.0f); + gl.vertex2f(position.x + 60.0f, position.y + 15.f); + gl.vertex2f(position.x + 40.0f, position.y + 0.0f); + } + gl.end(); + gl.popMatrix(); + } + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + MouseTest mt = new MouseTest(); + mt.executeTest(); + } +} \ No newline at end of file