/* * Color.h -- Header for color routines. * * Authors : Patrick Lecoanet. * Creation date : Thu Dec 16 15:41:04 1999 * * $Id$ */ /* * Copyright (c) 1993 - 1999 CENA, Patrick Lecoanet -- * * This code is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This code is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this code; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ #ifndef _Color_h #define _Color_h #include "Types.h" typedef struct _GradientColor { int position; /* Color starting position along the gradient axis. * This is in percent of the gradient total size. */ int control; /* Middle-shade position in percent of this color * size along the gradient axis. */ XColor *shades[1]; /* The real shades used to draw this color segment. * The number of shades is constant for all the colors * of a given gradient and is setup in num_shades. */ } ZnGradientColor; typedef struct _Gradient { Screen *screen; /* Screen on which the gradient will be used. */ Visual *visual; /* Visual for all windows and pixmaps using * the gradient. */ int depth; /* Number of bits per pixel of drawables where * the gradient will be used. */ Colormap colormap; /* Colormap out of which pixels are allocated. */ int ref_count; Tcl_HashEntry *hash; ZnBool realized; char type; /* Either ZN_AXIAL_GRADIENT (lines) or * ZN_RADIAL_GRADIENT (circles). */ union { int angle; /* Angle spec for an axial gradient (Degrees). */ struct { int x; /* Center for a radial gradiant (percent of */ int y; /* area size). */ } c; } g; int num_shades; /* Number of shades used for each color */ int num_colors; /* Number of colors in gradient spec. */ ZnGradientColor *colors[1]; } ZnGradient; XColor *ZnGetColor(Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid name); XColor *ZnGetColorByValue(Tk_Window tkwin, XColor *color); char *ZnNameOfColor(XColor *color); void ZnFreeColor(XColor *color); ZnGradient *ZnGetGradient(Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid name); ZnGradient *ZnGetGradientByValue(ZnGradient *gradient); ZnGradient *ZnGetReliefGradient(Tcl_Interp *interp, Tk_Window tkwin, Tk_Uid name); ZnBool ZnGradientFlat(ZnGradient *grad); XColor *ZnGetGradientColor(Tk_Window tkwin, ZnGradient *gradient, ZnReal position); char *ZnNameOfGradient(ZnGradient *gradient); void ZnFreeGradient(ZnGradient *gradient); void ZnRealizeGradient(ZnGradient *grad, Tk_Window tkwin); #endif /* _Color_h */