1 |
/* $Header$ */ |
2 |
|
3 |
/* |
4 |
* tk3d.h -- |
5 |
* |
6 |
* Declarations of types and functions shared by the 3d border |
7 |
* module. |
8 |
* |
9 |
* Copyright (c) 1996-1997 by Sun Microsystems, Inc. |
10 |
* |
11 |
* See the file "license.terms" for information on usage and redistribution |
12 |
* of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
13 |
* |
14 |
* RCS: @(#) $Id: tk3d.h,v 1.1.1.1 2001/06/13 04:53:30 dtashley Exp $ |
15 |
*/ |
16 |
|
17 |
#ifndef _TK3D |
18 |
#define _TK3D |
19 |
|
20 |
#include "tkInt.h" |
21 |
|
22 |
#ifdef BUILD_tk |
23 |
# undef TCL_STORAGE_CLASS |
24 |
# define TCL_STORAGE_CLASS DLLEXPORT |
25 |
#endif |
26 |
|
27 |
/* |
28 |
* One of the following data structures is allocated for each 3-D border |
29 |
* currently in use. Structures of this type are indexed by |
30 |
* borderTable, so that a single structure can be shared for several |
31 |
* uses. |
32 |
*/ |
33 |
|
34 |
typedef struct TkBorder { |
35 |
Screen *screen; /* Screen on which the border will be used. */ |
36 |
Visual *visual; /* Visual for all windows and pixmaps using |
37 |
* the border. */ |
38 |
int depth; /* Number of bits per pixel of drawables where |
39 |
* the border will be used. */ |
40 |
Colormap colormap; /* Colormap out of which pixels are |
41 |
* allocated. */ |
42 |
int resourceRefCount; /* Number of active uses of this color (each |
43 |
* active use corresponds to a call to |
44 |
* Tk_Alloc3DBorderFromObj or Tk_Get3DBorder). |
45 |
* If this count is 0, then this structure |
46 |
* is no longer valid and it isn't present |
47 |
* in borderTable: it is being kept around |
48 |
* only because there are objects referring |
49 |
* to it. The structure is freed when |
50 |
* resourceRefCount and objRefCount are |
51 |
* both 0. */ |
52 |
int objRefCount; /* The number of Tcl objects that reference |
53 |
* this structure. */ |
54 |
XColor *bgColorPtr; /* Background color (intensity |
55 |
* between lightColorPtr and |
56 |
* darkColorPtr). */ |
57 |
XColor *darkColorPtr; /* Color for darker areas (must free when |
58 |
* deleting structure). NULL means shadows |
59 |
* haven't been allocated yet.*/ |
60 |
XColor *lightColorPtr; /* Color used for lighter areas of border |
61 |
* (must free this when deleting structure). |
62 |
* NULL means shadows haven't been allocated |
63 |
* yet. */ |
64 |
Pixmap shadow; /* Stipple pattern to use for drawing |
65 |
* shadows areas. Used for displays with |
66 |
* <= 64 colors or where colormap has filled |
67 |
* up. */ |
68 |
GC bgGC; /* Used (if necessary) to draw areas in |
69 |
* the background color. */ |
70 |
GC darkGC; /* Used to draw darker parts of the |
71 |
* border. None means the shadow colors |
72 |
* haven't been allocated yet.*/ |
73 |
GC lightGC; /* Used to draw lighter parts of |
74 |
* the border. None means the shadow colors |
75 |
* haven't been allocated yet. */ |
76 |
Tcl_HashEntry *hashPtr; /* Entry in borderTable (needed in |
77 |
* order to delete structure). */ |
78 |
struct TkBorder *nextPtr; /* Points to the next TkBorder structure with |
79 |
* the same color name. Borders with the |
80 |
* same name but different screens or |
81 |
* colormaps are chained together off a |
82 |
* single entry in borderTable. */ |
83 |
} TkBorder; |
84 |
|
85 |
|
86 |
/* |
87 |
* Maximum intensity for a color: |
88 |
*/ |
89 |
|
90 |
#define MAX_INTENSITY 65535 |
91 |
|
92 |
/* |
93 |
* Declarations for platform specific interfaces used by this module. |
94 |
*/ |
95 |
|
96 |
extern TkBorder * TkpGetBorder _ANSI_ARGS_((void)); |
97 |
extern void TkpGetShadows _ANSI_ARGS_((TkBorder *borderPtr, |
98 |
Tk_Window tkwin)); |
99 |
extern void TkpFreeBorder _ANSI_ARGS_((TkBorder *borderPtr)); |
100 |
|
101 |
# undef TCL_STORAGE_CLASS |
102 |
# define TCL_STORAGE_CLASS DLLIMPORT |
103 |
|
104 |
#endif /* _TK3D */ |
105 |
|
106 |
/* End of tk3d.h */ |