aboutsummaryrefslogtreecommitdiffstats
path: root/src/blind-triangular-wave.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blind-triangular-wave.c')
-rw-r--r--src/blind-triangular-wave.c84
1 files changed, 44 insertions, 40 deletions
diff --git a/src/blind-triangular-wave.c b/src/blind-triangular-wave.c
index 8e32d0f..b1baf53 100644
--- a/src/blind-triangular-wave.c
+++ b/src/blind-triangular-wave.c
@@ -1,4 +1,5 @@
/* See LICENSE file for copyright and license details. */
+#ifndef TYPE
#include "common.h"
USAGE("[-es]")
@@ -6,46 +7,8 @@ USAGE("[-es]")
static int equal = 0;
static int spiral = 0;
-#define PROCESS(TYPE, SUFFIX)\
- static void\
- process_##SUFFIX(struct stream *stream)\
- {\
- size_t i, j, n;\
- TYPE v, *p;\
- do {\
- if (equal) {\
- n = stream->ptr / stream->pixel_size;\
- for (i = 0; i < n; i++) {\
- p = (TYPE *)(stream->buf) + i * stream->n_chan;\
- v = posmod(*p, (TYPE)2);\
- v = v > 1 ? 2 - v : v;\
- if (spiral)\
- v = (v > (TYPE)0.5 ? 1 - v : v) * 2;\
- for (j = 0; j < stream->n_chan; j++)\
- p[j] = v;\
- }\
- n *= stream->pixel_size;\
- } else {\
- n = stream->ptr / stream->chan_size;\
- for (i = 0; i < n; i++) {\
- p = (TYPE *)(stream->buf) + i;\
- v = posmod(*p, (TYPE)2);\
- v = v > 1 ? 2 - v : v;\
- if (spiral)\
- v = (v > (TYPE)0.5 ? 1 - v : v) * 2;\
- *p = v;\
- }\
- n *= stream->chan_size;\
- }\
- ewriteall(STDOUT_FILENO, stream->buf, n, "<stdout>");\
- memmove(stream->buf, stream->buf + n, stream->ptr -= n);\
- } while (eread_stream(stream, SIZE_MAX));\
- if (stream->ptr)\
- eprintf("%s: incomplete frame\n", stream->file);\
- }
-
-PROCESS(double, lf)
-PROCESS(float, f)
+#define FILE "blind-triangular-wave.c"
+#include "define-functions.h"
int
main(int argc, char *argv[])
@@ -81,3 +44,44 @@ main(int argc, char *argv[])
process(&stream);
return 0;
}
+
+#else
+
+static void
+PROCESS(struct stream *stream)
+{
+ size_t i, j, n;
+ TYPE v, *p;
+ do {
+ if (equal) {
+ n = stream->ptr / stream->pixel_size;
+ for (i = 0; i < n; i++) {
+ p = (TYPE *)(stream->buf) + i * stream->n_chan;
+ v = posmod(*p, (TYPE)2);
+ v = v > 1 ? 2 - v : v;
+ if (spiral)
+ v = (v > (TYPE)0.5 ? 1 - v : v) * 2;
+ for (j = 0; j < stream->n_chan; j++)
+ p[j] = v;
+ }
+ n *= stream->pixel_size;
+ } else {
+ n = stream->ptr / stream->chan_size;
+ for (i = 0; i < n; i++) {
+ p = (TYPE *)(stream->buf) + i;
+ v = posmod(*p, (TYPE)2);
+ v = v > 1 ? 2 - v : v;
+ if (spiral)
+ v = (v > (TYPE)0.5 ? 1 - v : v) * 2;
+ *p = v;
+ }
+ n *= stream->chan_size;
+ }
+ ewriteall(STDOUT_FILENO, stream->buf, n, "<stdout>");
+ memmove(stream->buf, stream->buf + n, stream->ptr -= n);
+ } while (eread_stream(stream, SIZE_MAX));
+ if (stream->ptr)
+ eprintf("%s: incomplete frame\n", stream->file);
+}
+
+#endif