1 |
dashley |
69 |
/* $Header$ */
|
2 |
dashley |
25 |
|
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 |
dashley |
69 |
/* End of tk3d.h */
|