X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=libjava%2Fgnu%2Fawt%2Fxlib%2FXGraphicsConfiguration.java;fp=libjava%2Fgnu%2Fawt%2Fxlib%2FXGraphicsConfiguration.java;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=69cc6e2b5e27abfe489ee997c7a4fbef898c3ec2;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/libjava/gnu/awt/xlib/XGraphicsConfiguration.java b/libjava/gnu/awt/xlib/XGraphicsConfiguration.java deleted file mode 100644 index 69cc6e2b..00000000 --- a/libjava/gnu/awt/xlib/XGraphicsConfiguration.java +++ /dev/null @@ -1,367 +0,0 @@ -/* Copyright (C) 2000 Free Software Foundation - - This file is part of libgcj. - -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ - -package gnu.awt.xlib; - -import java.awt.GraphicsConfiguration; -import java.awt.Rectangle; -import java.awt.Graphics2D; -import java.awt.Graphics; -import java.awt.Point; -import java.awt.Color; -import java.awt.color.ColorSpace; -import java.awt.image.*; -import java.awt.geom.AffineTransform; -import gnu.gcj.xlib.GC; -import gnu.gcj.xlib.Drawable; -import gnu.gcj.xlib.Window; -import gnu.gcj.xlib.XImage; -import gnu.gcj.xlib.Visual; -import gnu.gcj.xlib.Colormap; -import gnu.gcj.xlib.XColor; -import gnu.gcj.xlib.Screen; -import gnu.gcj.xlib.Display; -import gnu.java.awt.Buffers; -import java.util.Hashtable; - -public class XGraphicsConfiguration extends GraphicsConfiguration -{ - //public abstract GraphicsDevice getDevice(); - - Visual visual; - int format; - Colormap colormap; - ColorModel imageCM; - ColorModel pixelCM; - - public XGraphicsConfiguration(Visual visual) - { - this.visual = visual; - } - - public BufferedImage createCompatibleImage(int width, int height) - { - XImage ximg = new XImage(visual, width, height, - false // do not auto allocate memory - ); - - Point origin = new Point(0, 0); - WritableRaster raster = createRasterForXImage(ximg, origin); - - /* This is not a good way of doing this. Multiple toolkits may - want to share the BufferedImage. */ - Hashtable props = new Hashtable(); - props.put("gnu.gcj.xlib.XImage", ximg); - props.put("java.awt.GraphicsConfiguration", this); - - BufferedImage bimg = new BufferedImage(imageCM,raster, false, props); - - DataBuffer dataB = raster.getDataBuffer(); - attachData(ximg, dataB, 0); - return bimg; - } - - WritableRaster createRasterForXImage(XImage ximage, Point origin) - { - if (imageCM == null) prepareColorModel(ximage); - - /* - This will not work, since it creates a sample model that - does not necessarily match the format of the XImage. - - WritableRaster raster = - imageCM.createCompatibleWritableRaster(width, height); */ - - // Create a sample model matching the XImage: - - SampleModel imageSM = null; - - int width = ximage.getWidth(); - int height = ximage.getHeight(); - int bitsPerPixel = ximage.getBitsPerPixel(); - int dataType = - Buffers.smallestAppropriateTransferType(bitsPerPixel); - int bitsPerDataElement = DataBuffer.getDataTypeSize(dataType); - int scanlineStride = ximage.getBytesPerLine()*8/bitsPerDataElement; - - if (imageCM instanceof IndexColorModel) - { - int[] bandOffsets = {0}; - imageSM = new ComponentSampleModel(dataType, - width, height, - 1, // pixel stride - scanlineStride, - bandOffsets); - } - else if (imageCM instanceof PackedColorModel) - { - PackedColorModel pcm = (PackedColorModel) imageCM; - int[] masks = pcm.getMasks(); - - imageSM = new SinglePixelPackedSampleModel(dataType, - width, height, - scanlineStride, - masks); - } - - if (imageSM == null) - { - throw new UnsupportedOperationException("creating sample model " + - "for " + imageCM + - " not implemented"); - } - - WritableRaster raster = Raster.createWritableRaster(imageSM, origin); - return raster; - } - - - - /** - * Attach a the memory of a data buffer to an XImage - * structure. [This method is not gnu.awt.xlib specific, and should - * maybe be moved to a different location.] - * - * @param offset Offset to data. The given offset does not include - * data buffer offset, which will also be added. */ - static void attachData(XImage ximage, DataBuffer dataB, int offset) - { - offset += dataB.getOffset(); - switch (dataB.getDataType()) - { - case DataBuffer.TYPE_BYTE: - ximage.setData(((DataBufferByte) dataB).getData(), offset); - break; - case DataBuffer.TYPE_USHORT: - ximage.setData(((DataBufferUShort) dataB).getData(), offset); - break; - case DataBuffer.TYPE_INT: - ximage.setData(((DataBufferInt) dataB).getData(), offset); - break; - default: - throw - new UnsupportedOperationException("Do not know how to " + - "set data for data " + - "type " + - dataB.getDataType()); - } - } - - void prepareColorModel(XImage ximage) - { - format = ximage.getFormat(); - int bitsPerPixel = ximage.getBitsPerPixel(); - switch (format) { - case XImage.ZPIXMAP_FORMAT: - calcZPixmapModels(bitsPerPixel); - break; - - default: - throw new UnsupportedOperationException("unimplemented format"); - } - } - - void calcZPixmapModels(int bitsPerPixel) - { - switch (visual.getVisualClass()) - { - case Visual.VC_TRUE_COLOR: - calcDecomposedRGBModels(bitsPerPixel); - break; - case Visual.VC_PSEUDO_COLOR: - calcPseudoColorModels(bitsPerPixel); - break; - default: - String msg = "unimplemented visual class"; - throw new UnsupportedOperationException(msg); - } - } - - void calcDecomposedRGBModels(int bitsPerPixel) - { - int dataType = Buffers.smallestAppropriateTransferType(bitsPerPixel); - - - if (DataBuffer.getDataTypeSize(dataType) == bitsPerPixel) - { - ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); - - imageCM = new DirectColorModel(cs, - visual.getDepth(), - visual.getRedMask(), - visual.getGreenMask(), - visual.getBlueMask(), - 0, // no alpha - false, - dataType); - } - else - { - throw new - UnsupportedOperationException("unimplemented bits per pixel"); - } - } - - void calcPseudoColorModels(int bitsPerPixel) - { - if (colormap == null) - colormap = visual.getScreen().getDefaultColormap(); - - XColor[] colArray = colormap.getXColors(); - - int numCol = colArray.length; - byte[] rmap = new byte[numCol]; - byte[] gmap = new byte[numCol]; - byte[] bmap = new byte[numCol]; - byte[] amap = new byte[numCol]; - - for (int i=0; i < numCol; i++) - { - XColor color = colArray[i]; - if (color.getFlags() == Colormap.FLAG_SHARED) - { - rmap[i] = (byte) (color.getRed() >> 8); - gmap[i] = (byte) (color.getGreen() >> 8); - bmap[i] = (byte) (color.getBlue() >> 8); - amap[i] = (byte) 0xff; - } // else, leave default zero values... - } - - imageCM = new IndexColorModel(visual.getDepth(), numCol, - rmap, gmap, bmap, amap); - } - - public BufferedImage createCompatibleImage(int width, - int height, - int transparency) - { - throw new UnsupportedOperationException("not implemented"); - } - - /** - * FIXME: I'm not sure which color model that should be returned here. - */ - public ColorModel getColorModel() - { - if (pixelCM == null) - preparePixelCM(); - return pixelCM; - } - - void preparePixelCM() - { - switch (visual.getVisualClass()) - { - case Visual.VC_TRUE_COLOR: - pixelCM = new DirectColorModel(visual.getDepth(), - visual.getRedMask(), - visual.getGreenMask(), - visual.getBlueMask()); - break; - case Visual.VC_PSEUDO_COLOR: - - if (colormap == null) - colormap = visual.getScreen().getDefaultColormap(); - - XColor[] colArray = colormap.getXColors(); - - int numCol = colArray.length; - byte[] rmap = new byte[numCol]; - byte[] gmap = new byte[numCol]; - byte[] bmap = new byte[numCol]; - byte[] amap = new byte[numCol]; - - for (int i=0; i < numCol; i++) - { - XColor color = colArray[i]; - if (color.getFlags() == Colormap.FLAG_SHARED) { - rmap[i] = (byte) (color.getRed() >> 8); - gmap[i] = (byte) (color.getGreen() >> 8); - bmap[i] = (byte) (color.getBlue() >> 8); - amap[i] = (byte) 0xff; - } // else, leave default zero values... - - } - - pixelCM = new IndexColorModel(visual.getDepth(), numCol, - rmap, gmap, bmap, amap); - break; - default: - throw new UnsupportedOperationException("not implemented"); - } - } - - public ColorModel getColorModel(int transparency) - { - throw new UnsupportedOperationException("not implemented"); - } - - public AffineTransform getDefaultTransform() - { - throw new UnsupportedOperationException("not implemented"); - } - - public AffineTransform getNormalizingTransform() - { - throw new UnsupportedOperationException("not implemented"); - } - - public Rectangle getBounds() - { - throw new UnsupportedOperationException("not implemented"); - } - - Visual getVisual() - { - return visual; - } - - /* FIXME: This should be moved to XGraphicsDevice... */ - XFontMetrics getXFontMetrics(java.awt.Font awtFont) - { - // FIXME: do caching... - - String family = "*"; - String name = awtFont.getName(); - String weight = awtFont.isBold() ? "bold" : "medium"; - String slant = awtFont.isItalic() ? "i" : "r"; - String addStyle = "*"; - String pixelSize = "*"; - String pointSize = awtFont.getSize() + "0"; - String xres = "*"; - String yres = "*"; - String spacing = "*"; - String averageWidth = "*"; - String charset = "*"; - - String logicalFontDescription = - family + "-" + name + "-" + weight + "-" + - slant + "-" + addStyle + "-" + pixelSize + "-" + - pointSize + "-" + xres + "-" + yres + "-" + - spacing + "-" + averageWidth + "-" + charset; - - Display display = visual.getScreen().getDisplay(); - gnu.gcj.xlib.Font xfont = - new gnu.gcj.xlib.Font(display, logicalFontDescription); - return new XFontMetrics(xfont, awtFont); - } - - int getPixel(Color color) - { - int[] components = - { - color.getRed(), - color.getGreen(), - color.getBlue(), - 0xff - }; - - ColorModel cm = getColorModel(); - return cm.getDataElement(components, 0); - } -}