summaryrefslogtreecommitdiff
path: root/source/fitz/draw-affine.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2016-05-27 12:26:22 +0100
committerRobin Watts <robin.watts@artifex.com>2016-05-27 17:17:53 +0100
commit37dbda6399654f4aaf6a5062e70d85b578d2d584 (patch)
treee4102a4cefc87e4d3f429f81f067a1db925765f1 /source/fitz/draw-affine.c
parent02299d992b5ea844a24eb4634f5dc5990cb7d7e1 (diff)
downloadmupdf-37dbda6399654f4aaf6a5062e70d85b578d2d584.tar.xz
Improve speed of fz_paint_affine_N_near and friends.
For the common cases, avoid the loop.
Diffstat (limited to 'source/fitz/draw-affine.c')
-rw-r--r--source/fitz/draw-affine.c21
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;