summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--bin/gfxx.c48
1 files changed, 21 insertions, 27 deletions
diff --git a/bin/gfxx.c b/bin/gfxx.c
index 12593bfc..424117de 100644
--- a/bin/gfxx.c
+++ b/bin/gfxx.c
@@ -122,9 +122,9 @@ static enum {
     COLOR__MAX,
 } space;
 static uint32_t palette[256] = {
-    // FIXME: hardcoded 16-color VGA.
-    0x000000, 0xAA0000, 0x00AA00, 0xAA5500, 0x0000AA, 0xAA00AA, 0x00AAAA, 0xAAAAAA,
-    0x555555, 0xFF5555, 0x55FF55, 0xFFFF55, 0x5555FF, 0xFF55FF, 0x55FFFF, 0xFFFFFF,
+    // FIXME: hardcoded.
+    0x000000, 0xFF0000, 0x00FF00, 0xFFFF00, 0x0000FF, 0xFF00FF, 0x00FFFF, 0xFFFFFF,
+    0x000000, 0xFF0000, 0x00FF00, 0xFFFF00, 0x0000FF, 0xFF00FF, 0x00FFFF, 0xFFFFFF,
 };
 static uint8_t bits = 1;
 static bool endian;
@@ -349,40 +349,34 @@ static /**/ void draw(uint32_t *buf, size_t xres, size_t yres) {
         case 16: draw16(&pos); break;
         case 24: draw24(&pos); break;
         case 32: draw32(&pos); break;
-        default: break;
     }
 }
 
 static /**/ void input(char in) {
+    size_t pixel = (bits + 7) / 8;
+    size_t row = width * bits / 8;
     switch (in) {
         case 'q': printOpts(); exit(EX_OK);
-        break; case '+': scale++;
-        break; case '-': if (scale > 1) scale--;
+        break; case '[': if (!space--) space = COLOR__MAX - 1;
+        break; case ']': if (++space == COLOR__MAX) space = 0;
+        break; case '{': if (bits > 16) bits -= 8; else bits = (bits + 1) / 2;
+        break; case '}': if (bits < 16) bits *= 2; else bits += 8;
+        break; case 'e': endian ^= true;
+        break; case 'r': reverse ^= true;
+        break; case 'h': if (offset) offset--;
+        break; case 'j': offset += pixel;
+        break; case 'k': if (offset >= pixel) offset -= pixel;
+        break; case 'l': offset++;
+        break; case 'H': if (offset >= row) offset -= row;
+        break; case 'J': offset += width * row;
+        break; case 'K': if (offset >= width * row) offset -= width * row;
+        break; case 'L': offset += row;
         break; case '.': width++;
         break; case ',': if (width > 1) width--;
         break; case '>': width *= 2;
         break; case '<': if (width / 2 >= 1) width /= 2;
-        break; case 'h': if (offset) offset--;
-        break; case 'j': offset += width * bits / 8;
-        break; case 'k': if (offset >= width * bits / 8) offset -= width * bits / 8;
-        break; case 'l': offset++;
-        break; case 'e': endian ^= true;
-        break; case 'r': reverse ^= true;
         break; case 'm': mirror ^= true;
-        break; case 'c': space++; if (space == COLOR__MAX) space = 0;
-        break; case 'b':
-            switch (bits) {
-                case 1:  bits =  4; break;
-                case 4:  bits =  8; break;
-                case 32: bits =  1; break;
-                default: bits += 8;
-            }
-        break; case 'B':
-            switch (bits) {
-                case 8:  bits =  4; break;
-                case 4:  bits =  1; break;
-                case 1:  bits = 32; break;
-                default: bits -= 8;
-            }
+        break; case '+': scale++;
+        break; case '-': if (scale > 1) scale--;
     }
 }
low upstream commits: * commit: add repository argument to get_cached_commit_buffer (3ce85f7e5a41116145179f0fae2ce6d86558d099) * commit: add repository argument to lookup_commit_reference (2122f6754c93be8f02bfb5704ed96c88fc9837a8) * object: add repository argument to parse_object (109cd76dd3467bd05f8d2145b857006649741d5c) * tag: add repository argument to deref_tag (a74093da5ed601a09fa158e5ba6f6f14c1142a3e) * tag: add repository argument to lookup_tag (ce71efb713f97f476a2d2ab541a0c73f684a5db3) * tree: add repository argument to lookup_tree (f86bcc7b2ce6cad68ba1a48a528e380c6126705e) * archive.c: avoid access to the_index (b612ee202a48f129f81f8f6a5af6cf71d1a9caef) * for_each_*_object: move declarations to object-store.h (0889aae1cd18c1804ba01c1a4229e516dfb9fe9b) Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-ssdiff: ban strcat()Christian Hesse Git upstream bans strcat() with commit: banned.h: mark strcat() as banned 1b11b64b815db62f93a04242e4aed5687a448748 Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-ssdiff: ban strncpy()Christian Hesse Git upstream bans strncpy() with commit: banned.h: mark strncpy() as banned e488b7aba743d23b830d239dcc33d9ca0745a9ad Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-shared: ban strcat()Christian Hesse Git upstream bans strcat() with commit: banned.h: mark strcat() as banned 1b11b64b815db62f93a04242e4aed5687a448748 To avoid compiler warnings from gcc 8.1.x we get the hard way. Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-patch: ban sprintf()Christian Hesse Git upstream bans sprintf() with commit: banned.h: mark sprintf() as banned cc8fdaee1eeaf05d8dd55ff11f111b815f673c58 Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-log: ban strncpy()Christian Hesse Git upstream bans strncpy() with commit: banned.h: mark strncpy() as banned e488b7aba743d23b830d239dcc33d9ca0745a9ad Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-log: ban strcpy()Christian Hesse Git upstream bans strcpy() with commit: automatically ban strcpy() c8af66ab8ad7cd78557f0f9f5ef6a52fd46ee6dd Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11parsing: ban sprintf()Christian Hesse Git upstream bans sprintf() with commit: banned.h: mark sprintf() as banned cc8fdaee1eeaf05d8dd55ff11f111b815f673c58 Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11parsing: ban strncpy()Christian Hesse Git upstream bans strncpy() with commit: banned.h: mark strncpy() as banned e488b7aba743d23b830d239dcc33d9ca0745a9ad Signed-off-by: Christian Hesse <mail@eworm.de> 2018-08-28filters: generate anchor links from markdownChristian Hesse This makes the markdown filter generate anchor links for headings. Signed-off-by: Christian Hesse <mail@eworm.de> Tested-by: jean-christophe manciot <actionmystique@gmail.com> 2018-08-03Bump version.Jason A. Donenfeld Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2018-08-03clone: fix directory traversalJason A. Donenfeld This was introduced in the initial version of this code, way back when in 2008. $ curl http://127.0.0.1/cgit/repo/objects/?path=../../../../../../../../../etc/passwd root:x:0:0:root:/root:/bin/sh ... Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Reported-by: Jann Horn <jannh@google.com> 2018-08-03config: record repo.snapshot-prefix in the per-repo configKonstantin Ryabitsev