diff options
Diffstat (limited to 'generic/Color.h')
-rw-r--r-- | generic/Color.h | 57 |
1 files changed, 45 insertions, 12 deletions
diff --git a/generic/Color.h b/generic/Color.h index 140c2ea..c7ac91e 100644 --- a/generic/Color.h +++ b/generic/Color.h @@ -34,24 +34,57 @@ #include "Types.h" -typedef struct _ColorGradient *ZnColorGradient; +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); -ZnColorGradient ZnGetColorGradient(Tcl_Interp *interp, Tk_Window tkwin, - Tk_Uid name); -ZnColorGradient ZnGetColorGradientByValue(ZnColorGradient gradient); -ZnColorGradient ZnGetReliefGradient(Tcl_Interp *interp, Tk_Window tkwin, - Tk_Uid name); -int ZnColorGradientSpan(ZnColorGradient); -XColor *ZnColorGradientColor(Tk_Window tkwin, ZnColorGradient gradient, - int color_index); -XColor *ZnColorGradientMidColor(Tk_Window tkwin, ZnColorGradient gradient); -char *ZnNameOfColorGradient(ZnColorGradient gradient); -void ZnFreeColorGradient(ZnColorGradient gradient); +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 */ |