Java-Gaming.org    
Featured games (91)
games approved by the League of Dukes
Games in Showcase (581)
games submitted by our members
Games in WIP (500)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  animated custom mouse cursor in LWJGL  (Read 338 times)
0 Members and 1 Guest are viewing this topic.
Offline MonsieurBlutbad

Senior Newbie





« Posted 2013-08-04 12:54:25 »

Hi all,

I have been trying some hours now and searching the forums, but I can't get my own custom Mouse Cursor Animation working in LWJGL.
Please take a look.

Here is my Code:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
private static Cursor getCursor() throws IOException, LWJGLException{
     int cursorWidth  = 32;
     int cursorHeight = 32;
     int numImages= 16;
     // note that image needs to be flipped, because OpenGL and image formats disagree about the coordinate system
    BufferedImage img = ImageIO.read(new File("data/img/input/mouseCursor.png"));
     int[] rgbs = new int[cursorWidth*cursorHeight];
     IntBuffer imageBuffer = IntBuffer.allocate(img.getWidth()*img.getHeight()/16*numImages);
     IntBuffer delays        = IntBuffer.allocate(cursorAmount);
     for( int y = 0; y < img.getHeight()/cursorHeight; y++){
        for (int x = 0; x < img.getWidth()/cursorWidth; x++){
           if( y*(img.getWidth()/cursorWidth)+x < numImages){
              imageBuffer.put(img.getRGB(x*cursorWidth, y*cursorHeight, cursorWidth, cursorHeight, rgbs, 0, cursorWidth));
              delays.put(100);
           }
        }
     }
     imageBuffer.rewind();
     delays.rewind();
     System.out.println(cursorWidth*cursorHeight*numImages+" "+imageBuffer.remaining());
     return new Cursor(cursorWidth,cursorHeight,0,cursorWidth-1,numImages,imageBuffer,delays);//,delays);
 }


When I run it, it gives me the following Error:
java.lang.IllegalArgumentException: width*height*numImages > images.remaining()

It is an error, that is thrown by the Cursor Constructor:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
   public Cursor(int width, int height, int xHotspot, int yHotspot, int numImages, IntBuffer images, IntBuffer delays) throws LWJGLException {
      synchronized (OpenGLPackageAccess.global_lock) {
         if ((getCapabilities() & CURSOR_ONE_BIT_TRANSPARENCY) == 0)
            throw new LWJGLException("Native cursors not supported");
         images = NondirectBufferWrapper.wrapBuffer(images, width*height*numImages);
         if (delays != null)
            delays = NondirectBufferWrapper.wrapBuffer(delays, numImages);
         if (!Mouse.isCreated())
            throw new IllegalStateException("Mouse must be created before creating cursor objects");
         if (width*height*numImages > images.remaining())
            throw new IllegalArgumentException("width*height*numImages > images.remaining()");
         if (xHotspot >= width || xHotspot < 0)
            throw new IllegalArgumentException("xHotspot > width || xHotspot < 0");
         if (yHotspot >= height || yHotspot < 0)
            throw new IllegalArgumentException("yHotspot > height || yHotspot < 0");

         Sys.initialize();

         // Hmm
        yHotspot = height - 1 - yHotspot;

         // create cursor (or cursors if multiple images supplied)
        cursors = createCursors(width, height, xHotspot, yHotspot, numImages, images, delays);
      }
   }


But note, that my console output says for width*height*numImages 16384 and for images.remaining() it says also 16384, so why does it trigger the error?

When I use only one Cursor and set delays to null, it is working by the way. The problem only occurs with more then 1 cursor images....

Thank you!
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

xsi3rr4x (55 views)
2014-04-15 18:08:23

BurntPizza (53 views)
2014-04-15 03:46:01

UprightPath (66 views)
2014-04-14 17:39:50

UprightPath (49 views)
2014-04-14 17:35:47

Porlus (66 views)
2014-04-14 15:48:38

tom_mai78101 (90 views)
2014-04-10 04:04:31

BurntPizza (151 views)
2014-04-08 23:06:04

tom_mai78101 (247 views)
2014-04-05 13:34:39

trollwarrior1 (204 views)
2014-04-04 12:06:45

CJLetsGame (211 views)
2014-04-01 02:16:10
List of Learning Resources
by SHC
2014-04-18 03:17:39

List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!