From 37dbda6399654f4aaf6a5062e70d85b578d2d584 Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Fri, 27 May 2016 12:26:22 +0100 Subject: Improve speed of fz_paint_affine_N_near and friends. For the common cases, avoid the loop. --- source/fitz/draw-affine.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/source/fitz/draw-affine.c b/source/fitz/draw-affine.c index d58d449a..9e029bc7 100644 --- a/source/fitz/draw-affine.c +++ b/source/fitz/draw-affine.c @@ -409,7 +409,12 @@ fz_paint_affine_N_near_fa0(byte * restrict dp, int da, const byte * restrict sp, } else { - for (k = 0; k < n1; k++) + dp[0] = sample[0]; + if (n1 > 1) + dp[1] = sample[1]; + if (n1 > 2) + dp[2] = sample[2]; + for (k = 3; k < n1; k++) dp[k] = sample[k]; if (da) dp[n1] = a; @@ -462,7 +467,12 @@ fz_paint_affine_N_near_fb0(byte * restrict dp, int da, const byte * restrict sp, } else { - for (k = 0; k < n1; k++) + dp[0] = sample[0]; + if (n1 > 1) + dp[1] = sample[1]; + if (n1 > 2) + dp[2] = sample[2]; + for (k = 3; k < n1; k++) dp[k] = sample[k]; if (da) dp[n1] = a; @@ -512,7 +522,12 @@ fz_paint_affine_N_near(byte * restrict dp, int da, const byte * restrict sp, int } else { - for (k = 0; k < n1; k++) + dp[0] = sample[0]; + if (n1 > 1) + dp[1] = sample[1]; + if (n1 > 2) + dp[2] = sample[2]; + for (k = 3; k < n1; k++) dp[k] = sample[k]; if (da) dp[n1] = a; -- cgit v1.2.3