aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2025-06-20 09:48:45 +0100
committergingerBill <bill@gingerbill.org>2025-06-20 09:48:45 +0100
commit37fffe78d618489fffcbd3b4cd7fd6856218298e (patch)
tree832e1af58dbeb9761459d7e7266df3850551a332
parentf055d8e7147dd2761557e77ccaa732eb25f9a1f2 (diff)
Use `bit_field`s to describe internal `break_state`
-rw-r--r--vendor/kb_text_shape/kb_text_shape_types.odin46
1 files changed, 38 insertions, 8 deletions
diff --git a/vendor/kb_text_shape/kb_text_shape_types.odin b/vendor/kb_text_shape/kb_text_shape_types.odin
index bc5ee35e8..8e1f1e3fe 100644
--- a/vendor/kb_text_shape/kb_text_shape_types.odin
+++ b/vendor/kb_text_shape/kb_text_shape_types.odin
@@ -1819,22 +1819,52 @@ break_state :: struct {
BracketCount: u32,
Flags: break_state_flags,
- FlagState: u32, // u8(break_flags)x4
+ FlagState: bit_field u32 {
+ _0: u32 | 8, // break_flags
+ _1: u32 | 8, // break_flags
+ _2: u32 | 8, // break_flags
+ _3: u32 | 8, // break_flags
+ },
PositionOffset2: i16,
PositionOffset3: i16,
- WordBreakHistory: u32, // u8x4
- WordBreaks: u16, // u4x4
- WordUnbreaks: u16, // u4x4
+ WordBreakHistory: bit_field u32 {
+ _0: u32 | 8,
+ _1: u32 | 8,
+ _2: u32 | 8,
+ _3: u32 | 8,
+ },
+ WordBreaks,
+ WordUnbreaks: bit_field u16 {
+ _0: u16 | 4,
+ _1: u16 | 4,
+ _2: u16 | 4,
+ _3: u16 | 4,
+ },
WordBreak2PositionOffset: i16,
- LineBreaks: u64, // u16x4
+ LineBreaks: bit_field u64 {
+ _0: u64 | 16,
+ _1: u64 | 16,
+ _2: u64 | 16,
+ _3: u64 | 16,
+ },
// Instead of staying synchronized with LineBreaks/LineUnbreaks,
// this advances every character always.
// (This is only needed because ZWJ can create an unbreak while simultaneously being ignored.)
- LineUnbreaksAsync: u64, // u16x4
- LineUnbreaks: u64, // u16x4
- LineBreakHistory: u32, // u8(line_break_class)x4
+ LineUnbreaksAsync,
+ LineUnbreaks: bit_field u64 {
+ _0: u64 | 16,
+ _1: u64 | 16,
+ _2: u64 | 16,
+ _3: u64 | 16,
+ },
+ LineBreakHistory: bit_field u32 {
+ _0: u32 | 8, // break_flags
+ _1: u32 | 8, // break_flags
+ _2: u32 | 8, // break_flags
+ _3: u32 | 8, // break_flags
+ },
LineBreak2PositionOffset: i16,
LineBreak3PositionOffset: i16,