⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ximage.java

📁 gcc的组建
💻 JAVA
字号:
/* Copyright (C) 2000  Free Software Foundation   This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License.  Please consult the file "LIBGCJ_LICENSE" fordetails.  */package gnu.gcj.xlib;import gnu.gcj.RawData;/**  * Structure containing image data that resides on the client side. * The format, depth and offset attributes of an XImage determines how * bitfields are encoded in a raster image. However, it does not * determine how a color is encoded into a bitfield. I.e. the XImage * pixel values in a specific structure, but does not determine what * colors that will be used to represent these pixel values on the * screen. * * @author Rolf W. Rasmussen <rolfwr@ii.uib.no> */public class XImage{  /** This object reference points to the data, hindering garbage      collection of the data. */  Object dataRef;  // Must match definitions in X.h:  public static final int XYBITMAP_FORMAT = 0,                          XYPIXMAP_FORMAT = 1,                          ZPIXMAP_FORMAT  = 2;    // Must match definitions in X.h:  public static final int LEAST_SIGNIFICANT_B_FIRST_ORDER  = 0,                          MOST_SIGNIFICANT_B_FIRST_ORDER   = 1;    public XImage(Visual visual, int depth, int format, int xoffset,		int width, int height, int bitmapPad,		int bytesPerLine)  {    this(visual, depth, format, xoffset, width, height, bitmapPad,	 bytesPerLine,	 0 // bitsPerPixel	 );  }  public XImage(Visual visual, int depth, int format, int xoffset,		int width, int height, int bitmapPad,		int bytesPerLine, int bitsPerPixel)  {    if (visual == null) throw new       NullPointerException("a visual must be specified");	    init(visual, depth, format, xoffset, width, height,	 bitmapPad, bytesPerLine, bitsPerPixel);  }  public native void init(Visual visual, int depth, int format, int xoffset,			  int width, int height, int bitmapPad,			  int bytesPerLine, int bitsPerPixel);    private native void init(Visual visual, int width, int height);      public XImage(Visual visual, int width, int height)  {    this(visual, width, height,	 true // Automatically allocate memory	 );  }  /**    * Create a new XImage.   *   * @param allocate specifies whether to automatically allocate   * memory for the image.  It is possible to create the data array   * elsewhere, so that we can for instance use a DataBufferUShort as   * data.  Ie. not limit ourself to byte arrays.  This is done by   * passing false and calling a setData() method manually after   * creation.   */  public XImage(Visual visual, int width, int height, boolean allocate)  {    if (visual == null)      throw new NullPointerException("a visual must be specified");        init(visual, width, height);    if (allocate)      {	/* Now that Xlib has figured out the appropriate bytes per	   line, we can allocate memory for the image.  */	// FIXME: What about formats with several layers/bands?	byte[] data = new byte[getBytesPerLine()*height];	setData(data, 0);      }  }  /**   * Attach image data to this XImage.   *   * @param offset the index of the first actual data element in the array.   */  public void setData(byte[] data, int offset)  {    dataRef = data;    internalSetData(data, offset);  }  /**   * Attach image data to this XImage.    *   * @param offset the index of the first actual data element in the   *  array.  Note: this is short offset, not a byte offset.   */  public void setData(short[] data, int offset)  {    dataRef = data;    internalSetData(data, offset);  }  /**   * Attach image data to this XImage   *    * @param offset the index of the first actual data element in the array.   * Note: this is not a byte offset.   */  public void setData(int[] data, int offset)  {    dataRef = data;    internalSetData(data, offset);  }    private native void internalSetData(byte[] data, int offset);  private native void internalSetData(short[] data, int offset);  private native void internalSetData(int[] data, int offset);      protected native void finalize();  boolean ownsData = false;  RawData structure = null;  public final native int getWidth();  public final native int getHeight();  public final native int getDepth();  public final native int getFormat();  public final boolean isZPixmapFormat()  {    return getFormat() == ZPIXMAP_FORMAT;  }   /**    * Get the xoffset. The xoffset avoids the need of shifting the   * scanlines into place.   */  public final native int getXOffset();  public native final int getBytesPerLine();  public native final int getBitsPerPixel();  public native final int getImageByteOrder();  public native final int getBitmapBitOrder();  public native final int getBitmapUnit();  public native final int getBitmapPad();  // True/Direct Color specific:  public native int getRedMask();  public native int getGreenMask();  public native int getBlueMask();  /**   * Set a pixel value at a given position in the image. This method   * is slow. Don't use it, except as a fall-back.   */  public native final void setPixel(int x, int y, int pixel);  public String toString()  {    String format;    switch(getFormat())      {      case ZPIXMAP_FORMAT:	format = "ZPixmapFormat";	break;      default:	format = "unknown";      }        String imageByteOrder;    switch(getImageByteOrder())      {      case LEAST_SIGNIFICANT_B_FIRST_ORDER:	imageByteOrder = "leastSignificantByteFirst";	break;      case MOST_SIGNIFICANT_B_FIRST_ORDER:	imageByteOrder = "mostSignificantByteFirst";	break;      default:	imageByteOrder = "unknwon";      }        String bitmapBitOrder;    switch(getBitmapBitOrder())      {      case LEAST_SIGNIFICANT_B_FIRST_ORDER:	bitmapBitOrder = "leastSignificantBitFirst";	break;      case MOST_SIGNIFICANT_B_FIRST_ORDER:	bitmapBitOrder = "mostSignificantBitFirst";	break;      default:	bitmapBitOrder = "unknown";      }        return getClass().getName() + "[" + format +      ", width=" + getWidth() +      ", height=" + getHeight() +      ", bytesPerLine=" + getBytesPerLine() +      ", xoffset=" + getXOffset() +      ", depth=" + getDepth() +      ", bitsPerPixel=" + getBitsPerPixel() +      ", bitmapUnit=" + getBitmapUnit() +      ", bitmapPad=" + getBitmapPad() +      ", byteOrder=" + imageByteOrder +      ", bitOrder=" + bitmapBitOrder +      "]";  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -