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

📄 toolkit.h

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 H
📖 第 1 页 / 共 2 页
字号:
pixelValue ( Toolkit* tk, jint rgb ){  int      r,g,b;  XColor   xclr;  switch ( tk->colorMode ) {  case CM_PSEUDO_256:	return tk->pclr->pix [JI8(JRED(rgb))] [JI8(JGREEN(rgb))] [JI8(JBLUE(rgb))];  case CM_TRUE:	SIGNED_RSHIFT( b, (rgb & tk->tclr->blueMask), tk->tclr->blueShift);	SIGNED_RSHIFT( g, (rgb & tk->tclr->greenMask), tk->tclr->greenShift);	SIGNED_RSHIFT( r, (rgb & tk->tclr->redMask), tk->tclr->redShift);	return ( b | g | r );  case CM_TRUE_888:	return (rgb & 0xffffff);  case CM_DIRECT:	return (((jint)tk->dclr->redPix[JRED(rgb)]     << tk->dclr->redShift) |			((jint)tk->dclr->greenPix[JGREEN(rgb)] << tk->dclr->greenShift) |			((jint)tk->dclr->bluePix[JBLUE(rgb)]   << tk->dclr->blueShift));  default:	/*	 * this is a generic fallback for "exotic" visuals and might be *awefully*	 * slow (esp. for images) because XAllocColor is a roundtrip	 */	xclr.red = (rgb & 0xff0000) >> 8;	xclr.green = (rgb & 0xff00);	xclr.blue = (rgb & 0xff) << 8;	xclr.flags = DoRed | DoGreen | DoBlue;	XAllocColor( tk->dsp, DefaultColormapOfScreen( DefaultScreenOfDisplay( tk->dsp)), &xclr);	return xclr.pixel;  }}static inline voidrgbValues ( Toolkit* tk, unsigned long pixel, int* r, int* g, int* b ){  Visual         *v;  XColor         xclr;  switch ( tk->colorMode ) {  case CM_PSEUDO_256:	*r = tk->pclr->rgb[(unsigned char)pixel].r;	*g = tk->pclr->rgb[(unsigned char)pixel].g;	*b = tk->pclr->rgb[(unsigned char)pixel].b;	break;  case CM_TRUE:	v = DefaultVisual( tk->dsp, DefaultScreen( tk->dsp));	SIGNED_LSHIFT( *r, (pixel & v->red_mask), tk->tclr->redShift);	SIGNED_LSHIFT( *g, (pixel & v->green_mask), tk->tclr->greenShift);	SIGNED_LSHIFT( *b, (pixel & v->blue_mask), tk->tclr->blueShift);	*r >>= 16;	*g >>= 8;	break;/*	*r = ((pixel & v->red_mask)   << tk->tclr->redShift)   >> 16;	*g = ((pixel & v->green_mask) << tk->tclr->greenShift) >> 8;	*b = ((pixel & v->blue_mask)  << tk->tclr->blueShift);	break;*/  case CM_TRUE_888:	*r = JRED( pixel);	*g = JGREEN( pixel);	*b = JBLUE( pixel);	break;  case CM_DIRECT:	v = DefaultVisual( tk->dsp, DefaultScreen( tk->dsp));	*r = tk->dclr->red[   ((pixel & v->red_mask) >> tk->dclr->redShift) ];	*g = tk->dclr->green[ ((pixel & v->green_mask) >> tk->dclr->greenShift) ];	*b = tk->dclr->blue[  ((pixel & v->blue_mask) >> tk->dclr->blueShift) ];	break;  default:	/*	 * this is a generic fallback for "exotic" visuals and might be *awefully*	 * slow (esp. for images) because XAllocColor is a roundtrip	 */	xclr.pixel = pixel;	XQueryColor( tk->dsp, DefaultColormapOfScreen( DefaultScreenOfDisplay( tk->dsp)), &xclr);	*r = xclr.red >> 8;	*g = xclr.green >> 8;	*b = xclr.blue >> 8;    break;  }}/***************************************************************************************** * image functions */Image* createImage ( int width, int height);void createXMaskImage ( Toolkit* tk, Image* img );void createXImage ( Toolkit* tk, Image* img );void createAlphaImage ( Toolkit* tk, Image* img );void initScaledImage ( Toolkit* tk, Image *tgt, Image *src,					   int dx0, int dy0, int dx1, int dy1,					   int sx0, int sy0, int sx1, int sy1 );static inline voidPutAlpha ( AlphaImage* img, int col, int row, unsigned char alpha ){  img->buf[ row*img->width + col ] = alpha;}static inline intGetAlpha ( AlphaImage* img, int col, int row ){  return img->buf[ row*img->width + col];}/***************************************************************************************** * clipboard functions */jobject selectionClear ( JNIEnv* env, Toolkit* tk );jobject selectionRequest ( JNIEnv* env, Toolkit* tk );/***************************************************************************************** * async (multithreaded) macros * this can be used to solve the problem of deferred drawing requests, not being * flushed because of infrequent (non-polled) XNextEvent calls. * (for now, we go with a backgound flush thread) */#define XFLUSH(_X,_force)/***************************************************************************************** * file io wrapper macros (for image production) */#define AWT_OPEN(_file)               open(_file, 0)#define AWT_REWIND(_fd)               lseek(_fd, 0, SEEK_SET)#define AWT_SETPOS(_fd,_off)          lseek(_fd, _off, SEEK_CUR)#define AWT_READ(_fd,_buf,_count)     read(_fd,_buf,_count)#define AWT_CLOSE(_fd)                close(_fd)/***************************************************************************************** * macros to manage the source table (conversion of X windows to/from indices, which * are consistent with the AWTEvent.sources array) */#define WND_FRAME      0x01#define WND_WINDOW     0x02#define WND_DIALOG     0x04#define WND_MAPPED     0x08#define WND_DESTROYED  0x10static inline int getFreeSourceIdx ( Toolkit* tk, Window wnd ) {  register int i, n;  /*   * we don't use a double hashing here because collisions are very unlikely   * (window IDs usually already are hashed, so it does not make sense to   * hash them again - we just could make it worse   */  for ( i = (unsigned long)wnd, n=0; n < tk->nWindows; i++, n++ ) {	i %= tk->nWindows;	if ( (int)(tk->windows[i].w) <= 0 ) {	  tk->srcIdx = i;	  tk->lastWindow = wnd;	  return i;	}  }  return -1;}static inline int getSourceIdx ( Toolkit* tk, Window w ){  int      n;  register int i;  if ( w == X->lastWindow ){	return X->srcIdx;  }  else {	for ( i = (unsigned long) w, n=0; n < tk->nWindows; i++, n++ ) {	  i %= tk->nWindows;	  if ( tk->windows[i].w == w ){		tk->srcIdx = i;		tk->lastWindow = w;		return tk->srcIdx;	  }	  else if ( tk->windows[i].w == 0 ){		return -1;	  }	}	return -1;  }}static inline int checkSource ( Toolkit* tk, int idx ){  return ( (idx >= 0) && (idx < tk->nWindows) && (tk->windows[idx].w) );}/***************************************************************************************** * focus forwarding */#define FWD_SET    0  /* set focus forwarding */#define FWD_CLEAR  1  /* reset focus forwarding */#define FWD_REVERT 2  /* reset focus on owner */static inline void resetFocusForwarding ( Toolkit* tk ){  tk->fwdIdx = -1;  tk->focusFwd = 0;}extern void forwardFocus( int cmd, Window wnd );/***************************************************************************************** * Macros to implement keyboard handling for owned windows (which don't ever get * the X focus). This is done by means of forwarding and generation of "artificial" * focus events (generated from clientMessages. */#define	USE_POLLING_AWT	1/* Clipboard */typedef void ClipBoard;extern jobject Java_java_awt_Toolkit_cbdInitClipboard ( JNIEnv* env, jclass clazz );extern void Java_java_awt_Toolkit_cbdFreeClipboard ( JNIEnv* env, jclass clazz, ClipBoard* cbd );extern jboolean Java_java_awt_Toolkit_cbdSetOwner ( JNIEnv* env, jclass clazz, ClipBoard* cbd );extern jobject Java_java_awt_Toolkit_cbdGetContents ( JNIEnv* env, jclass clazz, ClipBoard* cbd );/* Color */extern jint Java_java_awt_Toolkit_clrGetPixelValue ( JNIEnv* env, jclass clazz, jint rgb );extern void Java_java_awt_Toolkit_clrSetSystemColors ( JNIEnv* env, jclass clazz, jintArray sysClrs );extern jobject Java_java_awt_Toolkit_clrGetColorModel ( JNIEnv* env, jclass clazz );/* Event */extern jobject Java_java_awt_Toolkit_evtInit ( JNIEnv* env, jclass clazz );extern jobject Java_java_awt_Toolkit_evtGetNextEvent ( JNIEnv* env, jclass clazz );extern jobject Java_java_awt_Toolkit_evtPeekEvent ( JNIEnv* env, jclass clazz );extern jobject Java_java_awt_Toolkit_evtPeekEventId ( JNIEnv* env, jclass clazz, jint id );extern void Java_java_awt_Toolkit_evtWakeup ( JNIEnv* env, jclass clazz );extern void Java_java_awt_Toolkit_evtSendWMEvent ( JNIEnv* env, jclass clazz, jobject wmEvt );extern jint Java_java_awt_Toolkit_evtRegisterSource ( JNIEnv* env, jclass clazz, jobject wnd );extern jint Java_java_awt_Toolkit_evtUnregisterSource ( JNIEnv* env, jclass clazz, jobject wnd );/* Font */extern void* Java_java_awt_Toolkit_fntInitFont ( JNIEnv* env, jclass clazz, jstring jSpec, jint style, jint size );#ifdef KAFFE_I18N#define KAFFE_FONT_FUNC_DECL( ret, name, args... ) ret name( JNIEnv* env, jclass clazz, jobject  xoc , ## args )#define UNVEIL_XOC(xoc)  ((XOC)JCL_GetRawData (env, xoc))#else#define KAFFE_FONT_FUNC_DECL( ret, name, args... ) ret name( JNIEnv* env, jclass clazz, jobject  fs , ## args )#define UNVEIL_FS(fs)  ((XFontStruct *)JCL_GetRawData (env, fs))#endifextern KAFFE_FONT_FUNC_DECL( void, Java_java_awt_Toolkit_fntFreeFont );extern KAFFE_FONT_FUNC_DECL( void *, Java_java_awt_Toolkit_fntInitFontMetrics );extern KAFFE_FONT_FUNC_DECL( void, Java_java_awt_Toolkit_fntFreeFontMetrics );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntGetAscent );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntGetDescent );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntGetFixedWidth );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntGetHeight );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntGetLeading );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntGetMaxAdvance );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntGetMaxAscent );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntGetMaxDescent );extern KAFFE_FONT_FUNC_DECL( jboolean, Java_java_awt_Toolkit_fntIsWideFont );extern KAFFE_FONT_FUNC_DECL( jobject, Java_java_awt_Toolkit_fntGetWidths );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntBytesWidth, jbyteArray jBytes, jint off, jint len );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntCharWidth, jchar jChar );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntCharsWidth, jcharArray jChars, jint off, jint len );extern KAFFE_FONT_FUNC_DECL( jint, Java_java_awt_Toolkit_fntStringWidth, jstring jStr );/* Graphics */typedef struct {  GC        gc;  Drawable  drw;#ifdef KAFFE_I18N  XOC       oc;#endif    int       fg;  int       bg;  char      xor;  int       xclr;  int       x0;  int       y0;} Graphics;#define  WINDOW   0#define  IMAGE    1#define  GRAPHICS 2#define KAFFE_GRA_FUNC_DECL( ret, name, args... ) ret name( JNIEnv* env, jclass clazz, jobject ngr , ## args )#define UNVEIL_GR(ngr) ((Graphics *)JCL_GetRawData(env, ngr))extern KAFFE_GRA_FUNC_DECL( jobject, Java_java_awt_Toolkit_graInitGraphics, jobject tgt, jint tgtType, jint xOff, jint yOff, jint xClip, jint yClip, jint wClip, jint hClip, jobject fnt, jint fg, jint bg, jboolean blank );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graFreeGraphics );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graCopyArea, jint x, jint y, jint width, jint height, jint xDelta, jint yDelta );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graClearRect, jint x, jint y, jint width, jint height );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawBytes, jbyteArray jBytes, jint offset, jint len, jint x, jint y );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawChars, jcharArray jChars, jint offset, jint len, jint x, jint y );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawString, jstring str, jint x, jint y );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawLine, jint x1, jint y1, jint x2, jint y2 );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawArc, jint x, jint y, jint width, jint height, jint startAngle, jint arcAngle );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graFillArc, jint x, jint y, jint width, jint height, jint startAngle, jint arcAngle );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawOval, jint x, jint y, jint width, jint height );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graFillOval, jint x, jint y, jint width, jint height );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawPolygon, jintArray xPoints, jintArray yPoints, jint nPoints );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawPolyline, jintArray xPoints, jintArray yPoints, jint nPoints );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graFillPolygon, jintArray xPoints, jintArray yPoints, jint nPoints );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawRect, jint x, jint y, jint width, jint height );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graFillRect, jint x, jint y, jint width, jint height );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawRoundRect, jint x, jint y, jint width, jint height, jint wArc, jint hArc );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graFillRoundRect, jint x, jint y, jint width, jint height, jint wArc, jint hArc );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDraw3DRect, jint x, jint y, jint width, jint height, jboolean raised, jint rgb );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graFill3DRect, jint x, jint y, jint width, jint height, jboolean raised, jint rgb );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graAddClip, jint xClip, jint yClip, jint wClip, jint hClip );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graSetClip, jint xClip, jint yClip, jint wClip, jint hClip );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graSetColor, jint clr );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graSetBackColor, jint clr );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graSetFont, jobject fnt );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graSetOffset, jint xOff, jint yOff );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graSetPaintMode );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graSetXORMode, jint xorClr );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graSetVisible, jint isVisible );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawImage, jobject img, jint srcX, jint srcY, jint dstX, jint dstY, jint width, jint height, jint bgval );extern KAFFE_GRA_FUNC_DECL( void, Java_java_awt_Toolkit_graDrawImageScaled, jobject img, jint dx0, jint dy0, jint dx1, jint dy1, jint sx0, jint sy0, jint sx1, jint sy1, jint bgval );  /* Image */#define KAFFE_CREATE_IMG_FUNC_DECL( ret, name, args... ) ret name( JNIEnv* env, jclass clazz , ## args )#define KAFFE_IMG_FUNC_DECL( ret, name, args... ) ret name( JNIEnv* env, jclass clazz, jobject nimg , ## args )#define UNVEIL_IMG(nimg) ((Image *)JCL_GetRawData(env, nimg))extern KAFFE_CREATE_IMG_FUNC_DECL( jobject, Java_java_awt_Toolkit_imgCreateImage, jint width, jint height );extern KAFFE_CREATE_IMG_FUNC_DECL( jobject, Java_java_awt_Toolkit_imgCreateScreenImage, jint width, jint height );extern KAFFE_IMG_FUNC_DECL( void, Java_java_awt_Toolkit_imgSetIdxPels, jint x, jint y, jint w, jint h, jintArray clrMap, jbyteArray idxPels, jint trans, jint off, jint scan );extern KAFFE_IMG_FUNC_DECL( void, Java_java_awt_Toolkit_imgSetRGBPels, jint x, jint y, jint w, jint h, jintArray rgbPels, jint off, jint scan );extern KAFFE_IMG_FUNC_DECL( void, Java_java_awt_Toolkit_imgComplete, jint status );extern KAFFE_IMG_FUNC_DECL( void, Java_java_awt_Toolkit_imgFreeImage );extern void imgFreeImage( Image *img );extern KAFFE_IMG_FUNC_DECL( jobject, Java_java_awt_Toolkit_imgCreateScaledImage, int width, int height );extern KAFFE_CREATE_IMG_FUNC_DECL( void, Java_java_awt_Toolkit_imgProduceImage, jobject producer, jobject nimg );extern KAFFE_CREATE_IMG_FUNC_DECL( jobject, Java_java_awt_Toolkit_imgCreateFromFile, jstring fileName );extern KAFFE_CREATE_IMG_FUNC_DECL( jobject, Java_java_awt_Toolkit_imgCreateFromData, jbyteArray jbuffer, jint off, jint len );extern KAFFE_IMG_FUNC_DECL( jobject, Java_java_awt_Toolkit_imgSetFrame, int frameNo );extern KAFFE_IMG_FUNC_DECL( jint, Java_java_awt_Toolkit_imgGetWidth );extern KAFFE_IMG_FUNC_DECL( jint, Java_java_awt_Toolkit_imgGetHeight );extern KAFFE_IMG_FUNC_DECL( jboolean, Java_java_awt_Toolkit_imgIsMultiFrame );extern KAFFE_IMG_FUNC_DECL( jint, Java_java_awt_Toolkit_imgGetLatency );extern KAFFE_IMG_FUNC_DECL( jobject, Java_java_awt_Toolkit_imgGetNextFrame );/* Window */#define KAFFE_GLBL_WND_FUNC_DECL( ret, name, args... ) ret name( JNIEnv* env, jclass clazz, ## args )#define KAFFE_WND_FUNC_DECL( ret, name, args... ) ret name( JNIEnv* env, jclass clazz, jobject nwnd , ## args )#define UNVEIL_WND(wnd) ((Window)JCL_GetRawData(env, wnd))extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndSetTitle, jstring jTitle );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndSetResizable, jboolean isResizable, int x, int y, int width, int height );extern KAFFE_GLBL_WND_FUNC_DECL( jobject, Java_java_awt_Toolkit_wndCreateFrame, jstring jTitle, jint x, jint y, jint width, jint height, jint jCursor, jint clrBack, jboolean isResizable );extern KAFFE_GLBL_WND_FUNC_DECL( jobject, Java_java_awt_Toolkit_wndCreateWindow, jobject nowner, jint x, jint y, jint width, jint height, jint jCursor, jint clrBack );extern KAFFE_GLBL_WND_FUNC_DECL( jobject, Java_java_awt_Toolkit_wndCreateDialog, jobject nowner, jstring jTitle, jint x, jint y, jint width, jint height, jint jCursor, jint clrBack, jboolean isResizable );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndDestroyWindow );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndRequestFocus );extern KAFFE_GLBL_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndSetFrameInsets, jint top, jint left, jint bottom, jint right );extern KAFFE_GLBL_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndSetDialogInsets, jint top, jint left, jint bottom, jint right );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndSetBounds, jint x, jint y, jint width, jint height, jboolean isResizable );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndRepaint, jint x, jint y, jint width, jint height );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndSetIcon, jobject nimg );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndSetVisible, jboolean showIt );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndToBack );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndToFront );extern KAFFE_WND_FUNC_DECL( void, Java_java_awt_Toolkit_wndSetCursor, jint jCursor );/* Toolkit */#define KAFFE_TLK_FUNC_DECL( ret, name, args... ) ret name( JNIEnv* env, jclass clazz , ## args )extern KAFFE_TLK_FUNC_DECL( jint, Java_java_awt_Toolkit_tlkProperties );extern KAFFE_TLK_FUNC_DECL( jboolean, Java_java_awt_Toolkit_tlkInit, jstring name );extern KAFFE_TLK_FUNC_DECL( void, Java_java_awt_Toolkit_tlkTerminate );extern KAFFE_TLK_FUNC_DECL( jstring, Java_java_awt_Toolkit_tlkVersion );extern KAFFE_TLK_FUNC_DECL( jint, Java_java_awt_Toolkit_tlkGetResolution );extern KAFFE_TLK_FUNC_DECL( jint, Java_java_awt_Toolkit_tlkGetScreenHeight );extern KAFFE_TLK_FUNC_DECL( jint, Java_java_awt_Toolkit_tlkGetScreenWidth );extern KAFFE_TLK_FUNC_DECL( void, Java_java_awt_Toolkit_tlkSync );extern KAFFE_TLK_FUNC_DECL( void, Java_java_awt_Toolkit_tlkFlush );extern KAFFE_TLK_FUNC_DECL( void, Java_java_awt_Toolkit_tlkBeep );extern KAFFE_TLK_FUNC_DECL( void, Java_java_awt_Toolkit_tlkDisplayBanner, jstring banner );#endif

⌨️ 快捷键说明

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