generateThemeName function
String
generateThemeName({
- required Rng rng,
- required int accentArgb,
- required ThemeFamily family,
- required bool dark,
The name of a theme: deterministic from the name stream rng, the
final palette's accentArgb (operator face), the family and whether
it is dark.
Implementation
String generateThemeName({
required Rng rng,
required int accentArgb,
required ThemeFamily family,
required bool dark,
}) {
final colours = colourWordsFor(accentArgb);
final materials = materialWordsFor(family);
final places = dark ? darkTimePlaceWords : lightTimePlaceWords;
for (var attempt = 0; attempt < 16; attempt++) {
final pattern =
NamePattern.values[rng.pickWeighted([
for (final p in NamePattern.values) p.weight,
])];
final (first, second) = switch (pattern) {
NamePattern.colourMaterial => (rng.pick(colours), rng.pick(materials)),
NamePattern.moodColour => (rng.pick(moodWords), rng.pick(colours)),
NamePattern.colourTimePlace => (rng.pick(colours), rng.pick(places)),
NamePattern.materialMoodNoun => (
rng.pick(materials),
rng.pick(moodNouns),
),
};
if (!isBlockedName(first, second)) return '$first $second';
}
return '${colours.first} ${materials.first}';
}