From a21ebe8bea569e7d8961b9711d430d21c92f769b Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Wed, 11 Jan 2017 09:30:33 +0100 Subject: Reuse code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/vu-set-alpha.c | 47 +---------------------------------------------- 1 file changed, 1 insertion(+), 46 deletions(-) (limited to 'src/vu-set-alpha.c') diff --git a/src/vu-set-alpha.c b/src/vu-set-alpha.c index 3288126..2e80154 100644 --- a/src/vu-set-alpha.c +++ b/src/vu-set-alpha.c @@ -38,7 +38,6 @@ main(int argc, char *argv[]) { int invert = 0; struct stream colour, alpha; - size_t n; void (*process)(struct stream *colour, struct stream *alpha, size_t n) = NULL; ARGBEGIN { @@ -60,55 +59,11 @@ main(int argc, char *argv[]) alpha.fd = eopen(alpha.file, O_RDONLY); einit_stream(&alpha); - echeck_compat(&colour, &alpha); - 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 (alpha.ptr < sizeof(alpha.buf) && !eread_stream(&alpha, SIZE_MAX)) { - close(alpha.fd); - alpha.fd = -1; - break; - } - - n = colour.ptr < alpha.ptr ? colour.ptr : alpha.ptr; - n -= n % colour.pixel_size; - colour.ptr -= n; - alpha.ptr -= n; - - process(&colour, &alpha, n); - - ewriteall(STDOUT_FILENO, colour.buf, n, ""); - if ((n & 3) || colour.ptr != alpha.ptr) { - memmove(colour.buf, colour.buf + n, colour.ptr); - memmove(alpha.buf, alpha.buf + n, alpha.ptr); - } - } - - if (alpha.fd >= 0) - close(alpha.fd); - - ewriteall(STDOUT_FILENO, colour.buf, colour.ptr, ""); - - 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, ""); - } - } - + process_two_streams(&colour, &alpha, STDOUT_FILENO, "", process); return 0; } -- cgit v1.2.3-70-g09d2