2 Commits

Author SHA1 Message Date
b6f2fd99b8 prevent drawing separators on starting lines of fields
On non-consecutive ranges, we were drawing the starting line _on top_ of
the separator, which lead to some visual glitches in some viewers.
2025-11-25 09:02:49 +01:00
6f13df815f documented start property of structures 2025-11-10 21:05:28 +01:00
3 changed files with 32 additions and 2 deletions

Binary file not shown.

View File

@@ -152,6 +152,34 @@ The range name (or key) defines the left- and rightmost bits (e.g. `7-4` goes fr
}
```
=== Start <format-start>
By default, structures start at bit 0, but you may want to number bits from 1, or another arbitrary value. To do this, you can set the `start` property of a structure to the desired start value. For example,
```json
"main": {
"bits": 8,
"start": 4,
"ranges": {
"11-7": { ... },
"6-4": { ... }
}
}
```
#let start-schema = (structures: (main: (bits: 8, start: 4, ranges: ("11-7": (name: ""), "6-4": (name: "")))))
would render as
#align(
center,
schema.render(
schema.load(start-schema),
width: 50%
)
)
== Range <format-range>
A range represents a group of consecutive bits. It can have a name (displayed in the bit cells), a description (displayed under the structure) and / or values.

View File

@@ -387,8 +387,10 @@
}
let range-boundaries = ()
for r in struct.ranges.values() {
let i = to-real-i(if config.ltr-bits {r.start} else {r.end})
range-boundaries.push(i)
let start-i = to-real-i(if config.ltr-bits {r.start} else {r.end})
let end-i = to-real-i(if config.ltr-bits {r.end} else {r.start}) + 1
range-boundaries.push(start-i)
range-boundaries.push(end-i)
}
// Draw colors