1 /* 2 * tkMacOSXPort.h -- 3 * 4 * This file is included by all of the Tk C files. It contains 5 * information that may be configuration-dependent, such as 6 * #includes for system include files and a few other things. 7 * 8 * Copyright (c) 1994-1996 Sun Microsystems, Inc. 9 * Copyright 2001, Apple Computer, Inc. 10 * Copyright (c) 2005-2007 Daniel A. Steffen <das@users.sourceforge.net> 11 * 12 * See the file "license.terms" for information on usage and redistribution 13 * of this file, and for a DISCLAIMER OF ALL WARRANTIES. 14 * 15 * RCS: @(#) Id 16 */ 17 18 #ifndef _TKMACPORT 19 #define _TKMACPORT 20 21 /* 22 * Macro to use instead of "void" for arguments that must have 23 * type "void *" in ANSI C; maps them to type "char *" in 24 * non-ANSI systems. This macro may be used in some of the include 25 * files below, which is why it is defined here. 26 */ 27 28 #ifndef VOID 29 # ifdef __STDC__ 30 # define VOID void 31 # else 32 # define VOID char 33 # endif 34 #endif 35 36 #include <stdio.h> 37 #include <ctype.h> 38 #include <fcntl.h> 39 #include <limits.h> 40 #include <math.h> 41 #include <pwd.h> 42 #include <stdlib.h> 43 #include <string.h> 44 #include <sys/types.h> 45 #include <sys/file.h> 46 #ifdef HAVE_SYS_SELECT_H 47 # include <sys/select.h> 48 #endif 49 #include <sys/stat.h> 50 #ifndef _TCL 51 # include <tcl.h> 52 #endif 53 #if TIME_WITH_SYS_TIME 54 # include <sys/time.h> 55 # include <time.h> 56 #else 57 # if HAVE_SYS_TIME_H 58 # include <sys/time.h> 59 # else 60 # include <time.h> 61 # endif 62 #endif 63 #if HAVE_INTTYPES_H 64 # include <inttypes.h> 65 #endif 66 #include <unistd.h> 67 #include <X11/Xlib.h> 68 #include <X11/cursorfont.h> 69 #include <X11/keysym.h> 70 #include <X11/Xatom.h> 71 #include <X11/Xfuncproto.h> 72 #include <X11/Xutil.h> 73 #include "tkIntXlibDecls.h" 74 75 /* 76 * The following macro defines the type of the mask arguments to 77 * select: 78 */ 79 80 #ifndef NO_FD_SET 81 # define SELECT_MASK fd_set 82 #else 83 # ifndef _AIX 84 typedef long fd_mask; 85 # endif 86 # if defined(_IBMR2) 87 # define SELECT_MASK void 88 # else 89 # define SELECT_MASK int 90 # endif 91 #endif 92 93 /* 94 * The following macro defines the number of fd_masks in an fd_set: 95 */ 96 97 #ifndef FD_SETSIZE 98 # ifdef OPEN_MAX 99 # define FD_SETSIZE OPEN_MAX 100 # else 101 # define FD_SETSIZE 256 102 # endif 103 #endif 104 #if !defined(howmany) 105 # define howmany(x, y) (((x)+((y)-1))/(y)) 106 #endif 107 #ifndef NFDBITS 108 # define NFDBITS NBBY*sizeof(fd_mask) 109 #endif 110 #define MASK_SIZE howmany(FD_SETSIZE, NFDBITS) 111 112 /* 113 * Define "NBBY" (number of bits per byte) if it's not already defined. 114 */ 115 116 #ifndef NBBY 117 # define NBBY 8 118 #endif 119 120 /* 121 * The following define causes Tk to use its internal keysym hash table 122 */ 123 124 #define REDO_KEYSYM_LOOKUP 125 126 /* 127 * Defines for X functions that are used by Tk but are treated as 128 * no-op functions on the Macintosh. 129 */ 130 131 #define XFlush(display) 132 #define XFree(data) {if ((data) != NULL) ckfree((char *) (data));} 133 #define XGrabServer(display) 134 #define XNoOp(display) {display->request++;} 135 #define XUngrabServer(display) 136 #define XSynchronize(display, bool) {display->request++;} 137 #define XVisualIDFromVisual(visual) (visual->visualid) 138 139 /* 140 * The following functions are not used on the Mac, so we stub them out. 141 */ 142 143 #define TkFreeWindowId(dispPtr,w) 144 #define TkInitXId(dispPtr) 145 #define TkpButtonSetDefaults(specPtr) {} 146 #define TkpCmapStressed(tkwin,colormap) (0) 147 #define TkpFreeColor(tkColPtr) 148 #define TkSetPixmapColormap(p,c) {} 149 #define TkpSync(display) 150 151 /* 152 * The following macro returns the pixel value that corresponds to the 153 * RGB values in the given XColor structure. 154 */ 155 156 #define PIXEL_MAGIC ((unsigned char) 0x69) 157 #define TkpGetPixel(p) ((((((PIXEL_MAGIC << 8) \ 158 | (((p)->red >> 8) & 0xff)) << 8) \ 159 | (((p)->green >> 8) & 0xff)) << 8) \ 160 | (((p)->blue >> 8) & 0xff)) 161 162 /* 163 * This macro stores a representation of the window handle in a string. 164 * This should perhaps use the real size of an XID. 165 */ 166 167 #define TkpPrintWindowId(buf,w) \ 168 sprintf((buf), "0x%x", (unsigned int) (w)) 169 170 /* 171 * TkpScanWindowId is just an alias for Tcl_GetInt on Unix. 172 */ 173 174 #define TkpScanWindowId(i,s,wp) \ 175 Tcl_GetInt((i),(s),(int *) (wp)) 176 177 /* 178 * Turn off Tk double-buffering as Aqua windows are already double-buffered. 179 */ 180 181 #define TK_NO_DOUBLE_BUFFERING 1 182 183 /* 184 * Magic pixel code values for system colors. 185 * 186 * NOTE: values must be kept in sync with indices into the 187 * systemColorMap array in tkMacOSXColor.c ! 188 */ 189 190 #define TRANSPARENT_PIXEL 30 191 #define HIGHLIGHT_PIXEL 31 192 #define HIGHLIGHT_SECONDARY_PIXEL 32 193 #define HIGHLIGHT_TEXT_PIXEL 33 194 #define HIGHLIGHT_ALTERNATE_PIXEL 34 195 #define CONTROL_TEXT_PIXEL 35 196 #define CONTROL_BODY_PIXEL 37 197 #define CONTROL_FRAME_PIXEL 39 198 #define WINDOW_BODY_PIXEL 41 199 #define MENU_ACTIVE_PIXEL 43 200 #define MENU_ACTIVE_TEXT_PIXEL 45 201 #define MENU_BACKGROUND_PIXEL 47 202 #define MENU_DISABLED_PIXEL 49 203 #define MENU_TEXT_PIXEL 51 204 #define APPEARANCE_PIXEL 52 205 206 #endif /* _TKMACPORT */ 207