diff options
| author | Mattias Andrée <maandree@kth.se> | 2017-01-11 09:30:33 +0100 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2017-01-11 09:30:33 +0100 |
| commit | a21ebe8bea569e7d8961b9711d430d21c92f769b (patch) | |
| tree | dda3810db2e7ad3683bdfc6f68538da144c2a0c8 /src/vu-invert-luma.c | |
| parent | Clean up code (diff) | |
| download | blind-a21ebe8bea569e7d8961b9711d430d21c92f769b.tar.gz blind-a21ebe8bea569e7d8961b9711d430d21c92f769b.tar.bz2 blind-a21ebe8bea569e7d8961b9711d430d21c92f769b.tar.xz | |
Reuse code
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
| -rw-r--r-- | src/vu-invert-luma.c | 47 |
1 files changed, 1 insertions, 46 deletions
diff --git a/src/vu-invert-luma.c b/src/vu-invert-luma.c index 2089e8f..aa3b260 100644 --- a/src/vu-invert-luma.c +++ b/src/vu-invert-luma.c @@ -42,7 +42,6 @@ main(int argc, char *argv[]) { int invert = 0; struct stream colour, mask; - size_t n; void (*process)(struct stream *colour, struct stream *mask, size_t n) = NULL; ARGBEGIN { @@ -64,55 +63,11 @@ main(int argc, char *argv[]) mask.fd = eopen(mask.file, O_RDONLY); einit_stream(&mask); - echeck_compat(&colour, &mask); - if (!strcmp(colour.pixfmt, "xyza")) process = invert ? process_xyza_i : process_xyza; else eprintf("pixel format %s is not supported, try xyza\n", colour.pixfmt); - for (;;) { - if (colour.ptr < sizeof(colour.buf) && !eread_stream(&colour, SIZE_MAX)) { - close(colour.fd); - colour.fd = -1; - break; - } - if (mask.ptr < sizeof(mask.buf) && !eread_stream(&mask, SIZE_MAX)) { - close(mask.fd); - mask.fd = -1; - break; - } - - n = colour.ptr < mask.ptr ? colour.ptr : mask.ptr; - n -= n % colour.pixel_size; - colour.ptr -= n; - mask.ptr -= n; - - process(&colour, &mask, n); - - ewriteall(STDOUT_FILENO, colour.buf, n, "<stdout>"); - if ((n & 3) || colour.ptr != mask.ptr) { - memmove(colour.buf, colour.buf + n, colour.ptr); - memmove(mask.buf, mask.buf + n, mask.ptr); - } - } - - if (mask.fd >= 0) - close(mask.fd); - - ewriteall(STDOUT_FILENO, colour.buf, colour.ptr, "<stdout>"); - - if (colour.fd >= 0) { - for (;;) { - colour.ptr = 0; - if (!eread_stream(&colour, SIZE_MAX)) { - close(colour.fd); - colour.fd = -1; - break; - } - ewriteall(STDOUT_FILENO, colour.buf, colour.ptr, "<stdout>"); - } - } - + process_two_streams(&colour, &mask, STDOUT_FILENO, "<stdout>", process); return 0; } |
