aboutsummaryrefslogtreecommitdiff
path: root/generic/Color.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/Color.c')
-rw-r--r--generic/Color.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/generic/Color.c b/generic/Color.c
index 664b1e0..236b6db 100644
--- a/generic/Color.c
+++ b/generic/Color.c
@@ -448,18 +448,18 @@ InterpolateGradientColor(Tk_Window tkwin,
/*printf("pos1: %g, pos2: %g, interp_rel_pos: %g\n", pos1, pos2, interp_rel_pos);*/
if (interp_rel_pos < gc1->control) {
- tmp = interp_rel_pos * 100 / gc1->control;
- rgb.red = gc1->rgb->red + (gc1->mid_rgb->red - gc1->rgb->red) * tmp / 100;
- rgb.green = gc1->rgb->green + (gc1->mid_rgb->green - gc1->rgb->green) * tmp / 100;
- rgb.blue = gc1->rgb->blue + (gc1->mid_rgb->blue - gc1->rgb->blue) * tmp / 100;
- gc_interp->alpha = gc1->alpha + (gc1->mid_alpha - gc1->alpha) * tmp / 100;
+ tmp = interp_rel_pos * 100.0 / gc1->control;
+ rgb.red = (unsigned short) (gc1->rgb->red + (gc1->mid_rgb->red - gc1->rgb->red) * tmp / 100.0);
+ rgb.green = (unsigned short) (gc1->rgb->green + (gc1->mid_rgb->green - gc1->rgb->green) * tmp / 100.0);
+ rgb.blue = (unsigned short) (gc1->rgb->blue + (gc1->mid_rgb->blue - gc1->rgb->blue) * tmp / 100.0);
+ gc_interp->alpha = (unsigned char) (gc1->alpha + (gc1->mid_alpha - gc1->alpha) * tmp / 100.0);
}
else if (interp_rel_pos > gc1->control) {
- tmp = (interp_rel_pos - gc1->control) * 100 / (100 - gc1->control);
- rgb.red = gc1->mid_rgb->red + (gc2->rgb->red - gc1->mid_rgb->red)*tmp/100;
- rgb.green = gc1->mid_rgb->green + (gc2->rgb->green - gc1->mid_rgb->green)*tmp/100;
- rgb.blue = gc1->mid_rgb->blue + (gc2->rgb->blue - gc1->mid_rgb->blue)*tmp/100;
- gc_interp->alpha = gc1->mid_alpha + (gc2->alpha - gc1->mid_alpha)*tmp/100;
+ tmp = (interp_rel_pos - gc1->control) * 100.0 / (100.0 - gc1->control);
+ rgb.red = (unsigned short) (gc1->mid_rgb->red + (gc2->rgb->red - gc1->mid_rgb->red)*tmp / 100.0);
+ rgb.green = (unsigned short) (gc1->mid_rgb->green + (gc2->rgb->green - gc1->mid_rgb->green)*tmp / 100.0);
+ rgb.blue = (unsigned short) (gc1->mid_rgb->blue + (gc2->rgb->blue - gc1->mid_rgb->blue)*tmp / 100.0);
+ gc_interp->alpha = (unsigned char) (gc1->mid_alpha + (gc2->alpha - gc1->mid_alpha)*tmp / 100.0);
}
else {
rgb = *gc1->mid_rgb;
@@ -474,7 +474,7 @@ InterpolateGradientColor(Tk_Window tkwin,
*/
gc_interp->position = 0;
if (interp_rel_pos < gc1->control) {
- gc_interp->control = gc1->control-interp_rel_pos;
+ gc_interp->control = gc1->control - (int) interp_rel_pos;
gc_interp->mid_rgb = Tk_GetColorByValue(tkwin, gc1->mid_rgb);
gc_interp->mid_alpha = gc1->mid_alpha;
}