diff options
author | Robin Watts <robin.watts@artifex.com> | 2016-05-27 15:36:22 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2016-05-29 10:11:36 +0100 |
commit | 388e34e47dcf6132f63877d133d6d7679d1b8537 (patch) | |
tree | 5dfbdd5b9498cadbed28b5f4afa9095f9a445d97 | |
parent | 6ac9843782043fd221db156de525fc825ecdeb0c (diff) | |
download | mupdf-388e34e47dcf6132f63877d133d6d7679d1b8537.tar.xz |
Improve speed of fz_paint_solid_color and friends.
-rw-r--r-- | source/fitz/draw-paint.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/source/fitz/draw-paint.c b/source/fitz/draw-paint.c index 5828842f..41f1a220 100644 --- a/source/fitz/draw-paint.c +++ b/source/fitz/draw-paint.c @@ -240,10 +240,15 @@ fz_paint_solid_color_N_general(byte * restrict dp, int n, int w, const byte * re { while (w--) { - for (k = 0; k < n1; k++) + dp[0] = color[0]; + if (n1 > 1) + dp[1] = color[1]; + if (n1 > 2) + dp[2] = color[2]; + for (k = 3; k < n1; k++) dp[k] = color[k]; if (da) - dp[k] = 255; + dp[n1] = 255; dp += n; } } @@ -510,17 +515,23 @@ fz_paint_span_with_color_N_general(byte * restrict dp, const byte * restrict mp, } else if (ma == 256) { - for (k = 0; k < n1; k++) + if (n1 > 0) + dp[0] = color[0]; + if (n1 > 1) + dp[1] = color[1]; + if (n1 > 2) + dp[2] = color[2]; + for (k = 3; k < n1; k++) dp[k] = color[k]; if (da) - dp[k] = 255; + dp[n1] = 255; } else { for (k = 0; k < n1; k++) dp[k] = FZ_BLEND(color[k], dp[k], ma); if (da) - dp[k] = FZ_BLEND(255, dp[k], ma); + dp[n1] = FZ_BLEND(255, dp[k], ma); } dp += n; } |