/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
final Rectangle bounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getBounds();
}
public CCustomCursor(final Image cursor, final Point hotSpot, final String name) throws IndexOutOfBoundsException, HeadlessException {
super(name);
// This chunk of code is copied from sun.awt.CustomCursor
// Make sure image is fully loaded.
try {
} catch (final InterruptedException e) {}
// Fix for bug 4212593 The Toolkit.createCustomCursor does not
// check absence of the image of cursor
// If the image is invalid, the cursor will be hidden (made completely
// transparent).
} else {
// Scale image to nearest supported size
}
}
// NOTE: this was removed for 3169146, but in 1.5 the JCK tests for an exception and fails if one isn't thrown.
// See what JBuilder does.
// Verify that the hotspot is within cursor bounds.
throw new IndexOutOfBoundsException("invalid hotSpot");
}
// Must normalize the hotspot
} else if (fHotspot.x < 0) {
fHotspot.x = 0;
}
} else if (fHotspot.y < 0) {
fHotspot.y = 0;
}
}
g.dispose();
return img;
}
// With Panther, cursors have no limit on their size. So give the client their
// preferred size, but no larger than half the dimensions of the main screen
// This will allow large cursors, but not cursors so large that they cover the
// screen. Since solaris nor windows allow cursors this big, this shouldn't be
// a limitation.
// JCK triggers an overflow in the int -- if we get a bizarre value normalize it.
final Dimension d = new Dimension(Math.max(1, Math.abs(preferredWidth)), Math.max(1, Math.abs(preferredHeight)));
return new Dimension(Math.min(d.width, maxCursorSize.width), Math.min(d.height, maxCursorSize.height));
}
// Called from native when the cursor is set
long getImageData() {
}
try {
// Something unexpected happened: CCustomCursor constructor
// takes care of invalid cursor images, yet createFromImage()
// failed to do its job. Return null to keep the cursor unchanged.
return 0L;
} else {
}
} catch (IllegalArgumentException iae) {
// see comment above
return 0L;
}
}
return fHotspot;
}
}