1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//! What the mark is made of, and the hues its circles take (DESIGN §11).
//!
//! **Flat, and that is structural.** Every primitive here is one flat fill, so
//! the three emissions of the mark's walk — raster, SVG and painter — are
//! *the same picture* rather than three approximations of one: they walk one
//! list in one order, with no light model and no gradient in between to drift.
use ;
/// One cross-section of a ribbon — the two points its edges pass through.
pub
/// Everything the mark is made of. Three primitives, one flat fill each; every
/// rendering walks one list of these in one order.
///
/// A [`Trace`](Shape::Trace) is named by its **centreline and width**, not by
/// its edges. That is what it is — a constant-width band down a path — and
/// naming it that way is what lets each renderer say it in its own primitives:
/// the two edge-walking emissions ask [`Shape::ribs`] for the outline, while the
/// painter hands egui the path and the width and lets its own stroker do the
/// joins and the antialiasing. Storing the edges instead would have forced the
/// painter to reconstruct the centreline it was built from.
pub
/// How many node circles the mark has — the seats an agent can take. Derived
/// from the walk (three arms of three circles), never restated.
pub const NODE_SEATS: usize = ARMS as usize * CIRCLES as usize;
/// The palette hue each of the mark's circles is driven from: the eye, then the
/// nine nodes in the walk's own order — arm by arm from bottom dead centre, each arm's
/// circles inner to outer.
///
/// **Hues, not colours.** Every seat goes through `deep` at the phosphor drive like
/// the mark always has, so the five states read as one family rather than five
/// pasted-in swatches, and [`Tints::rest`] — every seat [`HYDRA`] — is the logo
/// yog has always painted, to the byte. Rest is therefore not a case in the
/// walk; it is the walk with its default argument.