aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--generic/Color.h29
1 files changed, 18 insertions, 11 deletions
diff --git a/generic/Color.h b/generic/Color.h
index f0f2369..16c0ca2 100644
--- a/generic/Color.h
+++ b/generic/Color.h
@@ -41,6 +41,7 @@
#define ZN_AXIAL_GRADIENT 0
#define ZN_RADIAL_GRADIENT 1
#define ZN_PATH_GRADIENT 2
+#define ZN_CONICAL_GRADIENT 3
typedef struct _ZnGradientColor {
unsigned char position; /* Color starting position along the gradient axis.
@@ -58,26 +59,32 @@ typedef struct _ZnGradient {
Tcl_HashEntry *hash;
char type; /* Either ZN_AXIAL_GRADIENT, ZN_RADIAL_GRADIENT or
* ZN_PATH_GRADIENT. */
- ZnBool simple; /* Angle is used for axial gradients, end is not
- * specified for paths/radials. */
- union {
- int angle; /* Angle spec for an axial gradient (Degrees). */
- ZnPoint p; /* Start for an axial/radial/path gradiant. */
- } g;
- ZnPoint e; /* End of the gradiant. */
- unsigned int num_colors; /* Number of colors in gradient spec. */
- ZnGradientColor colors[1];
+ int angle; /* Angle for an axial gradient (Degrees). */
+ ZnPoint p; /* Start for an axial/radial/path gradiant. In
+ * percent of the bbox. */
+ ZnPoint e; /* End of the axial/radial gradiant in percent
+ * of bbox. */
+ unsigned int num_actual_colors;/* Number of adjusted colors */
+ ZnGradientColor *actual_colors;/* Actual adjusted gradient color spec. May
+ * be the same array as color_spec. */
+ unsigned int num_colors_in; /* Number of colors in gradient spec. */
+ ZnGradientColor colors_in[1]; /* Gradient color spec */
} ZnGradient;
+#define ZnGetGradientPixel(gradient, position) \
+ ZnPixel(ZnGetGradientColor(gradient, position, NULL))
+
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, unsigned short alpha);
ZnBool ZnGradientFlat(ZnGradient *grad);
-XColor *ZnGetGradientColor(ZnGradient *gradient,
- ZnReal position, unsigned short *alpha);
+XColor *ZnGetGradientColor(ZnGradient *gradient, ZnReal position,
+ unsigned short *alpha);
+void ZnInterpGradientColor(ZnGradient *gradient, ZnReal position,
+ XColor *color, unsigned short *alpha);
char *ZnNameOfGradient(ZnGradient *gradient);
void ZnFreeGradient(ZnGradient *gradient);
void ZnDeleteGradientName(char *name);