diff options
author | Robin Watts <Robin.Watts@artifex.com> | 2017-03-09 17:16:22 +0000 |
---|---|---|
committer | Robin Watts <Robin.Watts@artifex.com> | 2017-03-11 10:16:54 -0600 |
commit | d032461524ee064a0025ea38e4dfc913408b7db3 (patch) | |
tree | 83855773b2d35cdb3d8cd7e352987842e128253f /source/fitz/output-tga.c | |
parent | ea00b61c7ccd14422bef33282e18fa8b4660fe74 (diff) | |
download | mupdf-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.c | 42 |
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 |