diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-05-01 15:56:56 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-05-01 16:12:49 -0700 |
commit | d0e2d093f789fac54056a2f19f2339d230a69420 (patch) | |
tree | 9b0e090df4f4bd4a6cc3120a7108552798413f17 | |
parent | 719b6acf3d668f839e772e9e6ed6369d804a1e42 (diff) | |
download | mu-d0e2d093f789fac54056a2f19f2339d230a69420.tar.gz |
cleaner rendering of fake screens and keyboards
I don't understand why a second line in the keyboard is visible now where it wasn't before. That whole aspect has unclear desires. What exactly do I want to happen on newlines?
-rw-r--r-- | shell/global.mu | 2 | ||||
-rw-r--r-- | shell/sandbox.mu | 125 |
2 files changed, 10 insertions, 117 deletions
diff --git a/shell/global.mu b/shell/global.mu index c8babbff..7592189c 100644 --- a/shell/global.mu +++ b/shell/global.mu @@ -1351,7 +1351,7 @@ fn apply-print _args-ah: (addr handle cell), out: (addr handle cell), trace: (ad var stream-storage: (stream byte 0x100) var stream/edi: (addr stream byte) <- address stream-storage print-cell second-ah, stream, trace - draw-stream-wrapping-right-then-down-from-cursor-over-full-screen screen, stream, 7/fg, 0xc5/bg=blue-bg + draw-stream-wrapping-right-then-down-from-cursor-over-full-screen screen, stream, 7/fg, 0/bg # return what was printed copy-object second-ah, out } diff --git a/shell/sandbox.mu b/shell/sandbox.mu index 40490e13..4d5286b0 100644 --- a/shell/sandbox.mu +++ b/shell/sandbox.mu @@ -214,23 +214,6 @@ fn maybe-render-screen screen: (addr screen), _self: (addr sandbox), xmin: int, fn render-empty-screen screen: (addr screen), _target-screen: (addr screen), xmin: int, ymin: int -> _/ecx: int { var target-screen/esi: (addr screen) <- copy _target-screen var screen-y/edi: int <- copy ymin - # top border - { - set-cursor-position screen, xmin, screen-y - var width/edx: (addr int) <- get target-screen, width - var limit/edx: int <- copy *width - limit <- add 2/screen-border - var x/ebx: int <- copy 0 - { - compare x, limit - break-if->= - draw-code-point-at-cursor screen, 0x20/space, 0/fg, 0xdc/bg=green-bg - move-cursor-right screen - x <- increment - loop - } - screen-y <- increment - } # screen var height/edx: (addr int) <- get target-screen, height var y/ecx: int <- copy 0 @@ -238,63 +221,26 @@ fn render-empty-screen screen: (addr screen), _target-screen: (addr screen), xmi compare y, *height break-if->= set-cursor-position screen, xmin, screen-y - draw-code-point-at-cursor screen, 0x20/space, 0/fg, 0xdc/bg=green-bg - move-cursor-right screen var width/edx: (addr int) <- get target-screen, width var x/ebx: int <- copy 0 { compare x, *width break-if->= - draw-code-point-at-cursor screen, 0x20/space, 0x18/fg, 0xc5/bg=blue-bg + draw-code-point-at-cursor screen, 0x20/space, 0x18/fg, 0/bg move-cursor-right screen x <- increment loop } - draw-code-point-at-cursor screen, 0x20/space, 0/fg, 0xdc/bg=green-bg y <- increment screen-y <- increment loop } - # bottom border - { - set-cursor-position screen, xmin, screen-y - var width/edx: (addr int) <- get target-screen, width - var limit/edx: int <- copy *width - limit <- add 2/screen-border - var x/ebx: int <- copy 0 - { - compare x, limit - break-if->= - draw-code-point-at-cursor screen, 0x20/space, 0x20/space, 0xdc/bg=green-bg - move-cursor-right screen - x <- increment - loop - } - screen-y <- increment - } return screen-y } fn render-screen screen: (addr screen), _target-screen: (addr screen), xmin: int, ymin: int -> _/ecx: int { var target-screen/esi: (addr screen) <- copy _target-screen var screen-y/edi: int <- copy ymin - # top border - { - set-cursor-position screen, xmin, screen-y - var width/edx: (addr int) <- get target-screen, width - var limit/edx: int <- copy *width - limit <- add 2/screen-border - var x/ebx: int <- copy 0 - { - compare x, limit - break-if->= - draw-code-point-at-cursor screen, 0x20/space, 0/fg, 0xdc/bg=green-bg - move-cursor-right screen - x <- increment - loop - } - screen-y <- increment - } # text data { var height/edx: (addr int) <- get target-screen, height @@ -303,8 +249,6 @@ fn render-screen screen: (addr screen), _target-screen: (addr screen), xmin: int compare y, *height break-if->= set-cursor-position screen, xmin, screen-y - draw-code-point-at-cursor screen, 0x20/space, 0/fg, 0xdc/bg=green-bg - move-cursor-right screen var width/edx: (addr int) <- get target-screen, width var x/ebx: int <- copy 0 { @@ -315,7 +259,6 @@ fn render-screen screen: (addr screen), _target-screen: (addr screen), xmin: int x <- increment loop } - draw-code-point-at-cursor screen, 0x20/space, 0/fg, 0xdc/bg=green-bg y <- increment screen-y <- increment loop @@ -325,12 +268,10 @@ fn render-screen screen: (addr screen), _target-screen: (addr screen), xmin: int { # screen top left pixels x y width height var tmp/eax: int <- copy xmin - tmp <- add 1/margin-left tmp <- shift-left 3/log2-font-width var left: int copy-to left, tmp tmp <- copy ymin - tmp <- add 1/margin-top tmp <- shift-left 4/log2-font-height var top: int copy-to top, tmp @@ -373,23 +314,6 @@ fn render-screen screen: (addr screen), _target-screen: (addr screen), xmin: int loop } } - # bottom border - { - set-cursor-position screen, xmin, screen-y - var width/edx: (addr int) <- get target-screen, width - var limit/edx: int <- copy *width - limit <- add 2/screen-border - var x/ebx: int <- copy 0 - { - compare x, limit - break-if->= - draw-code-point-at-cursor screen, 0x20/space, 0x20/space, 0xdc/bg=green-bg - move-cursor-right screen - x <- increment - loop - } - screen-y <- increment - } return screen-y } @@ -437,59 +361,28 @@ fn maybe-render-keyboard screen: (addr screen), _self: (addr sandbox), xmin: int var keyboard-obj-ah/eax: (addr handle gap-buffer) <- get keyboard-obj-cell, keyboard-data var _keyboard-obj/eax: (addr gap-buffer) <- lookup *keyboard-obj-ah var keyboard-obj/edx: (addr gap-buffer) <- copy _keyboard-obj - var x/eax: int <- draw-text-rightward screen, "keyboard: ", xmin, 0x99/xmax, ymin, 7/fg, 0xc5/bg=blue-bg var y/ecx: int <- copy ymin + y <- increment # padding + var x/eax: int <- draw-text-rightward screen, "keyboard: ", xmin, 0x99/xmax, y, 7/fg, 0xc5/bg=blue-bg var cursor-in-keyboard?/esi: (addr boolean) <- get self, cursor-in-keyboard? y <- render-keyboard screen, keyboard-obj, x, y, *cursor-in-keyboard? y <- increment # padding return y } -# draw an evocative shape fn render-keyboard screen: (addr screen), _keyboard: (addr gap-buffer), xmin: int, ymin: int, render-cursor?: boolean -> _/ecx: int { var keyboard/esi: (addr gap-buffer) <- copy _keyboard var width/edx: int <- copy 0x10/keyboard-capacity var y/edi: int <- copy ymin - # top border - { - set-cursor-position screen, xmin, y - move-cursor-right screen - var x/ebx: int <- copy 0 - { - compare x, width - break-if->= - draw-code-point-at-cursor screen, 0x2d/horizontal-bar, 0x18/fg, 0xc5/bg=blue-bg - move-cursor-right screen - x <- increment - loop - } - y <- increment - } # keyboard var x/eax: int <- copy xmin - draw-code-point screen, 0x7c/vertical-bar, x, y, 0x18/fg, 0xc5/bg=blue-bg - x <- increment - x <- render-gap-buffer screen, keyboard, x, y, render-cursor?, 3/fg, 0xc5/bg=blue-bg - x <- copy xmin - x <- add 1 # for left bar - x <- add 0x10/keyboard-capacity - draw-code-point screen, 0x7c/vertical-bar, x, y, 0x18/fg, 0xc5/bg=blue-bg + var xmax/ecx: int <- copy x + xmax <- add 0x10 + var ymax/edx: int <- copy ymin + ymax <- add 1 + clear-rect screen, x, y, xmax, ymax, 0/bg + x <- render-gap-buffer screen, keyboard, x, y, render-cursor?, 3/fg, 0/bg y <- increment - # bottom border - { - set-cursor-position screen, xmin, y - move-cursor-right screen - var x/ebx: int <- copy 0 - { - compare x, width - break-if->= - draw-code-point-at-cursor screen, 0x2d/horizontal-bar, 0x18/fg, 0xc5/bg=blue-bg - move-cursor-right screen - x <- increment - loop - } - y <- increment - } return y } |