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

   1: /* QtScreenDeviceConfiguration.java --
   2:    Copyright (C)  2005, 2006  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.ImageCapabilities;
  41: import java.awt.GraphicsConfiguration;
  42: import java.awt.GraphicsDevice;
  43: import java.awt.Rectangle;
  44: import java.awt.image.BufferedImage;
  45: import java.awt.image.ColorModel;
  46: import java.awt.image.VolatileImage;
  47: import java.awt.geom.AffineTransform;
  48: 
  49: public class QtScreenDeviceConfiguration extends GraphicsConfiguration {
  50: 
  51:   private QtScreenDevice owner;
  52:   private Rectangle bounds;
  53:   private double dpiX, dpiY;
  54:   private int depth;
  55: 
  56:   public QtScreenDeviceConfiguration(QtScreenDevice owner)
  57:   {
  58:     this.owner = owner;
  59:     bounds = owner.getBounds();
  60:     dpiX = owner.getDpiX();
  61:     dpiY = owner.getDpiY();
  62:     depth = owner.depth();
  63:   }
  64: 
  65:   public BufferedImage createCompatibleImage(int width, int height)
  66:   {
  67:     switch( depth )
  68:       {
  69:       case 24:
  70:         return new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
  71:       case 16:
  72:         return new BufferedImage(width, height,
  73:                                  BufferedImage.TYPE_USHORT_565_RGB);
  74:       case 8:
  75:         return new BufferedImage(width, height, BufferedImage.TYPE_BYTE_INDEXED);
  76:       default:
  77:       case 32:
  78:         return new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  79:       }
  80:   }
  81: 
  82:   public BufferedImage createCompatibleImage(int width, int height, int transparency)
  83:   {
  84:     // FIXME: Take the transpareny flag into account?
  85:     // For now, ignore it and just use an alpha channel.
  86:     if(depth == 32)
  87:       return new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  88:     return createCompatibleImage(width, height);
  89:   }
  90: 
  91:   public VolatileImage createCompatibleVolatileImage(int width, int height)
  92:   {
  93:     return new QtVolatileImage( width, height );
  94:   }
  95: 
  96:   public VolatileImage createCompatibleVolatileImage(int width, int height,
  97:                                                      ImageCapabilities caps)
  98:   {
  99:     return createCompatibleVolatileImage( width, height );
 100:   }
 101: 
 102:   public Rectangle getBounds()
 103:   {
 104:     return bounds;
 105:   }
 106: 
 107:   public ColorModel getColorModel()
 108:   {
 109:     // FIXME?
 110:     return QtToolkit.getDefaultToolkit().getColorModel();
 111:   }
 112: 
 113:   public ColorModel getColorModel(int transparency)
 114:   {
 115:     // FIXME?
 116:     return QtToolkit.getDefaultToolkit().getColorModel();
 117:   }
 118: 
 119:   public AffineTransform getDefaultTransform()
 120:   {
 121:     return new AffineTransform();
 122:   }
 123: 
 124:   public GraphicsDevice getDevice()
 125:   {
 126:     return owner;
 127:   }
 128: 
 129:   /**
 130:    * Returns the transform which transforms from this display's resolution
 131:    * to a 72 DPI resolution.
 132:    */
 133:   public AffineTransform getNormalizingTransform()
 134:   {
 135:     AffineTransform nTrans = new AffineTransform();
 136:     nTrans.scale( 72.0 / dpiX, 72.0 / dpiY );
 137:     return nTrans;
 138:   }
 139: 
 140:   public VolatileImage createCompatibleVolatileImage(int width, int height,
 141:                                                      int transparency)
 142:   {
 143:     return createCompatibleVolatileImage(width, height);
 144:   }
 145: }