summaryrefslogtreecommitdiff
path: root/source/fitz/output-tga.c
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2017-03-09 17:16:22 +0000
committerRobin Watts <Robin.Watts@artifex.com>2017-03-11 10:16:54 -0600
commitd032461524ee064a0025ea38e4dfc913408b7db3 (patch)
tree83855773b2d35cdb3d8cd7e352987842e128253f /source/fitz/output-tga.c
parentea00b61c7ccd14422bef33282e18fa8b4660fe74 (diff)
downloadmupdf-d032461524ee064a0025ea38e4dfc913408b7db3.tar.xz
Improve API documentation for fz_output.
Move implementation to be more in line with fz_streams. Much closer parallels now.
Diffstat (limited to 'source/fitz/output-tga.c')
-rw-r--r--source/fitz/output-tga.c42
1 files changed, 33 insertions, 9 deletions
diff --git a/source/fitz/output-tga.c b/source/fitz/output-tga.c
index b5e594b6..8a595265 100644
--- a/source/fitz/output-tga.c
+++ b/source/fitz/output-tga.c
@@ -6,21 +6,45 @@
static inline void tga_put_pixel(fz_context *ctx, fz_output *out, unsigned char *data, int n, int is_bgr)
{
- if (n >= 3 && !is_bgr)
+ switch(n)
{
- fz_putc(ctx, out, data[2]);
+ case 4: /* RGBA or BGRA */
+ if (!is_bgr) {
+ fz_putc(ctx, out, data[2]);
+ fz_putc(ctx, out, data[1]);
+ fz_putc(ctx, out, data[0]);
+ } else {
+ fz_putc(ctx, out, data[0]);
+ fz_putc(ctx, out, data[1]);
+ fz_putc(ctx, out, data[2]);
+ }
+ fz_putc(ctx, out, data[3]);
+ break;
+ case 3: /* RGB or BGR */
+ if (!is_bgr) {
+ fz_putc(ctx, out, data[2]);
+ fz_putc(ctx, out, data[1]);
+ fz_putc(ctx, out, data[0]);
+ } else {
+ fz_putc(ctx, out, data[0]);
+ fz_putc(ctx, out, data[1]);
+ fz_putc(ctx, out, data[2]);
+ }
+ fz_putc(ctx, out, 255);
+ break;
+ case 2: /* GA */
+ fz_putc(ctx, out, data[0]);
+ fz_putc(ctx, out, data[0]);
+ fz_putc(ctx, out, data[0]);
fz_putc(ctx, out, data[1]);
+ break;
+ case 1: /* GA */
fz_putc(ctx, out, data[0]);
- if (n == 4)
- fz_putc(ctx, out, data[3]);
- return;
- }
- if (n == 2)
- {
fz_putc(ctx, out, data[0]);
fz_putc(ctx, out, data[0]);
+ fz_putc(ctx, out, 255);
+ break;
}
- fz_write(ctx, out, data, n);
}
void