亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? img.c

?? kaffe Java 解釋器語言,源碼,Java的子集系統,開放源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/** * img.c -  * * Copyright (c) 1998 *      Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution  * of this file.  */#include "toolkit.h"/* interfaces of image conversion functions */Image* readGifFile ( int fd );Image* readGifData ( unsigned char*, long len );Image* readJpegFile ( int fd );Image* readJpegData ( unsigned char*, long len );Image* readPngFile ( int fd );Image* readPngData ( unsigned char*, long len );/************************************************************************************ * own auxiliary funcs */Image*createImage ( int width, int height ){  Image * img = AWT_CALLOC( 1, sizeof( Image));  img->trans  = -1;     /* default to no alpha */  img->width = width;   /* we need to (temp) store them for subsequent X image creation */  img->height = height;  return img;}static intcreateShmXImage ( Toolkit* X, Image* img, int depth, int isMask ){#if defined(USE_XSHM_EXTENSION)  Visual  *vis = DefaultVisual( X->dsp, DefaultScreen( X->dsp));  XShmSegmentInfo* shmi = (XShmSegmentInfo*) AWT_MALLOC( sizeof(XShmSegmentInfo));  XImage *xim;  unsigned int    nBytes;  if ( isMask ) {	xim = XShmCreateImage( X->dsp, vis, depth, XYBitmap, 0, shmi, img->width, img->height);  }  else {    xim = XShmCreateImage( X->dsp, vis, depth, ZPixmap, 0, shmi, img->width, img->height);  }  nBytes = xim->bytes_per_line * img->height;  shmi->shmid = shmget( IPC_PRIVATE, nBytes, (IPC_CREAT | 0777));  /*   * It is essential to check if shmget failed, because shared memory is usually   * a scarce resource   */  if ( shmi->shmid == -1 ) {	XShmDetach( X->dsp, shmi);	xim->data = 0;	XDestroyImage( xim);	AWT_FREE( shmi);	X->shm = SUSPEND_SHM;	return 0;  }  xim->data = shmi->shmaddr = shmat( shmi->shmid, 0, 0);  shmi->readOnly = False;  XShmAttach( X->dsp, shmi);  /*   * make sure it will be freed automatically once the attachment count comes   * down to 0 (either by explicit imgFreeImage or by process termination)   */  shmctl( shmi->shmid, IPC_RMID, 0);  if ( isMask ) {	memset( xim->data, 0xff, nBytes);	img->shmiMask = shmi;	img->xMask = xim;  }  else {	img->shmiImg = shmi;	img->xImg = xim;  }  return 1;#else  return 0;#endif}static voiddestroyShmXImage ( Toolkit* X, Image* img, int isMask ){#if defined(USE_XSHM_EXTENSION)  XShmSegmentInfo *shmi;  XImage          *xim;  if ( isMask ) {	shmi = img->shmiMask;	xim  = img->xMask;	img->shmiMask = 0;  }  else {	shmi = img->shmiImg;	xim  = img->xImg;	img->shmiImg = 0;  }  XShmDetach( X->dsp, shmi);  xim->data = 0;  XDestroyImage( xim);  /* we created it as 'deleted', so we just have to detach here */  shmdt( shmi->shmaddr);  AWT_FREE( shmi);  /* if we have suspended shm, give it a try again */  if ( X->shm == SUSPEND_SHM )	X->shm = USE_SHM;#endif}voidcreateXImage ( Toolkit* X, Image* img ){  int bitmap_pad;  int bytes_per_line;  int bytes_per_pix;  unsigned int nPix;  char *data;  Visual *vis  = DefaultVisual( X->dsp, DefaultScreen( X->dsp));  int    depth = DefaultDepth(  X->dsp, DefaultScreen( X->dsp));	  if ( depth <= 8)	      bytes_per_pix = 1;  else if ( depth <= 16)  bytes_per_pix = 2;  else			          bytes_per_pix = 4;  bytes_per_line = bytes_per_pix * img->width;  bitmap_pad = bytes_per_pix * 8;  nPix = img->width * img->height;  if ( (X->shm == USE_SHM) && (nPix > X->shmThreshold) && (img->alpha == 0) ) {	if ( createShmXImage( X, img, depth, False) ){	  DBG( AWT_IMG, printf("alloc Shm: %p %p %p (%dx%d) \n", img, img->xImg, img->shmiImg,					  img->width, img->height));	  return;	}  }  data = AWT_CALLOC( nPix, bytes_per_pix);  img->xImg = XCreateImage( X->dsp, vis, depth, ZPixmap, 0,							data, img->width, img->height, bitmap_pad, bytes_per_line);  DBG( AWT_IMG, printf( "alloc: %p %p (%dx%d)\n", img, img->xImg, img->width, img->height));}voidcreateXMaskImage ( Toolkit* X, Image* img ){  int     bytes_per_line;  unsigned int nBytes, nPix;  char    *data;  Visual  *vis = DefaultVisual( X->dsp, DefaultScreen( X->dsp));  bytes_per_line = (img->width + 7) / 8;  nPix   = img->width * img->height;  nBytes = bytes_per_line * img->height;  if ( (X->shm == USE_SHM) && (nPix > X->shmThreshold) ) {	if ( createShmXImage( X, img, 1, True) ){	  DBG( AWT_IMG, printf( "alloc Shm mask: %p %p %p (%dx%d) \n", img, img->xMask, img->shmiMask,					  img->width, img->height));	  return;	}  }  data = AWT_MALLOC( nBytes);  memset( data, 0xff, nBytes);  img->xMask = XCreateImage( X->dsp, vis, 1, XYBitmap, 0,							 data, img->width, img->height, 8, bytes_per_line );  DBG( AWT_IMG, printf( "alloc mask: %p %p (%dx%d)\n", img, img->xMask, img->width, img->height));}voidcreateAlphaImage ( Toolkit* X, Image *img ){  int nBytes = img->width * img->height;  img->alpha = AWT_MALLOC( sizeof( AlphaImage));  img->alpha->width  = img->width;  img->alpha->height = img->height;  img->alpha->buf = AWT_MALLOC( nBytes);  memset( img->alpha->buf, 0xff, nBytes);}/* * For images with a full alpha channel, check if we really need an alpha byte for * each pel, or if a mask bitmap (alpha 0x00 / 0xff) will be sufficient */intneedsFullAlpha ( Toolkit* X, Image *img, double threshold ){  int i, j, a;  int n = 0, max;  if ( !img->alpha ) return 0;  max = (img->width * img->height) * threshold;  for ( i=0; i<img->height; i++ ) {	for ( j=0; j<img->width; j++ ) {	  a = GetAlpha( img->alpha, j, i);	  if ( (a != 0) && (a != 0xff) ) {		if ( ++n > max )		  return 1;	  }	}  }  return 0;}/* * A full alpha image channel is way slower than using a mask bitmap (= 0 / 0xff alpha). * This function provides a simple alpha-to-mask translation *//* also used in imgpng */voidreduceAlpha ( Toolkit* X, Image* img, int threshold ){  int i, j, a;  if ( !img->alpha )	return;  createXMaskImage( X, img);  for ( i=0; i<img->height; i++ ) {	for ( j=0; j<img->width; j++ ) {	  a = GetAlpha( img->alpha, j, i);	  if ( a < threshold ) {		XPutPixel( img->xImg, j, i, 0);		XPutPixel( img->xMask, j, i, 0);	  }	}  }  AWT_FREE( img->alpha->buf);  AWT_FREE( img->alpha);  img->alpha = 0;}static inline intinterpolate ( int ul, int ur, int ll, int lr, double dx, double dy ){  double u = ul + (double)(ur - ul) * dx;  double l = ll + (double)(lr - ll) * dx;  return (int) (u + (l - u) * dy  + 0.5);}static unsigned intgetScaledAlpha ( Toolkit* X, Image* img, int x, int y, double dx, double dy ){  int   ul, ur, ll, lr, a;  int   xi = (dx) ? x+1 : x;  int   yi = (dy) ? y+1 : y;  if ( img->alpha ) {	ul = GetAlpha( img->alpha, x, y);	ur = GetAlpha( img->alpha, xi, y);	ll = GetAlpha( img->alpha, x, yi);	lr = GetAlpha( img->alpha, xi,yi);	a = (unsigned int) interpolate( ul, ur, ll, lr, dx, dy);	return a;  }  return 0xff;}static longgetScaledPixel ( Toolkit* X, Image* img, int x, int y, double dx, double dy ){  unsigned long  ul, ur, ll, lr;  int            ulR, urR, llR, lrR, ulG, urG, llG, lrG, ulB, urB, llB, lrB, r, g, b;  int            xi = (dx) ? x+1 : x;  int            yi = (dy) ? y+1 : y;  if ( img->xMask ) {	ul = XGetPixel( img->xMask, x, y);	ur = XGetPixel( img->xMask, xi, y);	ll = XGetPixel( img->xMask, x, yi);	lr = XGetPixel( img->xMask, xi,yi);		if ( !interpolate( ul, ur, ll, lr, dx, dy) )	  return -1;  }  ul = XGetPixel( img->xImg, x, y);  ur = XGetPixel( img->xImg, xi, y);  ll = XGetPixel( img->xImg, x, yi);  lr = XGetPixel( img->xImg, xi,yi);  if ( (ul == ur) && (ll == ul) && (lr == ll) ) {	rgbValues( X, ul, &r, &g, &b);  }  else {	rgbValues( X, ul, &ulR, &ulG, &ulB);	rgbValues( X, ur, &urR, &urG, &urB);	rgbValues( X, ll, &llR, &llG, &llB);	rgbValues( X, lr, &lrR, &lrG, &lrB);	r = interpolate( ulR, urR, llR, lrR, dx, dy);	g = interpolate( ulG, urG, llG, lrG, dx, dy);	b = interpolate( ulB, urB, llB, lrB, dx, dy);  }  return pixelValue( X, (r << 16) | (g << 8) | b);}voidinitScaledImage ( Toolkit* X, Image *tgt, Image *src,				  int dx0, int dy0, int dx1, int dy1,				  int sx0, int sy0, int sx1, int sy1 ){  double         xScale, yScale, sX, sY, sxDelta, syDelta;  int            dx, dy, dxInc, dyInc, sx, sy;  long           c;  dxInc = (dx1 > dx0) ? 1 : -1;  dyInc = (dy1 > dy0) ? 1 : -1;  dx1 += dxInc;  dy1 += dyInc;  xScale = (double) (dx1 - dx0) / (double) (sx1 - sx0 +1);  yScale = (double) (dy1 - dy0) / (double) (sy1 - sy0 +1);  for ( dy=dy0; dy != dy1; dy += dyInc ) {	sY = sy0 + (dy - dy0) / yScale;	sy = (int) sY;	syDelta = (sy < (sy1-1)) ? sY - sy : 0;	for ( dx=dx0; dx != dx1; dx += dxInc ) {	  sX = sx0 + (dx - dx0) / xScale;	  sx = (int) sX;	  sxDelta = (sx < (sx1-1)) ? sX - sx : 0;	  if ( (c = getScaledPixel( X, src, sx, sy, sxDelta, syDelta)) != -1 ){  		XPutPixel( tgt->xImg, dx, dy, c);		if ( src->alpha )		  PutAlpha( tgt->alpha, dx, dy, getScaledAlpha( X, src, sx, sy, sxDelta, syDelta));	  }	  else {		XPutPixel( tgt->xMask, dx, dy, 0);		XPutPixel( tgt->xImg, dx, dy, 0);	  }	}  }}/************************************************************************************ * exported native methods */void*Java_java_awt_Toolkit_imgCreateImage ( JNIEnv* env, jclass clazz, jint width, jint height ){  Image *img = createImage( width, height);  createXImage( X, img);  return img;}void*Java_java_awt_Toolkit_imgCreateScreenImage ( JNIEnv* env, jclass clazz, jint width, jint height ){  Image  *img = createImage( width, height);  int    depth = DefaultDepth(  X->dsp, DefaultScreen( X->dsp));  img->pix  = XCreatePixmap( X->dsp, X->root, width, height, depth);  return img;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产乱| 欧美日韩在线亚洲一区蜜芽| 不卡av在线网| 7777精品伊人久久久大香线蕉超级流畅| 日韩一区二区三区视频在线观看| 一区免费观看视频| 九九精品一区二区| 欧美精品电影在线播放| 亚洲男人天堂av| 国产福利一区二区三区视频在线| 欧美日韩一区二区三区四区五区| 中文字幕制服丝袜成人av| 另类欧美日韩国产在线| 在线播放中文字幕一区| 亚洲精品日日夜夜| 99视频有精品| 国产精品免费久久久久| 国产一区二区精品久久99| 91精品麻豆日日躁夜夜躁| 亚洲激情综合网| av激情成人网| 国产精品美女一区二区三区 | 91在线视频网址| 精品国偷自产国产一区| 琪琪一区二区三区| 69精品人人人人| 五月激情综合网| 欧美日韩在线直播| 亚洲一区二区三区激情| 欧美午夜片在线看| 亚洲国产一区视频| 欧美日本国产视频| 亚洲国产精品精华液网站| 欧美性生交片4| 亚洲电影视频在线| 欧美精品v国产精品v日韩精品 | 国产欧美精品一区| 国产成人一区二区精品非洲| www激情久久| 丁香婷婷综合激情五月色| 国产亚洲人成网站| av一区二区三区| 最近日韩中文字幕| 在线观看欧美日本| 午夜国产精品影院在线观看| 91精品国产综合久久精品麻豆| 日韩国产精品久久| 精品国产伦一区二区三区观看体验| 久久er99热精品一区二区| 久久亚洲二区三区| fc2成人免费人成在线观看播放| 一区二区在线观看免费视频播放| 欧美偷拍一区二区| 免费在线成人网| 国产欧美一区二区精品忘忧草| 99久久精品免费看国产免费软件| 一区二区在线观看视频| 日韩亚洲国产中文字幕欧美| 国产一区二区调教| 亚洲人被黑人高潮完整版| 欧美人动与zoxxxx乱| 国产九色sp调教91| 亚洲激情第一区| 欧美videos大乳护士334| 成人综合在线观看| 日韩av一区二区三区四区| 久久久99精品免费观看| 色视频一区二区| 久久69国产一区二区蜜臀| 国产精品美女久久久久久久网站| 欧美日韩中文国产| 国产91丝袜在线播放九色| 一区二区三区不卡视频| 欧美成人国产一区二区| 99久久er热在这里只有精品15| 日韩不卡一二三区| 日韩一区在线播放| 精品国产免费一区二区三区香蕉| 色av成人天堂桃色av| 韩国精品一区二区| 亚洲一级电影视频| 中文字幕av一区 二区| 欧美一区二区黄| 日本韩国欧美国产| 国产a精品视频| 美日韩一级片在线观看| 亚洲黄色在线视频| 国产精品网站在线| 日韩欧美一二三区| 欧美日本一区二区| 色婷婷国产精品综合在线观看| 国产综合一区二区| 日本视频一区二区| 亚洲成va人在线观看| 国产精品九色蝌蚪自拍| 久久久一区二区三区捆绑**| 69堂亚洲精品首页| 欧美性受xxxx黑人xyx性爽| eeuss鲁片一区二区三区在线观看| 蜜桃视频在线观看一区| 午夜久久福利影院| 亚洲第一电影网| 一区二区三区影院| 中文字幕亚洲区| 国产精品久久午夜| 欧美国产激情二区三区| 久久精品男人的天堂| 337p日本欧洲亚洲大胆色噜噜| 91精品国产色综合久久不卡蜜臀| 欧美午夜精品久久久| 91久久精品一区二区| 一本色道久久综合亚洲aⅴ蜜桃 | 91亚洲精品久久久蜜桃网站| 福利一区二区在线观看| 成人午夜在线免费| 国产成人aaa| 高清国产一区二区| 成人av免费网站| av动漫一区二区| 99re热这里只有精品免费视频| 波多野结衣欧美| 91理论电影在线观看| 一本大道综合伊人精品热热| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美电影精品一区二区| 日韩你懂的在线播放| 久久久久久黄色| 中国av一区二区三区| 1024亚洲合集| 一区二区三区在线视频免费观看| 亚洲精品国产成人久久av盗摄| 亚洲精品乱码久久久久久日本蜜臀| 亚洲美女在线一区| 午夜精品久久久久久不卡8050| 婷婷夜色潮精品综合在线| 免费成人性网站| 国产乱码字幕精品高清av | 麻豆视频观看网址久久| 极品少妇一区二区| 国产传媒日韩欧美成人| 成人免费av资源| 在线观看不卡一区| 日韩午夜小视频| 国产精品丝袜在线| 一区二区欧美视频| 美日韩一区二区| 成人听书哪个软件好| 欧美日韩国产综合视频在线观看| 91精品国产综合久久久久久久久久 | 91精品国产综合久久久久久久 | 国产激情一区二区三区四区| 99精品在线观看视频| 欧美日本视频在线| 久久亚洲一区二区三区四区| 亚洲欧美日韩久久精品| 日本不卡在线视频| 99热这里都是精品| 在线成人免费观看| 日本一区二区久久| 婷婷开心久久网| 国产.欧美.日韩| 欧美一区二区三区免费大片| 亚洲国产高清aⅴ视频| 亚洲成人精品一区| 国产成人综合网| 欧美一区二区三区在线| 亚洲天堂中文字幕| 精品在线观看视频| 欧美日韩另类国产亚洲欧美一级| 国产亚洲va综合人人澡精品 | 国产精品久久久久影院亚瑟| 日韩高清国产一区在线| 91丨porny丨蝌蚪视频| 久久日韩精品一区二区五区| 亚洲国产欧美在线| 波波电影院一区二区三区| 欧美电影精品一区二区| 午夜精品久久一牛影视| 91小视频在线免费看| 久久久不卡网国产精品二区| 水野朝阳av一区二区三区| 色综合视频一区二区三区高清| 久久久不卡网国产精品一区| 午夜精品在线看| 在线观看日韩电影| 亚洲卡通动漫在线| 欧美曰成人黄网| 午夜精品久久久久久久蜜桃app| 国产一区二区三区四区五区美女 | 精品日韩99亚洲| 日韩成人午夜精品| 欧美日韩亚洲综合在线| 亚洲另类一区二区| 欧亚一区二区三区| 亚洲欧美视频在线观看| 99精品黄色片免费大全| 中文欧美字幕免费| 成人免费三级在线| 国产精品免费视频一区| 成人免费视频免费观看|