< prev index next >

src/java.desktop/share/classes/java/awt/Robot.java

Print this page




 494 
 495         int[] bandmasks = new int[3];
 496         bandmasks[0] = screenCapCM.getRedMask();
 497         bandmasks[1] = screenCapCM.getGreenMask();
 498         bandmasks[2] = screenCapCM.getBlueMask();
 499 
 500         // need to sync the toolkit prior to grabbing the pixels since in some
 501         // cases rendering to the screen may be delayed
 502         Toolkit.getDefaultToolkit().sync();
 503 
 504         GraphicsConfiguration gc = GraphicsEnvironment
 505                 .getLocalGraphicsEnvironment()
 506                 .getDefaultScreenDevice().
 507                 getDefaultConfiguration();
 508         gc = SunGraphicsEnvironment.getGraphicsConfigurationAtPoint(
 509                 gc, screenRect.getCenterX(), screenRect.getCenterY());
 510 
 511         AffineTransform tx = gc.getDefaultTransform();
 512         double uiScaleX = tx.getScaleX();
 513         double uiScaleY = tx.getScaleY();
 514         int pixels[];
 515 
 516         if (uiScaleX == 1 && uiScaleY == 1) {
 517 
 518             pixels = peer.getRGBPixels(screenRect);
 519             buffer = new DataBufferInt(pixels, pixels.length);
 520 
 521             bandmasks[0] = screenCapCM.getRedMask();
 522             bandmasks[1] = screenCapCM.getGreenMask();
 523             bandmasks[2] = screenCapCM.getBlueMask();
 524 
 525             raster = Raster.createPackedRaster(buffer, screenRect.width,
 526                     screenRect.height, screenRect.width, bandmasks, null);
 527             SunWritableRaster.makeTrackable(buffer);
 528 
 529             highResolutionImage = new BufferedImage(screenCapCM, raster,
 530                     false, null);
 531             imageArray = new BufferedImage[1];
 532             imageArray[0] = highResolutionImage;
 533 
 534         } else {
 535 
 536             int sX = (int) Math.floor(screenRect.x * uiScaleX);
 537             int sY = (int) Math.floor(screenRect.y * uiScaleY);
 538             int sWidth = (int) Math.ceil(screenRect.width * uiScaleX);
 539             int sHeight = (int) Math.ceil(screenRect.height * uiScaleY);
 540             int temppixels[];
 541             Rectangle scaledRect = new Rectangle(sX, sY, sWidth, sHeight);
 542             temppixels = peer.getRGBPixels(scaledRect);
 543 
 544             // HighResolutionImage
 545             pixels = temppixels;
 546             buffer = new DataBufferInt(pixels, pixels.length);
 547             raster = Raster.createPackedRaster(buffer, scaledRect.width,
 548                     scaledRect.height, scaledRect.width, bandmasks, null);
 549             SunWritableRaster.makeTrackable(buffer);
 550 
 551             highResolutionImage = new BufferedImage(screenCapCM, raster,
 552                     false, null);
 553 
 554 
 555             // LowResolutionImage
 556             lowResolutionImage = new BufferedImage(screenRect.width,
 557                     screenRect.height, highResolutionImage.getType());
 558             Graphics2D g = lowResolutionImage.createGraphics();
 559             g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
 560                     RenderingHints.VALUE_INTERPOLATION_BILINEAR);




 494 
 495         int[] bandmasks = new int[3];
 496         bandmasks[0] = screenCapCM.getRedMask();
 497         bandmasks[1] = screenCapCM.getGreenMask();
 498         bandmasks[2] = screenCapCM.getBlueMask();
 499 
 500         // need to sync the toolkit prior to grabbing the pixels since in some
 501         // cases rendering to the screen may be delayed
 502         Toolkit.getDefaultToolkit().sync();
 503 
 504         GraphicsConfiguration gc = GraphicsEnvironment
 505                 .getLocalGraphicsEnvironment()
 506                 .getDefaultScreenDevice().
 507                 getDefaultConfiguration();
 508         gc = SunGraphicsEnvironment.getGraphicsConfigurationAtPoint(
 509                 gc, screenRect.getCenterX(), screenRect.getCenterY());
 510 
 511         AffineTransform tx = gc.getDefaultTransform();
 512         double uiScaleX = tx.getScaleX();
 513         double uiScaleY = tx.getScaleY();
 514         int[] pixels;
 515 
 516         if (uiScaleX == 1 && uiScaleY == 1) {
 517 
 518             pixels = peer.getRGBPixels(screenRect);
 519             buffer = new DataBufferInt(pixels, pixels.length);
 520 
 521             bandmasks[0] = screenCapCM.getRedMask();
 522             bandmasks[1] = screenCapCM.getGreenMask();
 523             bandmasks[2] = screenCapCM.getBlueMask();
 524 
 525             raster = Raster.createPackedRaster(buffer, screenRect.width,
 526                     screenRect.height, screenRect.width, bandmasks, null);
 527             SunWritableRaster.makeTrackable(buffer);
 528 
 529             highResolutionImage = new BufferedImage(screenCapCM, raster,
 530                     false, null);
 531             imageArray = new BufferedImage[1];
 532             imageArray[0] = highResolutionImage;
 533 
 534         } else {
 535 
 536             int sX = (int) Math.floor(screenRect.x * uiScaleX);
 537             int sY = (int) Math.floor(screenRect.y * uiScaleY);
 538             int sWidth = (int) Math.ceil(screenRect.width * uiScaleX);
 539             int sHeight = (int) Math.ceil(screenRect.height * uiScaleY);
 540             int[] temppixels;
 541             Rectangle scaledRect = new Rectangle(sX, sY, sWidth, sHeight);
 542             temppixels = peer.getRGBPixels(scaledRect);
 543 
 544             // HighResolutionImage
 545             pixels = temppixels;
 546             buffer = new DataBufferInt(pixels, pixels.length);
 547             raster = Raster.createPackedRaster(buffer, scaledRect.width,
 548                     scaledRect.height, scaledRect.width, bandmasks, null);
 549             SunWritableRaster.makeTrackable(buffer);
 550 
 551             highResolutionImage = new BufferedImage(screenCapCM, raster,
 552                     false, null);
 553 
 554 
 555             // LowResolutionImage
 556             lowResolutionImage = new BufferedImage(screenRect.width,
 557                     screenRect.height, highResolutionImage.getType());
 558             Graphics2D g = lowResolutionImage.createGraphics();
 559             g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
 560                     RenderingHints.VALUE_INTERPOLATION_BILINEAR);


< prev index next >