diff options
author | Robin Watts <robin.watts@artifex.com> | 2016-05-27 12:26:22 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2016-05-27 17:17:53 +0100 |
commit | 37dbda6399654f4aaf6a5062e70d85b578d2d584 (patch) | |
tree | e4102a4cefc87e4d3f429f81f067a1db925765f1 | |
parent | 02299d992b5ea844a24eb4634f5dc5990cb7d7e1 (diff) | |
download | mupdf-37dbda6399654f4aaf6a5062e70d85b578d2d584.tar.xz |
Improve speed of fz_paint_affine_N_near and friends.
For the common cases, avoid the loop.
-rw-r--r-- | source/fitz/draw-affine.c | 21 |
1 files 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; |