Source for gnu.java.awt.peer.qt.QtScreenDeviceConfiguration

   1: /* QtScreenDeviceConfiguration.java --
   2:    Copyright (C)  2005  Free Software Foundation, Inc.
   3: 
   4: This file is part of GNU Classpath.
   5: 
   6: GNU Classpath is free software; you can redistribute it and/or modify
   7: it under the terms of the GNU General Public License as published by
   8: the Free Software Foundation; either version 2, or (at your option)
   9: any later version.
  10: 
  11: GNU Classpath is distributed in the hope that it will be useful, but
  12: WITHOUT ANY WARRANTY; without even the implied warranty of
  13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14: General Public License for more details.
  15: 
  16: You should have received a copy of the GNU General Public License
  17: along with GNU Classpath; see the file COPYING.  If not, write to the
  18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  19: 02110-1301 USA.
  20: 
  21: Linking this library statically or dynamically with other modules is
  22: making a combined work based on this library.  Thus, the terms and
  23: conditions of the GNU General Public License cover the whole
  24: combination.
  25: 
  26: As a special exception, the copyright holders of this library give you
  27: permission to link this library with independent modules to produce an
  28: executable, regardless of the license terms of these independent
  29: modules, and to copy and distribute the resulting executable under
  30: terms of your choice, provided that you also meet, for each linked
  31: independent module, the terms and conditions of the license of that
  32: module.  An independent module is a module which is not derived from
  33: or based on this library.  If you modify this library, you may extend
  34: this exception to your version of the library, but you are not
  35: obligated to do so.  If you do not wish to do so, delete this
  36: exception statement from your version. */
  37: 
  38: package gnu.java.awt.peer.qt;
  39: 
  40: import java.awt.DisplayMode;
  41: import java.awt.ImageCapabilities;
  42: import java.awt.GraphicsConfiguration;
  43: import java.awt.GraphicsDevice;
  44: import java.awt.GraphicsConfigTemplate;
  45: import java.awt.Rectangle;
  46: import java.awt.image.BufferedImage;
  47: import java.awt.image.ColorModel;
  48: import java.awt.image.VolatileImage;
  49: import java.awt.geom.AffineTransform;
  50: 
  51: public class QtScreenDeviceConfiguration extends GraphicsConfiguration {
  52:   
  53:   private QtScreenDevice owner;
  54:   private Rectangle bounds;
  55:   private double dpiX, dpiY;
  56:   private int depth;
  57: 
  58:   public QtScreenDeviceConfiguration(QtScreenDevice owner)
  59:   {
  60:     this.owner = owner;
  61:     bounds = owner.getBounds();
  62:     dpiX = owner.getDpiX();
  63:     dpiY = owner.getDpiY();
  64:     depth = owner.depth();
  65:   }
  66: 
  67:   public BufferedImage createCompatibleImage(int width, int height)
  68:   {
  69:     switch( depth )
  70:       {
  71:       case 24:
  72:     return new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
  73:       case 16:
  74:     return new BufferedImage(width, height, 
  75:                  BufferedImage.TYPE_USHORT_565_RGB);
  76:       case 8:
  77:     return new BufferedImage(width, height, BufferedImage.TYPE_BYTE_INDEXED);
  78:       default:
  79:       case 32:
  80:     return new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  81:       }
  82:   }
  83: 
  84:   public BufferedImage createCompatibleImage(int width, int height, int transparency)
  85:   {
  86:     // FIXME: Take the transpareny flag into account? 
  87:     // For now, ignore it and just use an alpha channel.
  88:     if(depth == 32)
  89:       return new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  90:     return createCompatibleImage(width, height);
  91:   }
  92: 
  93:   public VolatileImage createCompatibleVolatileImage(int width, int height)
  94:   {
  95:     return new QtVolatileImage( width, height );
  96:   }
  97:   
  98:   public VolatileImage createCompatibleVolatileImage(int width, int height, 
  99:                              ImageCapabilities caps)
 100:   {
 101:     return createCompatibleVolatileImage( width, height );
 102:   }
 103: 
 104:   public Rectangle getBounds()
 105:   {
 106:     return bounds;
 107:   }
 108: 
 109:   public ColorModel getColorModel()
 110:   {
 111:     // FIXME?
 112:     return QtToolkit.getDefaultToolkit().getColorModel();
 113:   }
 114: 
 115:   public ColorModel getColorModel(int transparency)
 116:   {
 117:     // FIXME?
 118:     return QtToolkit.getDefaultToolkit().getColorModel();
 119:   }
 120: 
 121:   public AffineTransform getDefaultTransform()
 122:   {
 123:     return new AffineTransform();
 124:   }
 125: 
 126:   public GraphicsDevice    getDevice()
 127:   {
 128:     return owner;
 129:   }
 130: 
 131:   /**
 132:    * Returns the transform which transforms from this display's resolution
 133:    * to a 72 DPI resolution.
 134:    */
 135:   public AffineTransform getNormalizingTransform()
 136:   {
 137:     AffineTransform nTrans = new AffineTransform();
 138:     nTrans.scale( 72.0 / dpiX, 72.0 / dpiY );
 139:     return nTrans;
 140:   }
 141: 
 142:   public VolatileImage createCompatibleVolatileImage(int width, int height, 
 143:                              int transparency)
 144:   {
 145:     return createCompatibleVolatileImage(width, height);
 146:   }
 147: }