aboutsummaryrefslogtreecommitdiffstats
path: root/src/blind-translate.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2017-05-10 16:59:26 +0200
committerMattias Andrée <maandree@kth.se>2017-05-10 16:59:26 +0200
commit6b998b5ed066aeece1146fe245b35965319b3cbd (patch)
treec963b48fbefafcec89a4e4af238869a1cb51148e /src/blind-translate.c
parentblind-flip is optimal (diff)
downloadblind-6b998b5ed066aeece1146fe245b35965319b3cbd.tar.gz
blind-6b998b5ed066aeece1146fe245b35965319b3cbd.tar.bz2
blind-6b998b5ed066aeece1146fe245b35965319b3cbd.tar.xz
Cleaner code
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/blind-translate.c')
-rw-r--r--src/blind-translate.c46
1 files changed, 20 insertions, 26 deletions
diff --git a/src/blind-translate.c b/src/blind-translate.c
index d8f44e2..6b0ebd8 100644
--- a/src/blind-translate.c
+++ b/src/blind-translate.c
@@ -2,10 +2,7 @@
#include "stream.h"
#include "util.h"
-#include <inttypes.h>
-#include <math.h>
#include <string.h>
-#include <unistd.h>
USAGE("[-wp] translation-stream")
@@ -29,25 +26,24 @@ next_pixel(struct stream *stream, size_t *ptr)
}
static int
-process_frame(struct stream *stream, char *buf, size_t n,
- size_t above, size_t below, size_t left, size_t right)
+process_frame(struct stream *stream, char *buf, size_t above, size_t below, size_t left, size_t right)
{
#define ZEROES(N) ewritezeroes(STDOUT_FILENO, zeroes, sizeof(zeroes), N, "<stdout>")
- size_t i, w = n - left - right;
+ size_t i, w = stream->row_size - left - right;
int first = 1;
- if (!eread_row(stream, buf, n))
+ if (!eread_row(stream, buf))
return 0;
for (i = 0; i < above; i++)
- ZEROES(n);
+ ZEROES(stream->row_size);
for (i = 0; i < below; i++, first = 0)
- if (!first && !eread_row(stream, buf, n))
+ if (!first && !eread_row(stream, buf))
goto eof;
for (i = above + below; i < stream->height; i++, first = 0) {
- if (!first && !eread_row(stream, buf, n))
+ if (!first && !eread_row(stream, buf))
goto eof;
ZEROES((size_t)left);
ewriteall(STDOUT_FILENO, buf + right, w, "<stdout>");
@@ -55,9 +51,9 @@ process_frame(struct stream *stream, char *buf, size_t n,
}
for (i = 0; i < below; i++)
- ZEROES(n);
+ ZEROES(stream->row_size);
for (i = 0; i < above; i++, first = 0)
- if (!first && !eread_row(stream, buf, n))
+ if (!first && !eread_row(stream, buf))
goto eof;
return 1;
@@ -70,16 +66,15 @@ static void
process(struct stream *stream, struct stream *trstream)
{
char *buf;
- size_t n, p = 0;
+ size_t p = 0;
double *trans, tmp;
ssize_t trx = 0, try = 0;
size_t above = 0, below = 0, left = 0, right = 0;
memset(zeroes, 0, sizeof(zeroes));
- echeck_frame_size(stream->width, 1, stream->pixel_size, 0, stream->file);
- n = stream->width * stream->pixel_size;
- buf = emalloc(n);
+ echeck_dimensions(stream, WIDTH, NULL);
+ buf = emalloc(stream->row_size);
do {
if ((trans = next_pixel(trstream, &p))) {
@@ -93,10 +88,10 @@ process(struct stream *stream, struct stream *trstream)
above = MIN(above, stream->height);
below = MIN(below, stream->height);
- left = MIN(left, n);
- right = MIN(right, n);
+ left = MIN(left, stream->row_size);
+ right = MIN(right, stream->row_size);
}
- } while (process_frame(stream, buf, n, above, below, left, right));
+ } while (process_frame(stream, buf, above, below, left, right));
free(buf);
}
@@ -105,16 +100,15 @@ static void
process_wrap(struct stream *stream, struct stream *trstream)
{
char *buf, *row;
- size_t n, rown, p = 0;
+ size_t p = 0;
double *trans, tmp;
ssize_t trx = 0, try = 0, py;
size_t off = 0, y;
- echeck_frame_size(stream->width, stream->height, stream->pixel_size, 0, "<stdin>");
- n = stream->height * (rown = stream->width * stream->pixel_size);
- buf = emalloc(n);
+ echeck_dimensions(stream, WIDTH | HEIGHT, NULL);
+ buf = emalloc(stream->frame_size);
- while (eread_frame(stream, buf, n)) {
+ while (eread_frame(stream, buf)) {
if ((trans = next_pixel(trstream, &p))) {
trx = (ssize_t)(tmp = round(invtrans ? -trans[0] : trans[0]));
try = (ssize_t)(tmp = round(invtrans ? -trans[1] : trans[1]));
@@ -129,8 +123,8 @@ process_wrap(struct stream *stream, struct stream *trstream)
py = ((ssize_t)y - try) % (ssize_t)stream->height;
if (py < 0)
py += (ssize_t)stream->height;
- row = buf + (size_t)py * rown;
- ewriteall(STDOUT_FILENO, row + off, rown - off, "<stdout>");
+ row = buf + (size_t)py * stream->row_size;
+ ewriteall(STDOUT_FILENO, row + off, stream->row_size - off, "<stdout>");
ewriteall(STDOUT_FILENO, row, off, "<stdout>");
}
}