150 if (Toolkit.getDefaultToolkit() instanceof SunToolkit) {
151 final int buttonsNumber = ((SunToolkit)(Toolkit.getDefaultToolkit())).getNumberOfButtons();
152 for (int i = 0; i < buttonsNumber; i++){
153 tmpMask |= InputEvent.getMaskForButton(i+1);
154 }
155 }
156 }
157 tmpMask |= InputEvent.BUTTON1_MASK|
158 InputEvent.BUTTON2_MASK|
159 InputEvent.BUTTON3_MASK|
160 InputEvent.BUTTON1_DOWN_MASK|
161 InputEvent.BUTTON2_DOWN_MASK|
162 InputEvent.BUTTON3_DOWN_MASK;
163 LEGAL_BUTTON_MASK = tmpMask;
164 }
165
166 /* determine if the security policy allows Robot's to be created */
167 private void checkRobotAllowed() {
168 SecurityManager security = System.getSecurityManager();
169 if (security != null) {
170 security.checkPermission(SecurityConstants.CREATE_ROBOT_PERMISSION);
171 }
172 }
173
174 /* check if the given device is a screen device */
175 private void checkIsScreenDevice(GraphicsDevice device) {
176 if (device == null || device.getType() != GraphicsDevice.TYPE_RASTER_SCREEN) {
177 throw new IllegalArgumentException("not a valid screen device");
178 }
179 }
180
181 private transient Object anchor = new Object();
182
183 static class RobotDisposer implements sun.java2d.DisposerRecord {
184 private final RobotPeer peer;
185 public RobotDisposer(RobotPeer peer) {
186 this.peer = peer;
187 }
188 public void dispose() {
189 if (peer != null) {
190 peer.dispose();
449 bandmasks[2] = screenCapCM.getBlueMask();
450
451 raster = Raster.createPackedRaster(buffer, translatedRect.width, translatedRect.height, translatedRect.width, bandmasks, null);
452 SunWritableRaster.makeTrackable(buffer);
453
454 image = new BufferedImage(screenCapCM, raster, false, null);
455
456 return image;
457 }
458
459 private static void checkValidRect(Rectangle rect) {
460 if (rect.width <= 0 || rect.height <= 0) {
461 throw new IllegalArgumentException("Rectangle width and height must be > 0");
462 }
463 }
464
465 private static void checkScreenCaptureAllowed() {
466 SecurityManager security = System.getSecurityManager();
467 if (security != null) {
468 security.checkPermission(
469 SecurityConstants.READ_DISPLAY_PIXELS_PERMISSION);
470 }
471 }
472
473 /*
474 * Called after an event is generated
475 */
476 private void afterEvent() {
477 autoWaitForIdle();
478 autoDelay();
479 }
480
481 /**
482 * Returns whether this Robot automatically invokes <code>waitForIdle</code>
483 * after generating an event.
484 * @return Whether <code>waitForIdle</code> is automatically called
485 */
486 public synchronized boolean isAutoWaitForIdle() {
487 return isAutoWaitForIdle;
488 }
489
|
150 if (Toolkit.getDefaultToolkit() instanceof SunToolkit) {
151 final int buttonsNumber = ((SunToolkit)(Toolkit.getDefaultToolkit())).getNumberOfButtons();
152 for (int i = 0; i < buttonsNumber; i++){
153 tmpMask |= InputEvent.getMaskForButton(i+1);
154 }
155 }
156 }
157 tmpMask |= InputEvent.BUTTON1_MASK|
158 InputEvent.BUTTON2_MASK|
159 InputEvent.BUTTON3_MASK|
160 InputEvent.BUTTON1_DOWN_MASK|
161 InputEvent.BUTTON2_DOWN_MASK|
162 InputEvent.BUTTON3_DOWN_MASK;
163 LEGAL_BUTTON_MASK = tmpMask;
164 }
165
166 /* determine if the security policy allows Robot's to be created */
167 private void checkRobotAllowed() {
168 SecurityManager security = System.getSecurityManager();
169 if (security != null) {
170 security.checkPermission(SecurityConstants.AWT.CREATE_ROBOT_PERMISSION);
171 }
172 }
173
174 /* check if the given device is a screen device */
175 private void checkIsScreenDevice(GraphicsDevice device) {
176 if (device == null || device.getType() != GraphicsDevice.TYPE_RASTER_SCREEN) {
177 throw new IllegalArgumentException("not a valid screen device");
178 }
179 }
180
181 private transient Object anchor = new Object();
182
183 static class RobotDisposer implements sun.java2d.DisposerRecord {
184 private final RobotPeer peer;
185 public RobotDisposer(RobotPeer peer) {
186 this.peer = peer;
187 }
188 public void dispose() {
189 if (peer != null) {
190 peer.dispose();
449 bandmasks[2] = screenCapCM.getBlueMask();
450
451 raster = Raster.createPackedRaster(buffer, translatedRect.width, translatedRect.height, translatedRect.width, bandmasks, null);
452 SunWritableRaster.makeTrackable(buffer);
453
454 image = new BufferedImage(screenCapCM, raster, false, null);
455
456 return image;
457 }
458
459 private static void checkValidRect(Rectangle rect) {
460 if (rect.width <= 0 || rect.height <= 0) {
461 throw new IllegalArgumentException("Rectangle width and height must be > 0");
462 }
463 }
464
465 private static void checkScreenCaptureAllowed() {
466 SecurityManager security = System.getSecurityManager();
467 if (security != null) {
468 security.checkPermission(
469 SecurityConstants.AWT.READ_DISPLAY_PIXELS_PERMISSION);
470 }
471 }
472
473 /*
474 * Called after an event is generated
475 */
476 private void afterEvent() {
477 autoWaitForIdle();
478 autoDelay();
479 }
480
481 /**
482 * Returns whether this Robot automatically invokes <code>waitForIdle</code>
483 * after generating an event.
484 * @return Whether <code>waitForIdle</code> is automatically called
485 */
486 public synchronized boolean isAutoWaitForIdle() {
487 return isAutoWaitForIdle;
488 }
489
|