Compare commits

...

2 Commits

Author SHA1 Message Date
5e0e680f60
fixed separator hiding inside structure 2024-05-19 13:53:24 +02:00
4ccfa43e51
fixed arrows + left labels 2024-05-19 13:49:43 +02:00

View File

@ -117,7 +117,7 @@
let txt-col = config.text-color let txt-col = config.text-color
let bit-w = config.bit-height // Why ? I don't remember let bit-w = config.bit-height // Why ? I don't remember
let gap = config.values-gap let gap = config.values-gap
for (val, desc) in values.pairs().sorted(key: p => p.first()) { for (val, desc) in values.pairs().sorted(key: p => p.first()) {
desc-y += gap desc-y += gap
let txt = val + " = " + desc let txt = val + " = " + desc
@ -159,16 +159,16 @@
let mid-x = start-x + width / 2 let mid-x = start-x + width / 2
shapes += draw-link(config, mid-x, start-y, desc-x, desc-y) shapes += draw-link(config, mid-x, start-y, desc-x, desc-y)
let txt-anchor = "west" let txt-x = desc-x
if config.left-labels { if config.left-labels {
txt-anchor -= "east" txt-x -= range_.description.len() * config.default-font-size / 2pt
} }
shapes += draw-text( shapes += draw-text(
range_.description, range_.description,
config.text-color, config.text-color,
desc-x, desc-y + bit-h / 2, txt-x, desc-y + bit-h / 2,
anchor: "west" anchor: "west"
) )
@ -176,7 +176,7 @@
if range_.values != none and range_.depends-on == none { if range_.values != none and range_.depends-on == none {
let shapes_ let shapes_
(shapes_, _, desc-y) = draw-values(config, range_.values, desc-x, desc-y) (shapes_, _, desc-y) = draw-values(config, range_.values, txt-x, desc-y)
shapes += shapes_ shapes += shapes_
} }
@ -266,7 +266,8 @@
let width = rng.bits(range_) * bit-w let width = rng.bits(range_) * bit-w
shapes += draw-underbracket(config, start-x, start-x + width, bits-y) shapes += draw-underbracket(config, start-x, start-x + width, bits-y)
let depend-range = struct.ranges.at(rng.key(..range_.depends-on)) let depend-key = rng.key(..range_.depends-on)
let depend-range = struct.ranges.at(depend-key)
let prev-range-y = bits-y + bit-h * 1.5 let prev-range-y = bits-y + bit-h * 1.5
let prev-depend-y = if depend-range.last-value-y == -1 { let prev-depend-y = if depend-range.last-value-y == -1 {
@ -335,7 +336,9 @@
shapes += shapes_ shapes += shapes_
} }
return (shapes, desc-x, desc-y) struct.ranges.at(depend-key) = depend-range
return (shapes, desc-x, desc-y, struct)
} }
#let draw-structure(config, struct, structures, ox: 0, oy: 0) = { #let draw-structure(config, struct, structures, ox: 0, oy: 0) = {
@ -397,6 +400,13 @@
let name-x = start-x + width / 2 let name-x = start-x + width / 2
let name-y = bits-y + bit-h / 2 let name-y = bits-y + bit-h / 2
shapes += draw-rect(
bg-col,
start-x + bit-w / 2,
name-y - bit-h * 0.3,
width - bit-w,
bit-h * 0.6
)
shapes += draw-text(range_.name, txt-col, name-x, name-y, fill: bg-col) shapes += draw-text(range_.name, txt-col, name-x, name-y, fill: bg-col)
if range_.description != "" { if range_.description != "" {
@ -413,7 +423,7 @@
for range_ in ranges { for range_ in ranges {
if range_.values() != none and range_.depends-on != none { if range_.values() != none and range_.depends-on != none {
let shapes_ let shapes_
(shapes_, desc-x, desc-y) = draw-dependency( (shapes_, desc-x, desc-y, struct) = draw-dependency(
draw-structure, config, draw-structure, config,
struct, structures, bits-x, bits-y, range_, desc-x, desc-y struct, structures, bits-x, bits-y, range_, desc-x, desc-y
) )