aboutsummaryrefslogtreecommitdiffstats
path: root/src/blind-matrix-shear.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blind-matrix-shear.c')
-rw-r--r--src/blind-matrix-shear.c88
1 files changed, 47 insertions, 41 deletions
diff --git a/src/blind-matrix-shear.c b/src/blind-matrix-shear.c
index e6a7d2d..d8ab02c 100644
--- a/src/blind-matrix-shear.c
+++ b/src/blind-matrix-shear.c
@@ -1,52 +1,15 @@
/* See LICENSE file for copyright and license details. */
+#ifndef TYPE
#include "common.h"
-USAGE("[-a [-d]][c]")
+USAGE("[-a [-d]] [-c]")
static int by_angle = 0;
static int per_channel = 0;
static int in_degrees = 0;
-#define PROCESS(TYPE)\
- do {\
- typedef TYPE pixel_t[4];\
- pixel_t matrix[9];\
- pixel_t buf[2];\
- TYPE conv = in_degrees ? (TYPE)(M_PI / 180.) : 1;\
- size_t i;\
- \
- for (i = 0; i < stream->n_chan; i++) {\
- matrix[0][i] = 1, matrix[1][i] = 0, matrix[2][i] = 0;\
- matrix[3][i] = 0, matrix[4][i] = 1, matrix[5][i] = 0;\
- matrix[6][i] = 0, matrix[7][i] = 0, matrix[8][i] = 1;\
- }\
- \
- while (eread_frame(stream, buf)) {\
- if (by_angle) {\
- for (i = !per_channel; i < (per_channel ? stream->n_chan : 2); i++) {\
- buf[0][i] = tan(buf[0][i] * conv);\
- buf[1][i] = tan(buf[1][i] * conv);\
- }\
- }\
- if (per_channel) {\
- for (i = 0; i < stream->n_chan; i++) {\
- matrix[1][i] = buf[0][i];\
- matrix[3][i] = buf[1][i];\
- }\
- } else {\
- buf[0][1] *= buf[0][3];\
- buf[1][1] *= buf[1][3];\
- for (i = 0; i < stream->n_chan; i++) {\
- matrix[1][i] = buf[0][1];\
- matrix[3][i] = buf[1][1];\
- }\
- }\
- ewriteall(STDOUT_FILENO, matrix, sizeof(matrix), "<stdout>");\
- }\
- } while (0)
-
-static void process_lf(struct stream *stream) { PROCESS(double); }
-static void process_f(struct stream *stream) { PROCESS(float); }
+#define FILE "blind-matrix-shear.c"
+#include "define-functions.h"
int
main(int argc, char *argv[])
@@ -91,3 +54,46 @@ main(int argc, char *argv[])
process(&stream);
return 0;
}
+
+#else
+
+static void
+PROCESS(struct stream *stream)
+{
+ typedef TYPE pixel_t[4];
+ pixel_t matrix[9];
+ pixel_t buf[2];
+ TYPE conv = in_degrees ? (TYPE)(M_PI / 180.) : 1;
+ size_t i;
+
+ for (i = 0; i < stream->n_chan; i++) {
+ matrix[0][i] = 1, matrix[1][i] = 0, matrix[2][i] = 0;
+ matrix[3][i] = 0, matrix[4][i] = 1, matrix[5][i] = 0;
+ matrix[6][i] = 0, matrix[7][i] = 0, matrix[8][i] = 1;
+ }
+
+ while (eread_frame(stream, buf)) {
+ if (by_angle) {
+ for (i = !per_channel; i < (per_channel ? stream->n_chan : 2); i++) {
+ buf[0][i] = tan(buf[0][i] * conv);
+ buf[1][i] = tan(buf[1][i] * conv);
+ }
+ }
+ if (per_channel) {
+ for (i = 0; i < stream->n_chan; i++) {
+ matrix[1][i] = buf[0][i];
+ matrix[3][i] = buf[1][i];
+ }
+ } else {
+ buf[0][1] *= buf[0][3];
+ buf[1][1] *= buf[1][3];
+ for (i = 0; i < stream->n_chan; i++) {
+ matrix[1][i] = buf[0][1];
+ matrix[3][i] = buf[1][1];
+ }
+ }
+ ewriteall(STDOUT_FILENO, matrix, sizeof(matrix), "<stdout>");
+ }
+}
+
+#endif