1 |
|
---|
2 | /*
|
---|
3 | * bltInt.h --
|
---|
4 | *
|
---|
5 | * Copyright 1993-1998 Lucent Technologies, Inc.
|
---|
6 | *
|
---|
7 | * Permission to use, copy, modify, and distribute this software and
|
---|
8 | * its documentation for any purpose and without fee is hereby
|
---|
9 | * granted, provided that the above copyright notice appear in all
|
---|
10 | * copies and that both that the copyright notice and warranty
|
---|
11 | * disclaimer appear in supporting documentation, and that the names
|
---|
12 | * of Lucent Technologies any of their entities not be used in
|
---|
13 | * advertising or publicity pertaining to distribution of the software
|
---|
14 | * without specific, written prior permission.
|
---|
15 | *
|
---|
16 | * Lucent Technologies disclaims all warranties with regard to this
|
---|
17 | * software, including all implied warranties of merchantability and
|
---|
18 | * fitness. In no event shall Lucent Technologies be liable for any
|
---|
19 | * special, indirect or consequential damages or any damages
|
---|
20 | * whatsoever resulting from loss of use, data or profits, whether in
|
---|
21 | * an action of contract, negligence or other tortuous action, arising
|
---|
22 | * out of or in connection with the use or performance of this
|
---|
23 | * software.
|
---|
24 | */
|
---|
25 |
|
---|
26 | #ifndef _BLT_INT_H
|
---|
27 | #define _BLT_INT_H
|
---|
28 |
|
---|
29 | #ifdef WIN32
|
---|
30 | #define STRICT
|
---|
31 | #define WIN32_LEAN_AND_MEAN
|
---|
32 | #include <windows.h>
|
---|
33 | #undef STRICT
|
---|
34 | #undef WIN32_LEAN_AND_MEAN
|
---|
35 | #include <windowsx.h>
|
---|
36 | #endif /* WIN32 */
|
---|
37 |
|
---|
38 | #define USE_NON_CONST
|
---|
39 | #include <tcl.h>
|
---|
40 | #define USE_COMPOSITELESS_PHOTO_PUT_BLOCK
|
---|
41 | #include <tk.h>
|
---|
42 |
|
---|
43 | #define _VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
|
---|
44 | #define TCL_VERSION_NUMBER _VERSION(TCL_MAJOR_VERSION, TCL_MINOR_VERSION, TCL_RELEASE_SERIAL)
|
---|
45 | #define TK_VERSION_NUMBER _VERSION(TK_MAJOR_VERSION, TK_MINOR_VERSION, TK_RELEASE_SERIAL)
|
---|
46 |
|
---|
47 | #include "bltTkInt.h"
|
---|
48 |
|
---|
49 | #include <stdio.h>
|
---|
50 | #include <assert.h>
|
---|
51 |
|
---|
52 | #if defined(WIN32) && !defined(__GNUC__)
|
---|
53 | #include "bltWinConfig.h"
|
---|
54 | #else
|
---|
55 | #include "bltConfig.h"
|
---|
56 | #endif
|
---|
57 |
|
---|
58 | #ifdef WIN32
|
---|
59 | #ifndef EXPORT
|
---|
60 | #if defined(_MSC_VER) || defined(__BORLANDC__)
|
---|
61 | #define EXPORT __declspec(dllexport)
|
---|
62 | #else
|
---|
63 | #define EXPORT
|
---|
64 | #endif /* _MSC_VER || __BORLANDC__ */
|
---|
65 | #endif /* EXPORT */
|
---|
66 |
|
---|
67 | /* Misc. definitions */
|
---|
68 | #define NO_CUTBUFFER 1
|
---|
69 | #define NO_TILESCROLLBAR 1
|
---|
70 | #define NO_DND 1
|
---|
71 |
|
---|
72 | #ifndef __GNUC__
|
---|
73 | #ifdef O_NONBLOCK
|
---|
74 | #define O_NONBLOCK 1
|
---|
75 | #endif
|
---|
76 | #endif /* __GNUC__ */
|
---|
77 | #endif /* WIN32 */
|
---|
78 |
|
---|
79 | #include "blt.h"
|
---|
80 | #include "bltNsUtil.h"
|
---|
81 |
|
---|
82 | #ifdef HAVE_STDLIB_H
|
---|
83 | #include <stdlib.h>
|
---|
84 | #endif /* HAVE_STDLIB_H */
|
---|
85 |
|
---|
86 | #ifdef HAVE_STRING_H
|
---|
87 | #include <string.h>
|
---|
88 | #endif /* HAVE_STRING_H */
|
---|
89 |
|
---|
90 | #ifdef HAVE_ERRNO_H
|
---|
91 | #include <errno.h>
|
---|
92 | #endif /* HAVE_ERRNO_H */
|
---|
93 |
|
---|
94 | #ifdef HAVE_CTYPE_H
|
---|
95 | #include <ctype.h>
|
---|
96 | #endif /* HAVE_CTYPE_H */
|
---|
97 |
|
---|
98 | #ifdef HAVE_MEMORY_H
|
---|
99 | #include <memory.h>
|
---|
100 | #endif /* HAVE_MEMORY_H */
|
---|
101 |
|
---|
102 | #ifdef HAVE_UNISTD_H
|
---|
103 | #include <unistd.h>
|
---|
104 | #endif /* HAVE_UNISTD_H */
|
---|
105 |
|
---|
106 | #ifdef HAVE_LIMITS_H
|
---|
107 | #include <limits.h>
|
---|
108 | #endif
|
---|
109 |
|
---|
110 | #include "bltMath.h"
|
---|
111 |
|
---|
112 | #undef INLINE
|
---|
113 | #ifdef __GNUC__
|
---|
114 | #define INLINE inline
|
---|
115 | #else
|
---|
116 | #define INLINE
|
---|
117 | #endif
|
---|
118 | #undef EXPORT
|
---|
119 | #define EXPORT
|
---|
120 |
|
---|
121 | #undef VARARGS
|
---|
122 | #ifdef __cplusplus
|
---|
123 | #define ANYARGS (...)
|
---|
124 | #define VARARGS(first) (first, ...)
|
---|
125 | #define VARARGS2(first, second) (first, second, ...)
|
---|
126 | #else
|
---|
127 | #define ANYARGS ()
|
---|
128 | #define VARARGS(first) ()
|
---|
129 | #define VARARGS2(first, second) ()
|
---|
130 | #endif /* __cplusplus */
|
---|
131 |
|
---|
132 | #undef MIN
|
---|
133 | #define MIN(a,b) (((a)<(b))?(a):(b))
|
---|
134 |
|
---|
135 | #undef MAX
|
---|
136 | #define MAX(a,b) (((a)>(b))?(a):(b))
|
---|
137 |
|
---|
138 | #undef MIN3
|
---|
139 | #define MIN3(a,b,c) (((a)<(b))?(((a)<(c))?(a):(c)):(((b)<(c))?(b):(c)))
|
---|
140 |
|
---|
141 | #undef MAX3
|
---|
142 | #define MAX3(a,b,c) (((a)>(b))?(((a)>(c))?(a):(c)):(((b)>(c))?(b):(c)))
|
---|
143 |
|
---|
144 | #define TRUE 1
|
---|
145 | #define FALSE 0
|
---|
146 |
|
---|
147 | /*
|
---|
148 | * The macro below is used to modify a "char" value (e.g. by casting
|
---|
149 | * it to an unsigned character) so that it can be used safely with
|
---|
150 | * macros such as isspace.
|
---|
151 | */
|
---|
152 | #define UCHAR(c) ((unsigned char) (c))
|
---|
153 |
|
---|
154 | #undef panic
|
---|
155 | #define panic(mesg) Blt_Panic("%s:%d %s", __FILE__, __LINE__, (mesg))
|
---|
156 |
|
---|
157 | /*
|
---|
158 | * Since the Tcl/Tk distribution doesn't perform any asserts, dynamic
|
---|
159 | * loading can fail to find the __assert function. As a workaround,
|
---|
160 | * we'll include our own.
|
---|
161 | */
|
---|
162 | #undef assert
|
---|
163 | #ifdef NDEBUG
|
---|
164 | #define assert(EX) ((void)0)
|
---|
165 | #else
|
---|
166 | extern void Blt_Assert _ANSI_ARGS_((char *expr, char *file, int line));
|
---|
167 | #ifdef __STDC__
|
---|
168 | #define assert(EX) (void)((EX) || (Blt_Assert(#EX, __FILE__, __LINE__), 0))
|
---|
169 | #else
|
---|
170 | #define assert(EX) (void)((EX) || (Blt_Assert("EX", __FILE__, __LINE__), 0))
|
---|
171 | #endif /* __STDC__ */
|
---|
172 |
|
---|
173 | #endif /* NDEBUG */
|
---|
174 |
|
---|
175 | #if (TCL_MAJOR_VERSION >= 8)
|
---|
176 | extern Tcl_Obj *bltEmptyStringObjPtr;
|
---|
177 | #endif /* TCL_MAJOR_VERSION >= 8 */
|
---|
178 |
|
---|
179 | /*
|
---|
180 | * ----------------------------------------------------------------------
|
---|
181 | *
|
---|
182 | * Blt_CmdSpec --
|
---|
183 | *
|
---|
184 | * ----------------------------------------------------------------------
|
---|
185 | */
|
---|
186 | typedef struct {
|
---|
187 | char *name; /* Name of command */
|
---|
188 | Tcl_CmdProc *cmdProc;
|
---|
189 | Tcl_CmdDeleteProc *cmdDeleteProc;
|
---|
190 | ClientData clientData;
|
---|
191 | } Blt_CmdSpec;
|
---|
192 |
|
---|
193 | #if (TCL_MAJOR_VERSION >= 8)
|
---|
194 | /*
|
---|
195 | * ----------------------------------------------------------------------
|
---|
196 | *
|
---|
197 | * Blt_CmdSpec --
|
---|
198 | *
|
---|
199 | * ----------------------------------------------------------------------
|
---|
200 | */
|
---|
201 | typedef struct {
|
---|
202 | char *name; /* Name of command */
|
---|
203 | Tcl_ObjCmdProc *cmdProc;
|
---|
204 | Tcl_CmdDeleteProc *cmdDeleteProc;
|
---|
205 | ClientData clientData;
|
---|
206 | } Blt_ObjCmdSpec;
|
---|
207 |
|
---|
208 | #endif /* TCL_MAJOR_VERSION >= 8 */
|
---|
209 |
|
---|
210 | /*
|
---|
211 | * ----------------------------------------------------------------------
|
---|
212 | *
|
---|
213 | * Blt_Op --
|
---|
214 | *
|
---|
215 | * Generic function prototype of CmdOptions.
|
---|
216 | *
|
---|
217 | * ----------------------------------------------------------------------
|
---|
218 | */
|
---|
219 | typedef int (*Blt_Op) _ANSI_ARGS_(ANYARGS);
|
---|
220 |
|
---|
221 | /*
|
---|
222 | * ----------------------------------------------------------------------
|
---|
223 | *
|
---|
224 | * Blt_OpSpec --
|
---|
225 | *
|
---|
226 | * Structure to specify a set of operations for a Tcl command.
|
---|
227 | * This is passed to the Blt_GetOp procedure to look
|
---|
228 | * for a function pointer associated with the operation name.
|
---|
229 | *
|
---|
230 | * ----------------------------------------------------------------------
|
---|
231 | */
|
---|
232 | typedef struct {
|
---|
233 | char *name; /* Name of operation */
|
---|
234 | int minChars; /* Minimum # characters to disambiguate */
|
---|
235 | Blt_Op proc;
|
---|
236 | int minArgs; /* Minimum # args required */
|
---|
237 | int maxArgs; /* Maximum # args required */
|
---|
238 | char *usage; /* Usage message */
|
---|
239 |
|
---|
240 | } Blt_OpSpec;
|
---|
241 |
|
---|
242 | typedef enum {
|
---|
243 | BLT_OP_ARG0, /* Op is the first argument. */
|
---|
244 | BLT_OP_ARG1, /* Op is the second argument. */
|
---|
245 | BLT_OP_ARG2, /* Op is the third argument. */
|
---|
246 | BLT_OP_ARG3, /* Op is the fourth argument. */
|
---|
247 | BLT_OP_ARG4 /* Op is the fifth argument. */
|
---|
248 |
|
---|
249 | } Blt_OpIndex;
|
---|
250 |
|
---|
251 | #define BLT_OP_LINEAR_SEARCH 1
|
---|
252 | #define BLT_OP_BINARY_SEARCH 0
|
---|
253 |
|
---|
254 | extern Blt_Op Blt_GetOp _ANSI_ARGS_((Tcl_Interp *interp, int nSpecs,
|
---|
255 | Blt_OpSpec *specArr, int operPos, int argc, char **argv, int flags));
|
---|
256 |
|
---|
257 | #if (TCL_VERSION_NUMBER >= _VERSION(8,0,0))
|
---|
258 | extern Blt_Op Blt_GetOpFromObj _ANSI_ARGS_((Tcl_Interp *interp,
|
---|
259 | int nSpecs, Blt_OpSpec *specArr, int operPos, int objc,
|
---|
260 | Tcl_Obj *CONST *objv, int flags));
|
---|
261 | #endif
|
---|
262 |
|
---|
263 | /*
|
---|
264 | * ----------------------------------------------------------------------
|
---|
265 | *
|
---|
266 | * Assume we need to declare free if there's no stdlib.h or malloc.h
|
---|
267 | *
|
---|
268 | * ----------------------------------------------------------------------
|
---|
269 | */
|
---|
270 | #if !defined(HAVE_STDLIB_H) && !defined(HAVE_MALLOC_H)
|
---|
271 | extern void free _ANSI_ARGS_((void *));
|
---|
272 | #endif
|
---|
273 |
|
---|
274 | #define free(x) abc123(x)
|
---|
275 |
|
---|
276 | extern int Blt_DictionaryCompare _ANSI_ARGS_((char *s1, char *s2));
|
---|
277 |
|
---|
278 | EXTERN void Blt_Panic _ANSI_ARGS_(TCL_VARARGS(char *, args));
|
---|
279 |
|
---|
280 |
|
---|
281 | extern void Blt_Draw3DRectangle _ANSI_ARGS_((Tk_Window tkwin, Drawable drawable,
|
---|
282 | Tk_3DBorder border, int x, int y, int width, int height,
|
---|
283 | int borderWidth, int relief));
|
---|
284 | extern void Blt_Fill3DRectangle _ANSI_ARGS_((Tk_Window tkwin, Drawable drawable,
|
---|
285 | Tk_3DBorder border, int x, int y, int width, int height,
|
---|
286 | int borderWidth, int relief));
|
---|
287 |
|
---|
288 | #ifdef notdef
|
---|
289 | #define Blt_Fill3DRectangle Tk_Fill3DRectangle
|
---|
290 | #define Blt_Draw3DRectangle Tk_Draw3DRectangle
|
---|
291 | #endif
|
---|
292 |
|
---|
293 | /* ---------------------------------------------------------------- */
|
---|
294 |
|
---|
295 |
|
---|
296 | #define PIXELS_NONNEGATIVE 0
|
---|
297 | #define PIXELS_POSITIVE 1
|
---|
298 | #define PIXELS_ANY 2
|
---|
299 |
|
---|
300 | #define COUNT_NONNEGATIVE 0
|
---|
301 | #define COUNT_POSITIVE 1
|
---|
302 | #define COUNT_ANY 2
|
---|
303 |
|
---|
304 | #define BLT_SCROLL_MODE_CANVAS (1<<0)
|
---|
305 | #define BLT_SCROLL_MODE_LISTBOX (1<<1)
|
---|
306 | #define BLT_SCROLL_MODE_HIERBOX (1<<2)
|
---|
307 |
|
---|
308 | #define RGB_ANTIQUEWHITE1 "#ffefdb"
|
---|
309 | #define RGB_BISQUE1 "#ffe4c4"
|
---|
310 | #define RGB_BISQUE2 "#eed5b7"
|
---|
311 | #define RGB_BISQUE3 "#cdb79e"
|
---|
312 | #define RGB_BLACK "#000000"
|
---|
313 | #define RGB_BLUE "#0000ff"
|
---|
314 | #define RGB_GREEN "#00ff00"
|
---|
315 | #define RGB_GREY "#b0b0b0"
|
---|
316 | #define RGB_GREY15 "#262626"
|
---|
317 | #define RGB_GREY50 "#7f7f7f"
|
---|
318 | #define RGB_GREY64 "#a3a3a3"
|
---|
319 | #define RGB_GREY70 "#b3b3b3"
|
---|
320 | #define RGB_GREY75 "#bfbfbf"
|
---|
321 | #define RGB_GREY77 "#c3c3c3"
|
---|
322 | #define RGB_GREY82 "#d1d1d1"
|
---|
323 | #define RGB_GREY85 "#d9d9d9"
|
---|
324 | #define RGB_GREY90 "#e5e5e5"
|
---|
325 | #define RGB_GREY95 "#f2f2f2"
|
---|
326 | #define RGB_LIGHTBLUE0 "#e4f7ff"
|
---|
327 | #define RGB_LIGHTBLUE1 "#bfefff"
|
---|
328 | #define RGB_LIGHTBLUE2 "#b2dfee"
|
---|
329 | #define RGB_LIGHTSKYBLUE1 "#b0e2ff"
|
---|
330 | #define RGB_MAROON "#b03060"
|
---|
331 | #define RGB_NAVYBLUE "#000080"
|
---|
332 | #define RGB_PINK "#ffc0cb"
|
---|
333 | #define RGB_BISQUE1 "#ffe4c4"
|
---|
334 | #define RGB_RED "#ff0000"
|
---|
335 | #define RGB_WHITE "#ffffff"
|
---|
336 | #define RGB_YELLOW "#ffff00"
|
---|
337 |
|
---|
338 | #ifdef OLD_TK_COLORS
|
---|
339 | #define STD_NORMAL_BACKGROUND RGB_BISQUE1
|
---|
340 | #define STD_ACTIVE_BACKGROUND RGB_BISQUE2
|
---|
341 | #define STD_SELECT_BACKGROUND RGB_LIGHTBLUE1
|
---|
342 | #define STD_DISABLE_FOREGROUND RGB_GREY64
|
---|
343 | #else
|
---|
344 | #define STD_NORMAL_BACKGROUND RGB_GREY85
|
---|
345 | #define STD_ACTIVE_BACKGROUND RGB_GREY64
|
---|
346 | #define STD_SELECT_BACKGROUND RGB_LIGHTBLUE1
|
---|
347 | #define STD_DISABLE_FOREGROUND RGB_GREY64
|
---|
348 | #endif /* OLD_TK_COLORS */
|
---|
349 |
|
---|
350 | #define STD_ACTIVE_BG_MONO RGB_BLACK
|
---|
351 | #define STD_ACTIVE_FOREGROUND RGB_BLACK
|
---|
352 | #define STD_ACTIVE_FG_MONO RGB_WHITE
|
---|
353 | #define STD_BORDERWIDTH "2"
|
---|
354 | #define STD_FONT "*-Helvetica-Medium-R-Normal-*-12-120-*"
|
---|
355 | #define STD_FONT_HUGE "*-Helvetica-Medium-R-Normal-*-18-180-*"
|
---|
356 | #define STD_FONT_LARGE "*-Helvetica-Medium-R-Normal-*-14-140-*"
|
---|
357 | #define STD_FONT_SMALL "*-Helvetica-Medium-R-Normal-*-10-100-*"
|
---|
358 | #define STD_INDICATOR_COLOR RGB_MAROON
|
---|
359 | #define STD_NORMAL_BG_MONO RGB_WHITE
|
---|
360 | #define STD_NORMAL_FOREGROUND RGB_BLACK
|
---|
361 | #define STD_NORMAL_FG_MONO RGB_BLACK
|
---|
362 | #define STD_SELECT_BG_MONO RGB_BLACK
|
---|
363 | #define STD_SELECT_BORDERWIDTH "2"
|
---|
364 | #define STD_SELECT_FOREGROUND RGB_BLACK
|
---|
365 | #define STD_SELECT_FG_MONO RGB_WHITE
|
---|
366 | #define STD_SHADOW_COLOR RGB_GREY64
|
---|
367 | #define STD_SHADOW_MONO RGB_BLACK
|
---|
368 |
|
---|
369 | #define LineWidth(w) (((w) > 1) ? (w) : 0)
|
---|
370 |
|
---|
371 | #ifdef TCL_UTF_MAX
|
---|
372 | #define HAVE_UTF 1
|
---|
373 | extern FILE *Blt_OpenUtfFile _ANSI_ARGS_((char *fileName, char *mode));
|
---|
374 | #define fopen(f,m) Blt_OpenUtfFile((f),(m));
|
---|
375 | #else
|
---|
376 | #define HAVE_UTF 0
|
---|
377 | #endif /* TCL_UTF_MAX */
|
---|
378 |
|
---|
379 | typedef char *DestroyData;
|
---|
380 | |
---|
381 |
|
---|
382 |
|
---|
383 | #ifndef TK_RELIEF_SOLID
|
---|
384 | #define TK_RELIEF_SOLID TK_RELIEF_FLAT
|
---|
385 | #endif
|
---|
386 |
|
---|
387 | /*
|
---|
388 | * Tcl/Tk Backward compatibility section.
|
---|
389 | */
|
---|
390 | #if (TCL_MAJOR_VERSION > 7)
|
---|
391 |
|
---|
392 | #define NO_FLAGS 0
|
---|
393 | #define Blt_FindPhoto(interp, name) Tk_FindPhoto(interp, name)
|
---|
394 |
|
---|
395 | #else
|
---|
396 |
|
---|
397 | #define Tcl_GetStringResult(interp) ((interp)->result)
|
---|
398 | #define Blt_FindPhoto(interp, name) Tk_FindPhoto(name)
|
---|
399 |
|
---|
400 | #define Tcl_DeleteCommandFromToken(interp, token) \
|
---|
401 | Tcl_DeleteCommand(interp, Tcl_GetCommandName(interp, token))
|
---|
402 |
|
---|
403 | /*
|
---|
404 | *--------------------------------------------------------------
|
---|
405 | *
|
---|
406 | * The definitions below provide foreward compatibility for
|
---|
407 | * functions and types related to event handling that used to
|
---|
408 | * be in Tk but have moved to Tcl.
|
---|
409 | *
|
---|
410 | *--------------------------------------------------------------
|
---|
411 | */
|
---|
412 |
|
---|
413 | #define Tcl_IdleProc Tk_IdleProc
|
---|
414 | #define Tcl_FileProc Tk_FileProc
|
---|
415 | #define Tcl_TimerProc Tk_TimerProc
|
---|
416 | #define Tcl_TimerToken Tk_TimerToken
|
---|
417 |
|
---|
418 | #define Tcl_BackgroundError Tk_BackgroundError
|
---|
419 | #define Tcl_CancelIdleCall Tk_CancelIdleCall
|
---|
420 |
|
---|
421 | #define Tcl_CreateTimerHandler Tk_CreateTimerHandler
|
---|
422 | #define Tcl_DeleteTimerHandler Tk_DeleteTimerHandler
|
---|
423 | #define Tcl_DoOneEvent Tk_DoOneEvent
|
---|
424 | #define Tcl_DoWhenIdle Tk_DoWhenIdle
|
---|
425 | #define Tcl_Sleep Tk_Sleep
|
---|
426 |
|
---|
427 | /* Additional stuff that has moved to Tcl: */
|
---|
428 |
|
---|
429 | #define Tcl_AfterCmd Tk_AfterCmd
|
---|
430 | #define Tcl_EventuallyFree Tk_EventuallyFree
|
---|
431 | #define Tcl_FreeProc Tk_FreeProc
|
---|
432 | #define Tcl_Preserve Tk_Preserve
|
---|
433 | #define Tcl_Release Tk_Release
|
---|
434 |
|
---|
435 | #endif /* TCL_MAJOR_VERSION > 7 */
|
---|
436 |
|
---|
437 | typedef int (QSortCompareProc) _ANSI_ARGS_((const void *, const void *));
|
---|
438 |
|
---|
439 |
|
---|
440 | /*
|
---|
441 | * ----------------------------------------------------------------------
|
---|
442 | *
|
---|
443 | * Blt_Pad --
|
---|
444 | *
|
---|
445 | * Specifies vertical and horizontal padding.
|
---|
446 | *
|
---|
447 | * Padding can be specified on a per side basis. The fields
|
---|
448 | * side1 and side2 refer to the opposite sides, either
|
---|
449 | * horizontally or vertically.
|
---|
450 | *
|
---|
451 | * side1 side2
|
---|
452 | * ----- -----
|
---|
453 | * x | left right
|
---|
454 | * y | top bottom
|
---|
455 | *
|
---|
456 | * ----------------------------------------------------------------------
|
---|
457 | */
|
---|
458 | typedef struct {
|
---|
459 | short int side1, side2;
|
---|
460 | } Blt_Pad;
|
---|
461 |
|
---|
462 | #define padLeft padX.side1
|
---|
463 | #define padRight padX.side2
|
---|
464 | #define padTop padY.side1
|
---|
465 | #define padBottom padY.side2
|
---|
466 | #define PADDING(x) ((x).side1 + (x).side2)
|
---|
467 |
|
---|
468 | /*
|
---|
469 | * ----------------------------------------------------------------------
|
---|
470 | *
|
---|
471 | * The following enumerated values are used as bit flags.
|
---|
472 | * FILL_NONE Neither coordinate plane is specified
|
---|
473 | * FILL_X Horizontal plane.
|
---|
474 | * FILL_Y Vertical plane.
|
---|
475 | * FILL_BOTH Both vertical and horizontal planes.
|
---|
476 | *
|
---|
477 | * ----------------------------------------------------------------------
|
---|
478 | */
|
---|
479 | #define FILL_NONE 0
|
---|
480 | #define FILL_X 1
|
---|
481 | #define FILL_Y 2
|
---|
482 | #define FILL_BOTH 3
|
---|
483 |
|
---|
484 | /*
|
---|
485 | * ----------------------------------------------------------------------
|
---|
486 | *
|
---|
487 | * Blt_Dashes --
|
---|
488 | *
|
---|
489 | * List of dash values (maximum 11 based upon PostScript limit).
|
---|
490 | *
|
---|
491 | * ----------------------------------------------------------------------
|
---|
492 | */
|
---|
493 | typedef struct {
|
---|
494 | unsigned char values[12];
|
---|
495 | int offset;
|
---|
496 | } Blt_Dashes;
|
---|
497 |
|
---|
498 | #define LineIsDashed(d) ((d).values[0] != 0)
|
---|
499 |
|
---|
500 | extern void Blt_SetDashes _ANSI_ARGS_((Display *display, GC gc,
|
---|
501 | Blt_Dashes *dashesPtr));
|
---|
502 | extern Blt_Dashes *Blt_GetDashes _ANSI_ARGS_((GC gc));
|
---|
503 |
|
---|
504 | /*
|
---|
505 | * -------------------------------------------------------------------
|
---|
506 | *
|
---|
507 | * Point2D --
|
---|
508 | *
|
---|
509 | * 2-D coordinate.
|
---|
510 | *
|
---|
511 | * -------------------------------------------------------------------
|
---|
512 | */
|
---|
513 | typedef struct {
|
---|
514 | double x, y;
|
---|
515 | } Point2D;
|
---|
516 |
|
---|
517 | /*
|
---|
518 | * -------------------------------------------------------------------
|
---|
519 | *
|
---|
520 | * Point3D --
|
---|
521 | *
|
---|
522 | * 3-D coordinate.
|
---|
523 | *
|
---|
524 | * -------------------------------------------------------------------
|
---|
525 | */
|
---|
526 | typedef struct {
|
---|
527 | double x, y, z;
|
---|
528 | } Point3D;
|
---|
529 |
|
---|
530 | /*
|
---|
531 | * -------------------------------------------------------------------
|
---|
532 | *
|
---|
533 | * Segment2D --
|
---|
534 | *
|
---|
535 | * 2-D line segment.
|
---|
536 | *
|
---|
537 | * -------------------------------------------------------------------
|
---|
538 | */
|
---|
539 | typedef struct {
|
---|
540 | Point2D p, q; /* The two end points of the segment. */
|
---|
541 | } Segment2D;
|
---|
542 |
|
---|
543 | /*
|
---|
544 | * -------------------------------------------------------------------
|
---|
545 | *
|
---|
546 | * Dim2D --
|
---|
547 | *
|
---|
548 | * 2-D dimension.
|
---|
549 | *
|
---|
550 | * -------------------------------------------------------------------
|
---|
551 | */
|
---|
552 | typedef struct {
|
---|
553 | short int width, height;
|
---|
554 | } Dim2D;
|
---|
555 |
|
---|
556 | /*
|
---|
557 | *----------------------------------------------------------------------
|
---|
558 | *
|
---|
559 | * Region2D --
|
---|
560 | *
|
---|
561 | * 2-D region. Used to copy parts of images.
|
---|
562 | *
|
---|
563 | *----------------------------------------------------------------------
|
---|
564 | */
|
---|
565 | typedef struct {
|
---|
566 | int left, right, top, bottom;
|
---|
567 | } Region2D;
|
---|
568 |
|
---|
569 | #define RegionWidth(r) ((r)->right - (r)->left + 1)
|
---|
570 | #define RegionHeight(r) ((r)->bottom - (r)->top + 1)
|
---|
571 |
|
---|
572 | typedef struct {
|
---|
573 | double left, right, top, bottom;
|
---|
574 | } Extents2D;
|
---|
575 |
|
---|
576 | typedef struct {
|
---|
577 | double left, right, top, bottom, front, back;
|
---|
578 | } Extents3D;
|
---|
579 |
|
---|
580 | #define PointInRegion(e,x,y) \
|
---|
581 | (((x) <= (e)->right) && ((x) >= (e)->left) && \
|
---|
582 | ((y) <= (e)->bottom) && ((y) >= (e)->top))
|
---|
583 |
|
---|
584 | #define PointInRectangle(r,x0,y0) \
|
---|
585 | (((x0) <= (int)((r)->x + (r)->width - 1)) && ((x0) >= (int)(r)->x) && \
|
---|
586 | ((y0) <= (int)((r)->y + (r)->height - 1)) && ((y0) >= (int)(r)->y))
|
---|
587 |
|
---|
588 |
|
---|
589 | /* -------------------------------------------------------------------
|
---|
590 | *
|
---|
591 | * ColorPair --
|
---|
592 | *
|
---|
593 | * Holds a pair of foreground, background colors.
|
---|
594 | *
|
---|
595 | * -------------------------------------------------------------------
|
---|
596 | */
|
---|
597 | typedef struct {
|
---|
598 | XColor *fgColor, *bgColor;
|
---|
599 | } ColorPair;
|
---|
600 |
|
---|
601 | #define COLOR_NONE (XColor *)0
|
---|
602 | #define COLOR_DEFAULT (XColor *)1
|
---|
603 | #define COLOR_ALLOW_DEFAULTS 1
|
---|
604 |
|
---|
605 | extern int Blt_GetColorPair _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
|
---|
606 | char *fgColor, char *bgColor, ColorPair *pairPtr, int colorFlag));
|
---|
607 | extern void Blt_FreeColorPair _ANSI_ARGS_((ColorPair *pairPtr));
|
---|
608 |
|
---|
609 | #define STATE_NORMAL 0
|
---|
610 | #define STATE_ACTIVE (1<<0)
|
---|
611 | #define STATE_DISABLED (1<<1)
|
---|
612 | #define STATE_EMPHASIS (1<<2)
|
---|
613 |
|
---|
614 |
|
---|
615 | #define ARROW_LEFT (0)
|
---|
616 | #define ARROW_UP (1)
|
---|
617 | #define ARROW_RIGHT (2)
|
---|
618 | #define ARROW_DOWN (3)
|
---|
619 | #define ARROW_OFFSET 4
|
---|
620 | #define STD_ARROW_HEIGHT 3
|
---|
621 | #define STD_ARROW_WIDTH ((2 * (ARROW_OFFSET - 1)) + 1)
|
---|
622 |
|
---|
623 | #include "bltText.h"
|
---|
624 |
|
---|
625 | /*
|
---|
626 | * ----------------------------------------------------------------------
|
---|
627 | *
|
---|
628 | * X11/Xosdefs.h requires XNOSTDHDRS be set for some systems.
|
---|
629 | * This is a guess. If I can't find STDC headers or unistd.h,
|
---|
630 | * assume that this is non-POSIX and non-STDC environment.
|
---|
631 | * (needed for Encore Umax 3.4 ?)
|
---|
632 | *
|
---|
633 | * ----------------------------------------------------------------------
|
---|
634 | */
|
---|
635 | #if !defined(STDC_HEADERS) && !defined(HAVE_UNISTD_H)
|
---|
636 | #define XNOSTDHDRS 1
|
---|
637 | #endif
|
---|
638 |
|
---|
639 | extern char *Blt_Itoa _ANSI_ARGS_((int value));
|
---|
640 | extern char *Blt_Utoa _ANSI_ARGS_((unsigned int value));
|
---|
641 | extern char *Blt_Dtoa _ANSI_ARGS_((Tcl_Interp *interp, double value));
|
---|
642 | extern Tcl_Command Blt_InitCmd _ANSI_ARGS_((Tcl_Interp *interp,
|
---|
643 | char *namespace, Blt_CmdSpec *specPtr));
|
---|
644 |
|
---|
645 | #if (TCL_VERSION_NUMBER >= _VERSION(8,0,0))
|
---|
646 | extern Tcl_Command Blt_InitObjCmd _ANSI_ARGS_((Tcl_Interp *interp,
|
---|
647 | char *namespace, Blt_ObjCmdSpec *specPtr));
|
---|
648 | #if (TCL_VERSION_NUMBER < _VERSION(8,1,0))
|
---|
649 | extern char *Tcl_GetString _ANSI_ARGS_((Tcl_Obj *objPtr));
|
---|
650 | extern int Tcl_EvalObjv _ANSI_ARGS_((Tcl_Interp *interp, int objc,
|
---|
651 | Tcl_Obj **objv, int flags));
|
---|
652 | extern int Tcl_WriteObj _ANSI_ARGS_((Tcl_Channel channel, Tcl_Obj *objPtr));
|
---|
653 | extern char *Tcl_SetVar2Ex _ANSI_ARGS_((Tcl_Interp *interp, char *part1,
|
---|
654 | char *part2, Tcl_Obj *objPtr, int flags));
|
---|
655 | extern Tcl_Obj *Tcl_GetVar2Ex _ANSI_ARGS_((Tcl_Interp *interp, char *part1,
|
---|
656 | char *part2, int flags));
|
---|
657 | #endif /* TCL_VERSION_NUMBER < 8.2.0 */
|
---|
658 | #endif /* TCL_VERSION_NUMBER >= 8.0.0 */
|
---|
659 |
|
---|
660 |
|
---|
661 | extern int Blt_InitCmds _ANSI_ARGS_((Tcl_Interp *interp, char *namespace,
|
---|
662 | Blt_CmdSpec *specPtr, int nCmds));
|
---|
663 |
|
---|
664 | extern int Blt_NaturalSpline _ANSI_ARGS_((Point2D *origPts, int nOrigPts,
|
---|
665 | Point2D *intpPts, int nIntpPts));
|
---|
666 |
|
---|
667 | extern int Blt_QuadraticSpline _ANSI_ARGS_((Point2D *origPts, int nOrigPts,
|
---|
668 | Point2D *intpPts, int nIntpPts));
|
---|
669 |
|
---|
670 | extern int Blt_SimplifyLine _ANSI_ARGS_((Point2D *origPts, int low, int high,
|
---|
671 | double tolerance, int indices[]));
|
---|
672 |
|
---|
673 | extern int Blt_NaturalParametricSpline _ANSI_ARGS_((Point2D *origPts,
|
---|
674 | int nOrigPts, Extents2D *extsPtr, int isClosed, Point2D *intpPts,
|
---|
675 | int nIntpPts));
|
---|
676 |
|
---|
677 | extern int Blt_CatromParametricSpline _ANSI_ARGS_((Point2D *origPts,
|
---|
678 | int nOrigPts, Point2D *intpPts, int nIntpPts));
|
---|
679 |
|
---|
680 | extern int Blt_StringToFlag _ANSI_ARGS_((ClientData clientData,
|
---|
681 | Tcl_Interp *interp, Tk_Window tkwin, char *string, char *widgRec,
|
---|
682 | int flags));
|
---|
683 | extern char *Blt_FlagToString _ANSI_ARGS_((ClientData clientData,
|
---|
684 | Tk_Window tkwin, char *string, int offset, Tcl_FreeProc **freeProc));
|
---|
685 |
|
---|
686 | extern void Blt_InitHexTable _ANSI_ARGS_((char *table));
|
---|
687 |
|
---|
688 | extern GC Blt_GetPrivateGC _ANSI_ARGS_((Tk_Window tkwin, unsigned long gcMask,
|
---|
689 | XGCValues *valuePtr));
|
---|
690 |
|
---|
691 | extern GC Blt_GetPrivateGCFromDrawable _ANSI_ARGS_((Display *display,
|
---|
692 | Drawable drawable, unsigned long gcMask, XGCValues *valuePtr));
|
---|
693 |
|
---|
694 | extern void Blt_FreePrivateGC _ANSI_ARGS_((Display *display, GC gc));
|
---|
695 |
|
---|
696 | extern Tk_Window Blt_FindChild _ANSI_ARGS_((Tk_Window parent, char *name));
|
---|
697 |
|
---|
698 | extern Tk_Window Blt_FirstChild _ANSI_ARGS_((Tk_Window parent));
|
---|
699 |
|
---|
700 | extern Tk_Window Blt_NextChild _ANSI_ARGS_((Tk_Window tkwin));
|
---|
701 |
|
---|
702 | extern void Blt_RelinkWindow _ANSI_ARGS_((Tk_Window tkwin, Tk_Window newParent,
|
---|
703 | int x, int y));
|
---|
704 |
|
---|
705 | extern Tk_Window Blt_Toplevel _ANSI_ARGS_((Tk_Window tkwin));
|
---|
706 |
|
---|
707 | extern int Blt_GetPixels _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
|
---|
708 | char *string, int check, int *valuePtr));
|
---|
709 | extern int Blt_GetPosition _ANSI_ARGS_((Tcl_Interp *interp, char *string,
|
---|
710 | int *indexPtr));
|
---|
711 | extern int Blt_GetCount _ANSI_ARGS_((Tcl_Interp *interp, char *string,
|
---|
712 | int check, int *valuePtr));
|
---|
713 |
|
---|
714 | extern char *Blt_NameOfFill _ANSI_ARGS_((int fill));
|
---|
715 |
|
---|
716 | extern int Blt_GetXY _ANSI_ARGS_((Tcl_Interp *interp, Tk_Window tkwin,
|
---|
717 | char *string, int *x, int *y));
|
---|
718 |
|
---|
719 | extern Point2D Blt_GetProjection _ANSI_ARGS_((int x, int y, Point2D *p,
|
---|
720 | Point2D *q));
|
---|
721 |
|
---|
722 | extern void Blt_DrawArrow _ANSI_ARGS_((Display *display, Drawable drawable,
|
---|
723 | GC gc, int x, int y, int arrowHeight, int orientation));
|
---|
724 |
|
---|
725 | extern Tk_OptionParseProc Blt_StringToEnum;
|
---|
726 | extern Tk_OptionPrintProc Blt_EnumToString;
|
---|
727 |
|
---|
728 | extern int Blt_ConfigModified _ANSI_ARGS_(TCL_VARARGS(Tk_ConfigSpec *, specs));
|
---|
729 |
|
---|
730 | extern void Blt_DStringAppendElements _ANSI_ARGS_(TCL_VARARGS(Tcl_DString *, args));
|
---|
731 |
|
---|
732 | extern void Blt_MakeTransparentWindowExist _ANSI_ARGS_((Tk_Window tkwin,
|
---|
733 | Window parent, int isBusy));
|
---|
734 |
|
---|
735 | extern Window Blt_GetParent _ANSI_ARGS_((Display *display, Window tkwin));
|
---|
736 |
|
---|
737 | extern void Blt_GetBoundingBox _ANSI_ARGS_((int width, int height,
|
---|
738 | double theta, double *widthPtr, double *heightPtr, Point2D *points));
|
---|
739 |
|
---|
740 | extern void Blt_InitEpsCanvasItem _ANSI_ARGS_((Tcl_Interp *interp));
|
---|
741 |
|
---|
742 | extern void Blt_TranslateAnchor _ANSI_ARGS_((int x, int y, int width,
|
---|
743 | int height, Tk_Anchor anchor, int *transXPtr, int *transYPtr));
|
---|
744 |
|
---|
745 | extern Point2D Blt_TranslatePoint _ANSI_ARGS_((Point2D *pointPtr, int width,
|
---|
746 | int height, Tk_Anchor anchor));
|
---|
747 |
|
---|
748 | extern int Blt_ConfigureWidgetComponent _ANSI_ARGS_((Tcl_Interp *interp,
|
---|
749 | Tk_Window tkwin, char *name, char *class, Tk_ConfigSpec *specs,
|
---|
750 | int argc, char **argv, char *widgRec, int flags));
|
---|
751 |
|
---|
752 | extern void Blt_HSV _ANSI_ARGS_((XColor *colorPtr, double *huePtr,
|
---|
753 | double *valPtr, double *satPtr));
|
---|
754 |
|
---|
755 | extern void Blt_RGB _ANSI_ARGS_((double hue, double sat, double val,
|
---|
756 | XColor *colorPtr));
|
---|
757 |
|
---|
758 | extern int Blt_ParseFlag _ANSI_ARGS_((ClientData, Tcl_Interp *, Tk_Window,
|
---|
759 | char *, char *, int));
|
---|
760 | extern char *Blt_FlagPrint _ANSI_ARGS_((ClientData, Tk_Window, char *, int,
|
---|
761 | Tcl_FreeProc **));
|
---|
762 |
|
---|
763 | extern int Blt_MaxRequestSize _ANSI_ARGS_((Display *display,
|
---|
764 | unsigned int elemSize));
|
---|
765 |
|
---|
766 | extern Window Blt_GetRealWindowId _ANSI_ARGS_((Tk_Window tkwin));
|
---|
767 | extern int Blt_RootX _ANSI_ARGS_((Tk_Window tkwin));
|
---|
768 | extern int Blt_RootY _ANSI_ARGS_((Tk_Window tkwin));
|
---|
769 | extern void Blt_RootCoordinates _ANSI_ARGS_((Tk_Window tkwin, int x, int y,
|
---|
770 | int *rootXPtr, int *rootYPtr));
|
---|
771 | extern void Blt_MapToplevel _ANSI_ARGS_((Tk_Window tkwin));
|
---|
772 | extern void Blt_UnmapToplevel _ANSI_ARGS_((Tk_Window tkwin));
|
---|
773 | extern void Blt_RaiseToplevel _ANSI_ARGS_((Tk_Window tkwin));
|
---|
774 | extern void Blt_LowerToplevel _ANSI_ARGS_((Tk_Window tkwin));
|
---|
775 | extern void Blt_ResizeToplevel _ANSI_ARGS_((Tk_Window tkwin,
|
---|
776 | int width, int height));
|
---|
777 | extern void Blt_MoveToplevel _ANSI_ARGS_((Tk_Window tkwin, int x, int y));
|
---|
778 | extern void Blt_MoveResizeToplevel _ANSI_ARGS_((Tk_Window tkwin,
|
---|
779 | int x, int y, int width, int height));
|
---|
780 | extern ClientData Blt_GetWindowInstanceData _ANSI_ARGS_((Tk_Window tkwin));
|
---|
781 |
|
---|
782 | extern void Blt_SetWindowInstanceData _ANSI_ARGS_((Tk_Window tkwin,
|
---|
783 | ClientData instanceData));
|
---|
784 |
|
---|
785 | extern void Blt_DeleteWindowInstanceData _ANSI_ARGS_((Tk_Window tkwin));
|
---|
786 |
|
---|
787 | extern int Blt_AdjustViewport _ANSI_ARGS_((int offset, int worldSize,
|
---|
788 | int windowSize, int scrollUnits, int scrollMode));
|
---|
789 |
|
---|
790 | extern int Blt_GetScrollInfo _ANSI_ARGS_((Tcl_Interp *interp, int argc,
|
---|
791 | char **argv, int *offsetPtr, int worldSize, int windowSize,
|
---|
792 | int scrollUnits, int scrollMode));
|
---|
793 |
|
---|
794 | #if (TK_MAJOR_VERSION >= 8)
|
---|
795 | extern int Blt_GetScrollInfoFromObj _ANSI_ARGS_((Tcl_Interp *interp, int objc,
|
---|
796 | Tcl_Obj *CONST *objv, int *offsetPtr, int worldSize, int windowSize,
|
---|
797 | int scrollUnits, int scrollMode));
|
---|
798 | #endif
|
---|
799 |
|
---|
800 | extern void Blt_UpdateScrollbar _ANSI_ARGS_((Tcl_Interp *interp,
|
---|
801 | char *scrollCmd, double firstFract, double lastFract));
|
---|
802 |
|
---|
803 | extern int Blt_ReparentWindow _ANSI_ARGS_((Display *display, Window window,
|
---|
804 | Window newParent, int x, int y));
|
---|
805 |
|
---|
806 | #if defined(HAVE_JPEGLIB_H) || defined(HAVE_IJL_H)
|
---|
807 | #define HAVE_JPEG 1
|
---|
808 | extern int Blt_JPEGToPhoto _ANSI_ARGS_((Tcl_Interp *interp, char *fileName,
|
---|
809 | Tk_PhotoHandle photo));
|
---|
810 | #endif /* HAVE_JPEGLIB_H || HAVE_IJL_H */
|
---|
811 |
|
---|
812 | #define Blt_SetBooleanResult(i, b) \
|
---|
813 | Tcl_SetResult((i), (b) ? "1" : "0", TCL_STATIC)
|
---|
814 |
|
---|
815 | /*
|
---|
816 | * Define this if you want to be able to tile to the main window "."
|
---|
817 | * This will cause a conflict with Tk if you try to compile and link
|
---|
818 | * statically.
|
---|
819 | */
|
---|
820 | #undef TILE_MAINWINDOW
|
---|
821 |
|
---|
822 | #ifdef WIN32
|
---|
823 | #if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION == 0)
|
---|
824 | #else
|
---|
825 | #define NO_DDE 1
|
---|
826 | #endif
|
---|
827 | #else
|
---|
828 | #define NO_DDE 1
|
---|
829 | #define NO_PRINTER 1
|
---|
830 | #endif /* WIN32 */
|
---|
831 |
|
---|
832 | #if (TCL_MAJOR_VERSION == 7)
|
---|
833 | #define NO_TREE 1
|
---|
834 | #define NO_ARRAY 1
|
---|
835 | #define NO_TREEVIEW 1
|
---|
836 | #endif
|
---|
837 |
|
---|
838 | /* #define NO_TED */
|
---|
839 |
|
---|
840 | #ifndef NO_BEEP
|
---|
841 | extern Tcl_AppInitProc Blt_BeepInit;
|
---|
842 | #endif
|
---|
843 | #ifndef NO_BGEXEC
|
---|
844 | extern Tcl_AppInitProc Blt_BgexecInit;
|
---|
845 | #endif
|
---|
846 | #ifndef NO_BITMAP
|
---|
847 | extern Tcl_AppInitProc Blt_BitmapInit;
|
---|
848 | #endif
|
---|
849 | #ifndef NO_BUSY
|
---|
850 | extern Tcl_AppInitProc Blt_BusyInit;
|
---|
851 | #endif
|
---|
852 | #ifndef NO_CONTAINER
|
---|
853 | extern Tcl_AppInitProc Blt_ContainerInit;
|
---|
854 | #endif
|
---|
855 | #ifndef NO_CRC32
|
---|
856 | extern Tcl_AppInitProc Blt_Crc32Init;
|
---|
857 | #endif
|
---|
858 | #ifndef NO_CUTBUFFER
|
---|
859 | extern Tcl_AppInitProc Blt_CutbufferInit;
|
---|
860 | #endif
|
---|
861 | #ifndef NO_DEBUG
|
---|
862 | extern Tcl_AppInitProc Blt_DebugInit;
|
---|
863 | #endif
|
---|
864 | #ifndef NO_DRAGDROP
|
---|
865 | extern Tcl_AppInitProc Blt_DragDropInit;
|
---|
866 | #endif
|
---|
867 | #ifndef NO_DND
|
---|
868 | extern Tcl_AppInitProc Blt_DndInit;
|
---|
869 | #endif
|
---|
870 | #ifndef NO_GRAPH
|
---|
871 | extern Tcl_AppInitProc Blt_GraphInit;
|
---|
872 | #endif
|
---|
873 | #ifndef NO_HIERBOX
|
---|
874 | extern Tcl_AppInitProc Blt_HierboxInit;
|
---|
875 | #endif
|
---|
876 | #ifndef NO_HIERTABLE
|
---|
877 | extern Tcl_AppInitProc Blt_HiertableInit;
|
---|
878 | #endif
|
---|
879 | #ifndef NO_HTEXT
|
---|
880 | extern Tcl_AppInitProc Blt_HtextInit;
|
---|
881 | #endif
|
---|
882 | #ifdef WIN32
|
---|
883 | #ifndef NO_PRINTER
|
---|
884 | extern Tcl_AppInitProc Blt_PrinterInit;
|
---|
885 | #endif
|
---|
886 | #endif
|
---|
887 | #ifndef NO_TABLE
|
---|
888 | extern Tcl_AppInitProc Blt_TableInit;
|
---|
889 | #endif
|
---|
890 | #ifndef NO_VECTOR
|
---|
891 | extern Tcl_AppInitProc Blt_VectorInit;
|
---|
892 | #endif
|
---|
893 | #ifndef NO_WINOP
|
---|
894 | extern Tcl_AppInitProc Blt_WinopInit;
|
---|
895 | #endif
|
---|
896 | #ifndef NO_WATCH
|
---|
897 | extern Tcl_AppInitProc Blt_WatchInit;
|
---|
898 | #endif
|
---|
899 | #ifndef NO_SPLINE
|
---|
900 | extern Tcl_AppInitProc Blt_SplineInit;
|
---|
901 | #endif
|
---|
902 | #ifndef NO_TABSET
|
---|
903 | extern Tcl_AppInitProc Blt_TabsetInit;
|
---|
904 | #endif
|
---|
905 | #ifndef NO_TABNOTEBOOK
|
---|
906 | extern Tcl_AppInitProc Blt_TabnotebookInit;
|
---|
907 | #endif
|
---|
908 | #ifndef NO_TREE
|
---|
909 | extern Tcl_AppInitProc Blt_TreeInit;
|
---|
910 | #endif
|
---|
911 | #ifndef NO_TREEVIEW
|
---|
912 | extern Tcl_AppInitProc Blt_TreeViewInit;
|
---|
913 | #endif
|
---|
914 | #ifndef NO_TILEFRAME
|
---|
915 | extern Tcl_AppInitProc Blt_FrameInit;
|
---|
916 | #endif
|
---|
917 | #ifndef NO_TILEBUTTON
|
---|
918 | extern Tcl_AppInitProc Blt_ButtonInit;
|
---|
919 | #endif
|
---|
920 | #ifndef NO_TILESCROLLBAR
|
---|
921 | extern Tcl_AppInitProc Blt_ScrollbarInit;
|
---|
922 | #endif
|
---|
923 |
|
---|
924 | #if (BLT_MAJOR_VERSION == 3)
|
---|
925 | #ifndef NO_MOUNTAIN
|
---|
926 | extern Tcl_AppInitProc Blt_MountainInit;
|
---|
927 | #endif
|
---|
928 | #endif
|
---|
929 | #ifndef NO_TED
|
---|
930 | extern Tcl_AppInitProc Blt_TedInit;
|
---|
931 | #endif
|
---|
932 |
|
---|
933 | #ifndef NO_DDE
|
---|
934 | extern Tcl_AppInitProc Blt_DdeInit;
|
---|
935 | #endif
|
---|
936 |
|
---|
937 | typedef void *(Blt_MallocProc) _ANSI_ARGS_((size_t size));
|
---|
938 | typedef void *(Blt_CallocProc) _ANSI_ARGS_((int nElem, size_t size));
|
---|
939 | typedef void *(Blt_ReallocProc) _ANSI_ARGS_((void *ptr, size_t size));
|
---|
940 | typedef void *(Blt_FreeProc) _ANSI_ARGS_((void *ptr));
|
---|
941 |
|
---|
942 | EXTERN Blt_MallocProc *Blt_MallocProcPtr;
|
---|
943 | EXTERN Blt_FreeProc *Blt_FreeProcPtr;
|
---|
944 | EXTERN Blt_ReallocProc *Blt_ReallocProcPtr;
|
---|
945 |
|
---|
946 | #define Blt_Malloc(size) (*Blt_MallocProcPtr)(size)
|
---|
947 | #define Blt_Free (*Blt_FreeProcPtr)
|
---|
948 | #define Blt_Realloc(ptr, size) (*Blt_ReallocProcPtr)(ptr, size)
|
---|
949 |
|
---|
950 | EXTERN char *Blt_Strdup _ANSI_ARGS_((CONST char *ptr));
|
---|
951 | EXTERN void *Blt_Calloc _ANSI_ARGS_((unsigned int nElem, size_t size));
|
---|
952 |
|
---|
953 | #ifdef WIN32
|
---|
954 | #include "bltWin.h"
|
---|
955 | #endif
|
---|
956 |
|
---|
957 | #ifndef WIN32
|
---|
958 | #define PurifyPrintf printf
|
---|
959 | #endif /* WIN32 */
|
---|
960 | #endif /*_BLT_INT_H*/
|
---|