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

📄 natximage.cc

📁 gcc的组建
💻 CC
字号:
/* 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.  */#include <X11/Xlib.h>#include <X11/Xutil.h>#include <gcj/cni.h>#include <gnu/gcj/RawData.h>#include <java/lang/OutOfMemoryError.h>#include <gnu/gcj/xlib/Display.h>#include <gnu/gcj/xlib/Screen.h>#include <gnu/gcj/xlib/Visual.h>#include <gnu/gcj/xlib/XImage.h>#include <java/lang/System.h>#include <java/io/PrintStream.h>void gnu::gcj::xlib::XImage::init(Visual* visual, jint depth,				  jint format, jint xoffset,				  jint width, jint height,				  jint bitmapPad, jint bytesPerLine,				  jint bitsPerPixel){  ::Display* dpy = (::Display*) visual->display->display;  ::Visual* vis = (::Visual*) visual->getVisualStructure();  char* data = 0; // no preallocated data  ::XImage* ximage = XCreateImage(dpy, vis, depth, format, xoffset,				  data,				  width, height, 				  bitmapPad,				  bytesPerLine				  );  if (ximage == 0)    {      jstring errorMessage = JvNewStringLatin1("XCreateImage failed");      throw new java::lang::OutOfMemoryError(errorMessage);    }      bool reinitialize = false;      if ((bitsPerPixel != 0) && (ximage->bits_per_pixel != bitsPerPixel))    {      ximage->bits_per_pixel = bitsPerPixel;      reinitialize = true;    }      // FIXME: make autoconf test?  jshort endianTestShort[] = { 1 };  jbyte* endianTestByte = reinterpret_cast<jbyte*>(endianTestShort);      jint byteOrder;  if (endianTestByte[0] == 1)    {      // little endian machine      byteOrder = LEAST_SIGNIFICANT_B_FIRST_ORDER;    }  else    {      // big endian machine      byteOrder = MOST_SIGNIFICANT_B_FIRST_ORDER;    }  /* NB: This doesn't consider those weird machines out there with     middle-endian byte order. */      if (byteOrder != ximage->byte_order)    {      ximage->byte_order = byteOrder;      reinitialize = true;    }      if (reinitialize)    XInitImage(ximage);      structure = reinterpret_cast<gnu::gcj::RawData*>(ximage);  // Notice that no image data has been allocated at this point}void gnu::gcj::xlib::XImage::init(Visual* visual, 				  jint width,				  jint height){  int depth = visual->getDepth();      int format = ZPixmap; // Chunky, not planar.  int offset = 0;  int bitmapPad = 32; // FIXME, don't hardcode this  int bytesPerLine = 0; // Let the server figure it out  init(visual, depth, format, offset, width, height, bitmapPad,       bytesPerLine, 0);}void gnu::gcj::xlib::XImage::internalSetData(jbyteArray data, jint offset){  ::XImage* ximage = (::XImage*) structure;  ximage->data = reinterpret_cast<char*>(elements(data)+offset);}void gnu::gcj::xlib::XImage::internalSetData(jshortArray data, jint offset){  ::XImage* ximage = (::XImage*) structure;  ximage->data = reinterpret_cast<char*>(elements(data)+offset);}void gnu::gcj::xlib::XImage::internalSetData(jintArray data, jint offset){  ::XImage* ximage = (::XImage*) structure;  ximage->data = reinterpret_cast<char*>(elements(data)+offset);}void gnu::gcj::xlib::XImage::finalize(){  ::XImage* ximage = (::XImage*) structure;  if (ownsData)    delete ximage->data;    ximage->data = 0; // Never allow XLib to free the data allocation.  dataRef = 0;  XDestroyImage(ximage);}jint gnu::gcj::xlib::XImage::getWidth(){  ::XImage* ximage = (::XImage*) structure;  return ximage->width;}jint gnu::gcj::xlib::XImage::getHeight(){  ::XImage* ximage = (::XImage*) structure;  return ximage->height;}jint gnu::gcj::xlib::XImage::getDepth(){  ::XImage* ximage = (::XImage*) structure;  return ximage->depth;}jint gnu::gcj::xlib::XImage::getFormat(){  ::XImage* ximage = (::XImage*) structure;  return ximage->format;}jint gnu::gcj::xlib::XImage::getXOffset(){  ::XImage* ximage = (::XImage*) structure;  return ximage->xoffset;}jint gnu::gcj::xlib::XImage::getImageByteOrder(){  ::XImage* ximage = (::XImage*) structure;  return ximage->byte_order;}jint gnu::gcj::xlib::XImage::getBitmapBitOrder(){  ::XImage* ximage = (::XImage*) structure;  return ximage->bitmap_bit_order;}jint gnu::gcj::xlib::XImage::getBitmapUnit(){  ::XImage* ximage = (::XImage*) structure;  return ximage->bitmap_unit;}jint gnu::gcj::xlib::XImage::getBitmapPad(){  ::XImage* ximage = (::XImage*) structure;  return ximage->bitmap_pad;}jint gnu::gcj::xlib::XImage::getBytesPerLine(){  ::XImage* ximage = (::XImage*) structure;  return ximage->bytes_per_line;}jint gnu::gcj::xlib::XImage::getBitsPerPixel(){  ::XImage* ximage = (::XImage*) structure;  return ximage->bits_per_pixel;}// True/Direct Color specific:jint gnu::gcj::xlib::XImage::getRedMask(){  ::XImage* ximage = (::XImage*) structure;  return ximage->red_mask;}jint gnu::gcj::xlib::XImage::getGreenMask(){  ::XImage* ximage = (::XImage*) structure;  return ximage->green_mask;}jint gnu::gcj::xlib::XImage::getBlueMask(){  ::XImage* ximage = (::XImage*) structure;  return ximage->blue_mask;}void gnu::gcj::xlib::XImage::setPixel(jint x, jint y, jint pixel){  ::XImage* ximage = (::XImage*) structure;  XPutPixel(ximage, x, y, pixel);}

⌨️ 快捷键说明

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