6810 - tile: adaptive column widths
This commit is contained in:
parent
a085820e21
commit
4449f48781
1
400.mu
1
400.mu
|
@ -73,6 +73,7 @@ sig parse-decimal-int in: (addr array byte) -> result/eax: int
|
||||||
sig parse-decimal-int-from-slice in: (addr slice) -> result/eax: int
|
sig parse-decimal-int-from-slice in: (addr slice) -> result/eax: int
|
||||||
sig parse-decimal-int-from-stream in: (addr stream byte) -> result/eax: int
|
sig parse-decimal-int-from-stream in: (addr stream byte) -> result/eax: int
|
||||||
#sig parse-decimal-int-helper start: (addr byte), end: (addr byte) -> result/eax: int
|
#sig parse-decimal-int-helper start: (addr byte), end: (addr byte) -> result/eax: int
|
||||||
|
sig decimal-size n: int -> result/eax: int
|
||||||
sig error-byte ed: (addr exit-descriptor), out: (addr buffered-file), msg: (addr array byte), n: byte
|
sig error-byte ed: (addr exit-descriptor), out: (addr buffered-file), msg: (addr array byte), n: byte
|
||||||
#sig allocate ad: (addr allocation-descriptor), n: int, out: (addr handle _)
|
#sig allocate ad: (addr allocation-descriptor), n: int, out: (addr handle _)
|
||||||
#sig allocate-raw ad: (addr allocation-descriptor), n: int, out: (addr handle _)
|
#sig allocate-raw ad: (addr allocation-descriptor), n: int, out: (addr handle _)
|
||||||
|
|
|
@ -135,13 +135,14 @@ fn render _env: (addr environment), max-depth: int {
|
||||||
# - If final-word is same as cursor-word, do some additional computation to set
|
# - If final-word is same as cursor-word, do some additional computation to set
|
||||||
# cursor-col-a.
|
# cursor-col-a.
|
||||||
fn render-column screen: (addr screen), first-word: (addr word), final-word: (addr word), botleft-depth: int, botleft-col: int, cursor-word: (addr word), cursor-col-a: (addr int) -> right-col/ecx: int {
|
fn render-column screen: (addr screen), first-word: (addr word), final-word: (addr word), botleft-depth: int, botleft-col: int, cursor-word: (addr word), cursor-col-a: (addr int) -> right-col/ecx: int {
|
||||||
|
var max-width/ecx: int <- copy 0
|
||||||
# compute stack
|
# compute stack
|
||||||
var stack: int-stack
|
var stack: int-stack
|
||||||
var stack-addr/edi: (addr int-stack) <- address stack
|
var stack-addr/edi: (addr int-stack) <- address stack
|
||||||
initialize-int-stack stack-addr, 0x10 # max-words
|
initialize-int-stack stack-addr, 0x10 # max-words
|
||||||
evaluate first-word, final-word, stack-addr
|
evaluate first-word, final-word, stack-addr
|
||||||
# render stack
|
# render stack
|
||||||
var curr-row/ecx: int <- copy botleft-depth
|
var curr-row/edx: int <- copy botleft-depth
|
||||||
curr-row <- add 6 # input-row 3 + stack-margin-top 3
|
curr-row <- add 6 # input-row 3 + stack-margin-top 3
|
||||||
var i/eax: int <- int-stack-length stack-addr
|
var i/eax: int <- int-stack-length stack-addr
|
||||||
curr-row <- subtract i
|
curr-row <- subtract i
|
||||||
|
@ -152,12 +153,15 @@ fn render-column screen: (addr screen), first-word: (addr word), final-word: (ad
|
||||||
{
|
{
|
||||||
var val/eax: int <- pop-int-stack stack-addr
|
var val/eax: int <- pop-int-stack stack-addr
|
||||||
print-int32-decimal screen, val
|
print-int32-decimal screen, val
|
||||||
|
var size/eax: int <- decimal-size val
|
||||||
|
compare size, max-width
|
||||||
|
break-if-<=
|
||||||
|
max-width <- copy size
|
||||||
}
|
}
|
||||||
curr-row <- increment
|
curr-row <- increment
|
||||||
i <- decrement
|
i <- decrement
|
||||||
loop
|
loop
|
||||||
}
|
}
|
||||||
right-col <- copy 8 # TODO: adaptive
|
|
||||||
|
|
||||||
# render word, initialize result
|
# render word, initialize result
|
||||||
move-cursor screen, 3, botleft-col # input-row
|
move-cursor screen, 3, botleft-col # input-row
|
||||||
|
@ -166,6 +170,7 @@ fn render-column screen: (addr screen), first-word: (addr word), final-word: (ad
|
||||||
#? right-col <- copy len
|
#? right-col <- copy len
|
||||||
|
|
||||||
# post-process right-col
|
# post-process right-col
|
||||||
|
right-col <- copy max-width
|
||||||
right-col <- add botleft-col
|
right-col <- add botleft-col
|
||||||
right-col <- add 3 # margin-right
|
right-col <- add 3 # margin-right
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue