(wrong string) ée

From: <git_AT_suckless.org>
Date: Fri, 14 Jul 2017 21:17:39 +0200 (CEST)

commit e650c912ba86c84cdad466674a0ca0c4ebadef9c
Author: Mattias Andrée <maandree_AT_kth.se>
AuthorDate: Fri Jul 14 20:57:45 2017 +0200
Commit: Mattias Andrée <maandree_AT_kth.se>
CommitDate: Fri Jul 14 20:57:45 2017 +0200

    Fix blind-invert-matrix and increase percision of blind-to-text
    
    Signed-off-by: Mattias Andrée <maandree_AT_kth.se>

diff --git a/TODO b/TODO
index cd9e8d1..ade3fca 100644
--- a/TODO
+++ b/TODO
_AT_@ -1,3 +1,8 @@
+HIGH PRIORITY:
+ blind-cat-rows and blind-cat-cols randomly produces incorrect results
+
+
+
 blind-transform affine transformation by matrix multiplication, -t for tiling, -s for
                                 improve quality on downscaling (pixels' neighbours must not change).
 blind-primary-key replace a primary with transparency, -g for greyscaled images.
diff --git a/man/blind-invert-matrix.1 b/man/blind-invert-matrix.1
index d1f2dbc..e239762 100644
--- a/man/blind-invert-matrix.1
+++ b/man/blind-invert-matrix.1
_AT_@ -21,6 +21,11 @@ resuling augment is printed.
 .B -e
 Apply optimisation that assumes all channels
 are identical.
+.SH NOTES
+.B blind-invert-matrix
+fails if it encounters a non-invertable
+matrix, however, this is not always the
+case.
 .SH SEE ALSO
 .BR blind (7),
 .BR blind-multiply-matrices (1),
diff --git a/man/blind-matrix-shear.1 b/man/blind-matrix-shear.1
index 0eb1499..56d856d 100644
--- a/man/blind-matrix-shear.1
+++ b/man/blind-matrix-shear.1
_AT_@ -43,7 +43,9 @@ The description assumes the Y-axis grows downwards.
 Horizontal shearing and vertical shearing is not
 mutually commutative, this tool performs the
 shearing at the same time rather than after each
-other.
+other. When shearing both horizontally and
+vertically, the transformation matrix is not
+necessarily invertable.
 .SH SEE ALSO
 .BR blind (7),
 .BR blind-from-text (1),
diff --git a/src/blind-invert-matrix.c b/src/blind-invert-matrix.c
index 69576ac..32cc119 100644
--- a/src/blind-invert-matrix.c
+++ b/src/blind-invert-matrix.c
_AT_@ -18,7 +18,7 @@ static int equal = 0;
                 typedef TYPE pixel_t[4];\
                 size_t rn = stream->height, r1, r2, c;\
                 size_t cn = stream->width > rn ? stream->width : 2 * rn;\
- pixel_t *matrix = buf, *p1, *p2 = NULL;\
+ pixel_t *matrix = buf, *p1, *p2;\
                 TYPE t;\
                 \
                 for (r1 = 0; r1 < rn; r1++) {\
_AT_@ -29,7 +29,7 @@ static int equal = 0;
                                         if (p2[r1][0])\
                                                 break;\
                                 }\
- if (r2 == rn)\
+ if (r2 >= rn)\
                                         eprintf("matrix is not invertable\n");\
                                 for (c = 0; c < cn; c++)\
                                         t = p1[c][0], p1[c][0] = p2[c][0], p2[c][0] = t;\
_AT_@ -82,9 +82,11 @@ main(int argc, char *argv[])
         efflush(stdout, "<stdout>");
 
         if (!strcmp(stream.pixfmt, "xyza")) {
+ one = alloca(4 * sizeof(double));
                 *(double *)one = 1;
                 process = process_lf;
         } else if (!strcmp(stream.pixfmt, "xyza f")) {
+ one = alloca(4 * sizeof(float));
                 *(float *)one = 1;
                 process = process_f;
         } else {
_AT_@ -105,7 +107,7 @@ main(int argc, char *argv[])
                         for (y = stream.height; y--;) {
                                 memmove(buf + y * row_size, buf + y * stream.row_size, stream.row_size);
                                 memset(buf + y * row_size + stream.row_size, 0, stream.row_size);
- memcpy(buf + y * row_size + y * stream.pixel_size, one, stream.pixel_size);
+ memcpy(buf + y * row_size + stream.row_size + y * stream.pixel_size, one, stream.pixel_size);
                         }
                 }
                 if (equal) {
_AT_@ -113,7 +115,7 @@ main(int argc, char *argv[])
                         for (y = 0; y < stream.height; y++) {
                                 for (x = 0; x < stream.width; x++) {
                                         p = buf + y * row_size + x * stream.pixel_size;
- memcpy(p + chan_size, p, chan_size);
+ memcpy(p, p + chan_size, chan_size);
                                         memcpy(p + 2 * chan_size, p, 2 * chan_size);
                                 }
                         }
_AT_@ -124,7 +126,7 @@ main(int argc, char *argv[])
                         process(&stream, buf + 3 * chan_size);
                 }
                 for (y = 0; y < stream.height; y++)
- ewriteall(STDOUT_FILENO, buf + y * row_size + stream.row_size, stream.row_size, "<stdout>");
+ ewriteall(STDOUT_FILENO, buf + y * row_size + stream.col_size, row_size - stream.col_size, "<stdout>");
         }
 
         free(buf);
diff --git a/src/blind-to-text.c b/src/blind-to-text.c
index e0c5f41..c8cf76e 100644
--- a/src/blind-to-text.c
+++ b/src/blind-to-text.c
_AT_@ -16,8 +16,8 @@ USAGE("")
                                (CAST)(((TYPE *)(stream->buf + i))[3]));\
         } while (0)
 
-static void process_xyza (struct stream *stream, size_t n) {PROCESS(double, double, "lf");}
-static void process_xyzaf(struct stream *stream, size_t n) {PROCESS(float, double, "lf");}
+static void process_xyza (struct stream *stream, size_t n) {PROCESS(double, double, ".25lf");}
+static void process_xyzaf(struct stream *stream, size_t n) {PROCESS(float, double, ".25lf");}
 
 int
 main(int argc, char *argv[])
Received on Fri Jul 14 2017 - 21:17:39 CEST

This archive was generated by hypermail 2.3.0 : Fri Jul 14 2017 - 21:26:27 CEST