/* * tkWinPort.h -- * * This header file handles porting issues that occur because of * differences between Windows and Unix. It should be the only * file that contains #ifdefs to handle different flavors of OS. * * Copyright (c) 1995-1996 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * RCS: @(#) $Id: tkWinPort.h,v 1.9 2002/10/19 02:10:20 hobbs Exp $ */ #ifndef _WINPORT #define _WINPORT #define NEED_REAL_STDIO #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __EMX__ # include #endif /* * Need to block out this include for building extensions with MetroWerks * compiler for Win32. */ #ifndef __MWERKS__ #include #endif #include #ifdef __CYGWIN__ # define _T(x) L##x #else # include #endif #ifdef _MSC_VER # define hypot _hypot #else /* _MSC_VER */ # ifdef __EMX__ # define strncasecmp strnicmp # endif #endif /* _MSC_VER */ #ifndef __GNUC__ # define strncasecmp strnicmp # define strcasecmp stricmp #endif #define NBBY 8 #ifndef OPEN_MAX #define OPEN_MAX 32 #endif /* * The following define causes Tk to use its internal keysym hash table */ #define REDO_KEYSYM_LOOKUP /* * The following macro checks to see whether there is buffered * input data available for a stdio FILE. */ #ifdef _MSC_VER # define TK_READ_DATA_PENDING(f) ((f)->_cnt > 0) #else /* _MSC_VER */ # define TK_READ_DATA_PENDING(f) ((f)->level > 0) #endif /* _MSC_VER */ /* * The following stubs implement various calls that don't do anything * under Windows. */ #define TkFreeWindowId(dispPtr,w) #define TkInitXId(dispPtr) #define TkpCmapStressed(tkwin,colormap) (0) #define XFlush(display) #define XGrabServer(display) #define XUngrabServer(display) #define TkpSync(display) /* * The following functions are implemented as macros under Windows. */ #define XFree(data) {if ((data) != NULL) ckfree((char *) (data));} #define XNoOp(display) {display->request++;} #define XSynchronize(display, bool) {display->request++;} #define XSync(display, bool) {display->request++;} #define XVisualIDFromVisual(visual) (visual->visualid) /* Additional translations needed for Tk extensions (Pixmap). */ #define XPutImage(display, dr, gc, i, a, b, c, d, e, f) \ TkPutImage(NULL, 0, display, dr, gc, i, a, b, c, d, e, f) #define XDefaultVisual(display, screen) ((screen)->root_visual) #define XDefaultScreen(display) ((display)->screens) #define XDefaultColormap(display, screen) ((screen)->cmap) #define XDefaultDepth(display, screen) ((screen)->root_depth) /* * The following Tk functions are implemented as macros under Windows. */ #define TkpGetPixel(p) (((((p)->red >> 8) & 0xff) \ | ((p)->green & 0xff00) | (((p)->blue << 8) & 0xff0000)) | 0x20000000) /* * These calls implement native bitmaps which are not currently * supported under Windows. The macros eliminate the calls. */ #define TkpDefineNativeBitmaps() #define TkpCreateNativeBitmap(display, source) None #define TkpGetNativeAppBitmap(display, name, w, h) None /* * Define timezone for gettimeofday. */ #if 0 struct timezone { int tz_minuteswest; int tz_dsttime; }; #else #undef timezone struct timezone; struct timeval; #endif #ifndef _TCLINT #include #endif #endif /* _WINPORT */