[stroker] fix _compute_normalized_device_slope to return correct sign

The optimization to avoid sqrt() for horizontal/vertical lines in
_compute_normalized_device_slope was causing us to return a negative
magnitude with a positive slope for left-to-right and bottom-to-top
lines, instead of always returning a positive magnitude and a slope
with an appropriate sign.
This commit is contained in:
Vladimir Vukicevic 2008-02-18 17:18:51 -08:00 committed by Vladimir Vukicevic
parent 8fb624dbf2
commit f2d21e7382

View file

@ -601,13 +601,23 @@ _compute_normalized_device_slope (double *dx, double *dy, cairo_matrix_t *ctm_in
}
if (dx0 == 0.0) {
mag = dy0;
*dx = 0.0;
*dy = 1.0;
if (dy0 > 0.0) {
mag = dy0;
*dy = 1.0;
} else {
mag = -dy0;
*dy = -1.0;
}
} else if (dy0 == 0.0) {
mag = dx0;
*dx = 1.0;
*dy = 0.0;
if (dx0 > 0.0) {
mag = dx0;
*dx = 1.0;
} else {
mag = -dx0;
*dx = -1.0;
}
} else {
mag = sqrt (dx0 * dx0 + dy0 * dy0);
*dx = dx0 / mag;