/* * 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 { unsigned char position; /* Color starting position along the gradient axis. * This is in percent of the gradient total size. */ unsigned char control; /* Middle-shade position in percent of this color * size along the gradient axis. */ unsigned char alpha; /* The color alpha channel in percent */ unsigned char mid_alpha; XColor *rgb; /* The actual color description */ XColor *mid_rgb; } ZnGradientColor; typedef struct _Gradient { int ref_count; Tcl_HashEntry *hash; char type; /* Either ZN_AXIAL_GRADIENT (lines) or * ZN_RADIAL_GRADIENT (circles). */ union { int angle; /* Angle spec for an axial gradient (Degrees). */ ZnPoint p; /* Center for a radial gradiant. */ } g; 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(ZnGradient *gradient, ZnReal position, int *alpha); char *ZnNameOfGradient(ZnGradient *gradient); void ZnFreeGradient(ZnGradient *gradient); void ZnDeleteGradientName(char *name); ZnBool ZnNameGradient(Tcl_Interp *interp, Tk_Window tkwin, char *grad_descr, char *name); int ZnComposeAlpha(int alpha1, int alpha2); #endif /* _Color_h */