Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (539)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (603)
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 559 times)
0 Members and 1 Guest are viewing this topic.
Offline MonsieurBlutbad

Senior Newbie





« Posted 2013-08-04 10: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.

rwatson462 (37 views)
2014-12-15 09:26:44

Mr.CodeIt (31 views)
2014-12-14 19:50:38

BurntPizza (62 views)
2014-12-09 22:41:13

BurntPizza (99 views)
2014-12-08 04:46:31

JscottyBieshaar (59 views)
2014-12-05 12:39:02

SHC (74 views)
2014-12-03 16:27:13

CopyableCougar4 (77 views)
2014-11-29 21:32:03

toopeicgaming1999 (138 views)
2014-11-26 15:22:04

toopeicgaming1999 (127 views)
2014-11-26 15:20:36

toopeicgaming1999 (38 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
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!