Home | History | Annotate | Download | only in gui
      1 /*
      2  * Copyright (c) 2009-2010 jMonkeyEngine
      3  * All rights reserved.
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions are
      7  * met:
      8  *
      9  * * Redistributions of source code must retain the above copyright
     10  *   notice, this list of conditions and the following disclaimer.
     11  *
     12  * * Redistributions in binary form must reproduce the above copyright
     13  *   notice, this list of conditions and the following disclaimer in the
     14  *   documentation and/or other materials provided with the distribution.
     15  *
     16  * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
     17  *   may be used to endorse or promote products derived from this software
     18  *   without specific prior written permission.
     19  *
     20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     31  */
     32 
     33 package jme3test.gui;
     34 
     35 import com.jme3.app.SimpleApplication;
     36 import com.jme3.input.RawInputListener;
     37 import com.jme3.input.event.*;
     38 import com.jme3.math.FastMath;
     39 import com.jme3.system.AppSettings;
     40 import com.jme3.texture.Texture;
     41 import com.jme3.texture.Texture2D;
     42 import com.jme3.ui.Picture;
     43 
     44 public class TestSoftwareMouse extends SimpleApplication {
     45 
     46     private Picture cursor;
     47 
     48     private RawInputListener inputListener = new RawInputListener() {
     49 
     50         private float x = 0, y = 0;
     51 
     52         public void beginInput() {
     53         }
     54         public void endInput() {
     55         }
     56         public void onJoyAxisEvent(JoyAxisEvent evt) {
     57         }
     58         public void onJoyButtonEvent(JoyButtonEvent evt) {
     59         }
     60         public void onMouseMotionEvent(MouseMotionEvent evt) {
     61             x += evt.getDX();
     62             y += evt.getDY();
     63 
     64             // Prevent mouse from leaving screen
     65             AppSettings settings = TestSoftwareMouse.this.settings;
     66             x = FastMath.clamp(x, 0, settings.getWidth());
     67             y = FastMath.clamp(y, 0, settings.getHeight());
     68 
     69             // adjust for hotspot
     70             cursor.setPosition(x, y - 64);
     71         }
     72         public void onMouseButtonEvent(MouseButtonEvent evt) {
     73         }
     74         public void onKeyEvent(KeyInputEvent evt) {
     75         }
     76         public void onTouchEvent(TouchEvent evt) {
     77         }
     78     };
     79 
     80     public static void main(String[] args){
     81         TestSoftwareMouse app = new TestSoftwareMouse();
     82 
     83 //        AppSettings settings = new AppSettings(true);
     84 //        settings.setFrameRate(60);
     85 //        app.setSettings(settings);
     86 
     87         app.start();
     88     }
     89 
     90     @Override
     91     public void simpleInitApp() {
     92         flyCam.setEnabled(false);
     93 //        inputManager.setCursorVisible(false);
     94 
     95         Texture tex = assetManager.loadTexture("Interface/Logo/Cursor.png");
     96 
     97         cursor = new Picture("cursor");
     98         cursor.setTexture(assetManager, (Texture2D) tex, true);
     99         cursor.setWidth(64);
    100         cursor.setHeight(64);
    101         guiNode.attachChild(cursor);
    102 
    103         inputManager.addRawInputListener(inputListener);
    104 
    105 //        Image img = tex.getImage();
    106 //        ByteBuffer data = img.getData(0);
    107 //        IntBuffer image = BufferUtils.createIntBuffer(64 * 64);
    108 //        for (int y = 0; y < 64; y++){
    109 //            for (int x = 0; x < 64; x++){
    110 //                int rgba = data.getInt();
    111 //                image.put(rgba);
    112 //            }
    113 //        }
    114 //        image.clear();
    115 //
    116 //        try {
    117 //            Cursor cur = new Cursor(64, 64, 2, 62, 1, image, null);
    118 //            Mouse.setNativeCursor(cur);
    119 //        } catch (LWJGLException ex) {
    120 //            Logger.getLogger(TestSoftwareMouse.class.getName()).log(Level.SEVERE, null, ex);
    121 //        }
    122     }
    123 }
    124