aboutsummaryrefslogtreecommitdiff
path: root/generic/Color.h
diff options
context:
space:
mode:
Diffstat (limited to 'generic/Color.h')
-rw-r--r--generic/Color.h57
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 */