diff options
Diffstat (limited to 'generic')
-rw-r--r-- | generic/Color.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/generic/Color.c b/generic/Color.c index c853808..450580c 100644 --- a/generic/Color.c +++ b/generic/Color.c @@ -1119,7 +1119,7 @@ ZnGetGradient(Tcl_Interp *interp, ZnGradient *grad; int i, j, new, num_colors, num_shades; char type, *scan_ptr; - int num_tok, angle; + int num_tok, angle, position, control; double x, y; char *color_ptr, color_name[COLOR_NAME_SIZE]; char buffer[GRADIENT_NAME_SIZE]; @@ -1236,9 +1236,13 @@ ZnGetGradient(Tcl_Interp *interp, grad->colors[i]->position = 0; grad->colors[i]->control = 50; grad->colors[i]->alpha = 100; - num_tok = sscanf(scan_ptr, "%s %d %d", color_name, - &grad->colors[i]->position, - &grad->colors[i]->control); + num_tok = sscanf(scan_ptr, "%s %d %d", color_name, &position, &control); + if (num_tok > 1) { + grad->colors[i]->position = position; + } + if (num_tok > 2) { + grad->colors[i]->control = control; + } if (num_tok == 0) { Tcl_AppendResult(interp, "incorrect gradient format \"", name, "\",", NULL); @@ -1278,22 +1282,15 @@ ZnGetGradient(Tcl_Interp *interp, } if ((num_tok > 2) && (i > 0)) { if ((grad->colors[i]->position > 100) || - (grad->colors[i]->position < 0) || (grad->colors[i]->position < grad->colors[i-1]->position)) { Tcl_AppendResult(interp, "incorrect color position in gradient \"", name, "\",", NULL); goto grad_err; } } - if (grad->colors[i]->control < 0) { - grad->colors[i]->control = 0; - } if (grad->colors[i]->control > 100) { grad->colors[i]->control = 100; } - if (grad->colors[i]->alpha < 0) { - grad->colors[i]->alpha = 0; - } if (grad->colors[i]->alpha > 100) { grad->colors[i]->alpha = 100; } |