1/* 2 * tkColor.h -- 3 * 4 * Declarations of data types and functions used by the 5 * Tk color module. 6 * 7 * Copyright (c) 1996-1997 by Sun Microsystems, Inc. 8 * 9 * See the file "license.terms" for information on usage and redistribution 10 * of this file, and for a DISCLAIMER OF ALL WARRANTIES. 11 * 12 * RCS: @(#) $Id: tkColor.h,v 1.6 1999/11/19 22:00:03 hobbs Exp $ 13 */ 14 15#ifndef _TKCOLOR 16#define _TKCOLOR 17 18#include <tkInt.h> 19 20#ifdef BUILD_tk 21# undef TCL_STORAGE_CLASS 22# define TCL_STORAGE_CLASS DLLEXPORT 23#endif 24 25/* 26 * One of the following data structures is used to keep track of 27 * each color that is being used by the application; typically there 28 * is a colormap entry allocated for each of these colors. 29 */ 30 31#define TK_COLOR_BY_NAME 1 32#define TK_COLOR_BY_VALUE 2 33 34#define COLOR_MAGIC ((unsigned int) 0x46140277) 35 36typedef struct TkColor { 37 XColor color; /* Information about this color. */ 38 unsigned int magic; /* Used for quick integrity check on this 39 * structure. Must always have the 40 * value COLOR_MAGIC. */ 41 GC gc; /* Simple gc with this color as foreground 42 * color and all other fields defaulted. 43 * May be None. */ 44 Screen *screen; /* Screen where this color is valid. Used 45 * to delete it, and to find its display. */ 46 Colormap colormap; /* Colormap from which this entry was 47 * allocated. */ 48 Visual *visual; /* Visual associated with colormap. */ 49 int resourceRefCount; /* Number of active uses of this color (each 50 * active use corresponds to a call to 51 * Tk_AllocColorFromObj or Tk_GetColor). 52 * If this count is 0, then this TkColor 53 * structure is no longer valid and it isn't 54 * present in a hash table: it is being 55 * kept around only because there are objects 56 * referring to it. The structure is freed 57 * when resourceRefCount and objRefCount 58 * are both 0. */ 59 int objRefCount; /* The number of Tcl objects that reference 60 * this structure. */ 61 int type; /* TK_COLOR_BY_NAME or TK_COLOR_BY_VALUE */ 62 Tcl_HashEntry *hashPtr; /* Pointer to hash table entry for this 63 * structure. (for use in deleting entry). */ 64 struct TkColor *nextPtr; /* Points to the next TkColor structure with 65 * the same color name. Colors with the 66 * same name but different screens or 67 * colormaps are chained together off a 68 * single entry in nameTable. For colors in 69 * valueTable (those allocated by 70 * Tk_GetColorByValue) this field is always 71 * NULL. */ 72} TkColor; 73 74/* 75 * Common APIs exported from all platform-specific implementations. 76 */ 77 78#ifndef TkpFreeColor 79EXTERN void TkpFreeColor _ANSI_ARGS_((TkColor *tkColPtr)); 80#endif 81EXTERN TkColor * TkpGetColor _ANSI_ARGS_((Tk_Window tkwin, 82 Tk_Uid name)); 83EXTERN TkColor * TkpGetColorByValue _ANSI_ARGS_((Tk_Window tkwin, 84 XColor *colorPtr)); 85 86# undef TCL_STORAGE_CLASS 87# define TCL_STORAGE_CLASS DLLIMPORT 88 89#endif /* _TKCOLOR */ 90