summaryrefslogtreecommitdiff
path: root/tk/generic/tk3d.h
diff options
context:
space:
mode:
Diffstat (limited to 'tk/generic/tk3d.h')
-rw-r--r--tk/generic/tk3d.h32
1 files changed, 24 insertions, 8 deletions
diff --git a/tk/generic/tk3d.h b/tk/generic/tk3d.h
index 71115f2cf5f..c62cf12de5a 100644
--- a/tk/generic/tk3d.h
+++ b/tk/generic/tk3d.h
@@ -4,7 +4,7 @@
* Declarations of types and functions shared by the 3d border
* module.
*
- * Copyright (c) 1996 by Sun Microsystems, Inc.
+ * Copyright (c) 1996-1997 by Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -23,13 +23,13 @@
#endif
/*
- * One of the following data structures is allocated for
- * each 3-D border currently in use. Structures of this
- * type are indexed by borderTable, so that a single
- * structure can be shared for several uses.
+ * One of the following data structures is allocated for each 3-D border
+ * currently in use. Structures of this type are indexed by
+ * borderTable, so that a single structure can be shared for several
+ * uses.
*/
-typedef struct {
+typedef struct TkBorder {
Screen *screen; /* Screen on which the border will be used. */
Visual *visual; /* Visual for all windows and pixmaps using
* the border. */
@@ -37,8 +37,18 @@ typedef struct {
* the border will be used. */
Colormap colormap; /* Colormap out of which pixels are
* allocated. */
- int refCount; /* Number of different users of
- * this border. */
+ int resourceRefCount; /* Number of active uses of this color (each
+ * active use corresponds to a call to
+ * Tk_Alloc3DBorderFromObj or Tk_Get3DBorder).
+ * If this count is 0, then this structure
+ * is no longer valid and it isn't present
+ * in borderTable: it is being kept around
+ * only because there are objects referring
+ * to it. The structure is freed when
+ * resourceRefCount and objRefCount are
+ * both 0. */
+ int objRefCount; /* The number of Tcl objects that reference
+ * this structure. */
XColor *bgColorPtr; /* Background color (intensity
* between lightColorPtr and
* darkColorPtr). */
@@ -63,6 +73,11 @@ typedef struct {
* haven't been allocated yet. */
Tcl_HashEntry *hashPtr; /* Entry in borderTable (needed in
* order to delete structure). */
+ struct TkBorder *nextPtr; /* Points to the next TkBorder structure with
+ * the same color name. Borders with the
+ * same name but different screens or
+ * colormaps are chained together off a
+ * single entry in borderTable. */
} TkBorder;
@@ -85,3 +100,4 @@ EXTERN void TkpFreeBorder _ANSI_ARGS_((TkBorder *borderPtr));
# define TCL_STORAGE_CLASS DLLIMPORT
#endif /* _TK3D */
+