[Icons] Add an Informational semantic color family

Face-down play and the exile zone are states that are neither a gain nor a
loss, and the pre-#7595 art painted them blue (arrow_right_blue). #7595 dropped
that hue, and the icon engine has had only Positive and Negative since, so both
states fall back to neutral ink.

Add the family with the same three-level ladder the other semantic roles use:
authored roles per theme, scheme defaults otherwise, an emphasis mapping, the
palette-editor rows and the generator seed. The defaults clear the 4.5:1 label
floor on both schemes and the ladder's saturation ordering; the existing
emphasis, hue and preview tests now cover the new family. Preview sheets that
name roles resolve an unauthored one through the same default the client
paints.
This commit is contained in:
Lukas Brübach 2026-11-08 20:07:46 +01:00
parent 2b3a04857f
commit 0aa0407f16
10 changed files with 93 additions and 23 deletions

View file

@ -68,10 +68,12 @@ template <typename Render> QPixmap renderAtDpr(const QSize &logicalSize, qreal d
* @brief Writes one semantic-tint sheet per shipped palette theme.
*
* The theme files are the only place the shipped tones live, so each sheet is
* rendered from the palette the theme actually ships: both semantic families,
* three glyphs each, at the two sizes the UI uses, on the window and button
* surfaces the contrast is measured against. A disabled row closes each family
* so the enabled/disabled order is visible next to the tone that carries it.
* rendered from the palette the theme actually ships: all three semantic
* families, three glyphs each, at the two sizes the UI uses, on the window and
* button surfaces the contrast is measured against. A disabled row closes each
* family so the enabled/disabled order is visible next to the tone that carries
* it. A theme that does not author Informational falls back to the scheme
* default, which is what the client paints.
*/
TEST(IconTintPreview, WritesOneSheetPerShippedTheme)
{
@ -100,6 +102,7 @@ TEST(IconTintPreview, WritesOneSheetPerShippedTheme)
const QList<Family> families = {
{"Positive", AppColor::Positive, {"increment", "ready_start", "arrow_up"}},
{"Negative", AppColor::Negative, {"decrement", "not_ready_start", "remove_row"}},
{"Informational", AppColor::Informational, {"arrow_right", "view", "arrow_to_top"}},
};
const QStringList themes = {
QStringLiteral("Fabric"), QStringLiteral("Fusion"), QStringLiteral("Leather"),