summaryrefslogtreecommitdiffstats
path: root/generic/tkColor.h
blob: e2d9aff5bd1462479640a3fad22dd373ee83b013 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*

 * tkColor.h --

 *

 *	Declarations of data types and functions used by the Tk color module.

 *

 * 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.

 *

 * RCS: @(#) $Id: tkColor.h,v 1.9 2007/06/24 16:07:34 dkf Exp $

 */

#ifndef _TKCOLOR

#define _TKCOLOR


#include <tkInt.h>


#ifdef BUILD_tk

#undef TCL_STORAGE_CLASS

#define TCL_STORAGE_CLASS DLLEXPORT

#endif


/*

 * One of the following data structures is used to keep track of each color

 * that is being used by the application; typically there is a colormap entry

 * allocated for each of these colors.

 */

#define TK_COLOR_BY_NAME	1

#define TK_COLOR_BY_VALUE	2


#define COLOR_MAGIC ((unsigned int) 0x46140277)


typedef struct TkColor {
    XColor color;		/* Information about this color. */
    unsigned int magic;		/* Used for quick integrity check on this

				 * structure. Must always have the value

				 * COLOR_MAGIC. */
    GC gc;			/* Simple gc with this color as foreground

				 * color and all other fields defaulted. May

				 * be None. */
    Screen *screen;		/* Screen where this color is valid. Used to

				 * delete it, and to find its display. */
    Colormap colormap;		/* Colormap from which this entry was

				 * allocated. */
    Visual *visual;		/* Visual associated with colormap. */
    int resourceRefCount;	/* Number of active uses of this color (each

				 * active use corresponds to a call to

				 * Tk_AllocColorFromObj or Tk_GetColor). If

				 * this count is 0, then this TkColor

				 * structure is no longer valid and it isn't

				 * present in a hash table: 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. */
    int type;			/* TK_COLOR_BY_NAME or TK_COLOR_BY_VALUE. */
    Tcl_HashEntry *hashPtr;	/* Pointer to hash table entry for this

				 * structure. (for use in deleting entry). */
    struct TkColor *nextPtr;	/* Points to the next TkColor structure with

				 * the same color name. Colors with the same

				 * name but different screens or colormaps are

				 * chained together off a single entry in

				 * nameTable. For colors in valueTable (those

				 * allocated by Tk_GetColorByValue) this field

				 * is always NULL. */
} TkColor;

/*

 * Common APIs exported from all platform-specific implementations.

 */

#ifndef TkpFreeColor

MODULE_SCOPE void	TkpFreeColor(TkColor *tkColPtr);
#endif

MODULE_SCOPE TkColor *	TkpGetColor(Tk_Window tkwin, Tk_Uid name);
MODULE_SCOPE TkColor *	TkpGetColorByValue(Tk_Window tkwin, XColor *colorPtr);

#undef TCL_STORAGE_CLASS

#define TCL_STORAGE_CLASS DLLIMPORT


#endif /* _TKCOLOR */