home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / awt / Win32GraphicsConfig.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  6.8 KB  |  230 lines

  1. package sun.awt;
  2.  
  3. import java.awt.AWTException;
  4. import java.awt.BufferCapabilities;
  5. import java.awt.Component;
  6. import java.awt.Graphics;
  7. import java.awt.GraphicsConfiguration;
  8. import java.awt.GraphicsDevice;
  9. import java.awt.GraphicsEnvironment;
  10. import java.awt.Image;
  11. import java.awt.ImageCapabilities;
  12. import java.awt.Rectangle;
  13. import java.awt.Window;
  14. import java.awt.BufferCapabilities.FlipContents;
  15. import java.awt.geom.AffineTransform;
  16. import java.awt.image.BufferedImage;
  17. import java.awt.image.ColorModel;
  18. import java.awt.image.DirectColorModel;
  19. import java.awt.image.ImageObserver;
  20. import java.awt.image.VolatileImage;
  21. import java.awt.image.WritableRaster;
  22. import java.util.Hashtable;
  23. import sun.awt.image.OffScreenImage;
  24. import sun.awt.windows.WComponentPeer;
  25. import sun.java2d.InvalidPipeException;
  26. import sun.java2d.SurfaceData;
  27. import sun.java2d.loops.CompositeType;
  28. import sun.java2d.loops.RenderLoops;
  29. import sun.java2d.loops.SurfaceType;
  30. import sun.java2d.windows.Win32SurfaceData;
  31. import sun.java2d.windows.WinBackBuffer;
  32. import sun.java2d.windows.WindowsFlags;
  33.  
  34. public class Win32GraphicsConfig extends GraphicsConfiguration implements DisplayChangedListener {
  35.    protected Win32GraphicsDevice screen;
  36.    protected int visual;
  37.    protected RenderLoops solidloops;
  38.    private static BufferCapabilities bufferCaps;
  39.    private static ImageCapabilities imageCaps;
  40.    private SurfaceType sTypeOrig = null;
  41.    private static final int DCM_4444_RED_MASK = 3840;
  42.    private static final int DCM_4444_GRN_MASK = 240;
  43.    private static final int DCM_4444_BLU_MASK = 15;
  44.    private static final int DCM_4444_ALP_MASK = 61440;
  45.    static ColorModel translucentCM;
  46.  
  47.    private static native void initIDs();
  48.  
  49.    public static Win32GraphicsConfig getConfig(Win32GraphicsDevice var0, int var1) {
  50.       return new Win32GraphicsConfig(var0, var1);
  51.    }
  52.  
  53.    /** @deprecated */
  54.    @Deprecated
  55.    public Win32GraphicsConfig(GraphicsDevice var1, int var2) {
  56.       this.screen = (Win32GraphicsDevice)var1;
  57.       this.visual = var2;
  58.       ((Win32GraphicsDevice)var1).addDisplayChangedListener(this);
  59.    }
  60.  
  61.    public GraphicsDevice getDevice() {
  62.       return this.screen;
  63.    }
  64.  
  65.    public int getVisual() {
  66.       return this.visual;
  67.    }
  68.  
  69.    public synchronized RenderLoops getSolidLoops(SurfaceType var1) {
  70.       if (this.solidloops == null || this.sTypeOrig != var1) {
  71.          this.solidloops = SurfaceData.makeRenderLoops(SurfaceType.OpaqueColor, CompositeType.SrcNoEa, var1);
  72.          this.sTypeOrig = var1;
  73.       }
  74.  
  75.       return this.solidloops;
  76.    }
  77.  
  78.    public BufferedImage createCompatibleImage(int var1, int var2) {
  79.       ColorModel var3 = this.getColorModel();
  80.       WritableRaster var4 = var3.createCompatibleWritableRaster(var1, var2);
  81.       return new BufferedImage(var3, var4, var3.isAlphaPremultiplied(), (Hashtable)null);
  82.    }
  83.  
  84.    public synchronized ColorModel getColorModel() {
  85.       return this.screen.getColorModel();
  86.    }
  87.  
  88.    public ColorModel getDeviceColorModel() {
  89.       return this.screen.getDynamicColorModel();
  90.    }
  91.  
  92.    public ColorModel getColorModel(int var1) {
  93.       switch (var1) {
  94.          case 1:
  95.             return this.getColorModel();
  96.          case 2:
  97.             return new DirectColorModel(25, 16711680, 65280, 255, 16777216);
  98.          case 3:
  99.             return getTranslucentColorModel();
  100.          default:
  101.             return null;
  102.       }
  103.    }
  104.  
  105.    public static ColorModel getTranslucentColorModel() {
  106.       if (WindowsFlags.getD3DTexBpp() == 16) {
  107.          if (translucentCM == null) {
  108.             translucentCM = new DirectColorModel(16, 3840, 240, 15, 61440);
  109.          }
  110.  
  111.          return translucentCM;
  112.       } else {
  113.          return ColorModel.getRGBdefault();
  114.       }
  115.    }
  116.  
  117.    public AffineTransform getDefaultTransform() {
  118.       return new AffineTransform();
  119.    }
  120.  
  121.    public AffineTransform getNormalizingTransform() {
  122.       Win32GraphicsEnvironment var1 = (Win32GraphicsEnvironment)GraphicsEnvironment.getLocalGraphicsEnvironment();
  123.       double var2 = (double)var1.getXResolution() / (double)72.0F;
  124.       double var4 = (double)var1.getYResolution() / (double)72.0F;
  125.       return new AffineTransform(var2, (double)0.0F, (double)0.0F, var4, (double)0.0F, (double)0.0F);
  126.    }
  127.  
  128.    public String toString() {
  129.       return super.toString() + "[dev=" + this.screen + ",pixfmt=" + this.visual + "]";
  130.    }
  131.  
  132.    private native Rectangle getBounds(int var1);
  133.  
  134.    public Rectangle getBounds() {
  135.       return this.getBounds(this.screen.getScreen());
  136.    }
  137.  
  138.    public BufferCapabilities getBufferCapabilities() {
  139.       if (bufferCaps == null) {
  140.          if (WindowsFlags.isDDEnabled()) {
  141.             bufferCaps = new DDrawBufferCapabilities(this.getImageCapabilities());
  142.          } else {
  143.             bufferCaps = super.getBufferCapabilities();
  144.          }
  145.       }
  146.  
  147.       return bufferCaps;
  148.    }
  149.  
  150.    public ImageCapabilities getImageCapabilities() {
  151.       if (imageCaps == null) {
  152.          if (WindowsFlags.isDDEnabled()) {
  153.             imageCaps = new DDrawImageCapabilities();
  154.          } else {
  155.             imageCaps = super.getImageCapabilities();
  156.          }
  157.       }
  158.  
  159.       return imageCaps;
  160.    }
  161.  
  162.    public synchronized void displayChanged() {
  163.       this.solidloops = null;
  164.    }
  165.  
  166.    public void paletteChanged() {
  167.    }
  168.  
  169.    public SurfaceData createSurfaceData(WComponentPeer var1, int var2) {
  170.       return Win32SurfaceData.createData(var1, var2);
  171.    }
  172.  
  173.    public Image createAcceleratedImage(Component var1, int var2, int var3) {
  174.       ColorModel var4 = this.getColorModel(1);
  175.       WritableRaster var5 = var4.createCompatibleWritableRaster(var2, var3);
  176.       return new OffScreenImage(var1, var4, var5, var4.isAlphaPremultiplied());
  177.    }
  178.  
  179.    private boolean isFullScreenExclusive(Component var1) {
  180.       Win32GraphicsDevice var2;
  181.       for(var2 = (Win32GraphicsDevice)this.getDevice(); var1 != null && !(var1 instanceof Window); var1 = ((Component)var1).getParent()) {
  182.       }
  183.  
  184.       return var1 == var2.getFullScreenWindow() && var2.isDDEnabledOnDevice();
  185.    }
  186.  
  187.    public void assertOperationSupported(Component var1, int var2, BufferCapabilities var3) throws AWTException {
  188.       if (!this.isFullScreenExclusive(var1)) {
  189.          throw new AWTException("The operation requested is only supported on a full-screen exclusive window");
  190.       }
  191.    }
  192.  
  193.    public VolatileImage createBackBuffer(WComponentPeer var1) {
  194.       return new WinBackBuffer((Component)var1.getTarget(), (Win32SurfaceData)var1.getSurfaceData());
  195.    }
  196.  
  197.    public void flip(WComponentPeer var1, Component var2, VolatileImage var3, BufferCapabilities.FlipContents var4) {
  198.       int var5 = var2.getWidth();
  199.       int var6 = var2.getHeight();
  200.       if (var4 == FlipContents.COPIED) {
  201.          Graphics var11 = var2.getGraphics();
  202.          var11.drawImage(var3, 0, 0, var5, var6, (ImageObserver)null);
  203.          var11.dispose();
  204.       } else {
  205.          Win32SurfaceData var7 = (Win32SurfaceData)var1.getSurfaceData();
  206.  
  207.          try {
  208.             var7.flip(((WinBackBuffer)var3).getHWSurfaceData());
  209.          } catch (InvalidPipeException var10) {
  210.             Graphics var9 = var2.getGraphics();
  211.             var9.drawImage(var3, 0, 0, var5, var6, (ImageObserver)null);
  212.             var9.dispose();
  213.          }
  214.  
  215.          if (var4 == FlipContents.BACKGROUND) {
  216.             Graphics var8 = var3.getGraphics();
  217.             var8.setColor(var2.getBackground());
  218.             var8.fillRect(0, 0, var5, var6);
  219.             var8.dispose();
  220.          }
  221.  
  222.       }
  223.    }
  224.  
  225.    static {
  226.       initIDs();
  227.       translucentCM = null;
  228.    }
  229. }
  230.