home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / CustomCursor.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.5 KB  |  60 lines

  1. package sun.awt;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Cursor;
  5. import java.awt.Dimension;
  6. import java.awt.Image;
  7. import java.awt.MediaTracker;
  8. import java.awt.Point;
  9. import java.awt.Toolkit;
  10. import java.awt.image.ImageProducer;
  11. import java.awt.image.PixelGrabber;
  12.  
  13. public abstract class CustomCursor extends Cursor {
  14.    protected Image image;
  15.  
  16.    public CustomCursor(Image var1, Point var2, String var3) throws IndexOutOfBoundsException {
  17.       super(var3);
  18.       this.image = var1;
  19.       Toolkit var4 = Toolkit.getDefaultToolkit();
  20.       Canvas var5 = new Canvas();
  21.       MediaTracker var6 = new MediaTracker(var5);
  22.       var6.addImage(var1, 0);
  23.  
  24.       try {
  25.          var6.waitForAll();
  26.       } catch (InterruptedException var15) {
  27.       }
  28.  
  29.       int var7 = var1.getWidth(var5);
  30.       int var8 = var1.getHeight(var5);
  31.       if (var6.isErrorAny() || var7 < 0 || var8 < 0) {
  32.          var2.x = var2.y = 0;
  33.       }
  34.  
  35.       Dimension var9 = var4.getBestCursorSize(var7, var8);
  36.       if (var9.width != var7 || var9.height != var8) {
  37.          var1 = var1.getScaledInstance(var9.width, var9.height, 1);
  38.          var7 = var9.width;
  39.          var8 = var9.height;
  40.       }
  41.  
  42.       if (var2.x < var7 && var2.y < var8 && var2.x >= 0 && var2.y >= 0) {
  43.          int[] var10 = new int[var7 * var8];
  44.          ImageProducer var11 = var1.getSource();
  45.          PixelGrabber var12 = new PixelGrabber(var11, 0, 0, var7, var8, var10, 0, var7);
  46.  
  47.          try {
  48.             var12.grabPixels();
  49.          } catch (InterruptedException var14) {
  50.          }
  51.  
  52.          this.createNativeCursor(this.image, var10, var7, var8, var2.x, var2.y);
  53.       } else {
  54.          throw new IndexOutOfBoundsException("invalid hotSpot");
  55.       }
  56.    }
  57.  
  58.    protected abstract void createNativeCursor(Image var1, int[] var2, int var3, int var4, int var5, int var6);
  59. }
  60.