Generated reference › API — ICoreEssentials/UI/Backends/WinUI/Theme
kind: generated#api#icoreessentials-ui-backends-winui-theme

API — ICoreEssentials/UI/Backends/WinUI/Theme

The public contract of 2 header(s) under ICoreEssentials/UI/Backends/WinUI/Theme — 1 class/struct definition(s), 0 declaration(s). Each section shows the header's banner and its public (and protected-virtual) surface exactly as the file writes it.

ICoreStyleSpecXaml.h#

ICoreEssentials/UI/Backends/WinUI/Theme/ICoreStyleSpecXaml.h

ICoreStyleSpecXaml -- the WinUI interpreter for ICoreStyleSpec.

ICoreStyleSpec says what a surface should look like without naming a toolkit. The Qt interpreter turns one back into stylesheet text. WinUI has no stylesheet, so this one has TWO outputs, because the backend has two lanes and they need different things:

  • the PAINTED lane wants numbers. Buttons, cards, the toolbar, menus and

the whole graphics canvas are drawn by the existing paintContent code; it needs a resolved background, border, radius and ink, not markup. -> icoreWinUIPaintedStyle()

  • the NATIVE lane wants markup. Text entry, item views and the scroll

viewer are real XAML controls, and the way to restyle one is a Style

ICoreWinUIPaintedStyle#

ICoreStyleSpecXaml.h:55 · struct · 0 declaration(s)

A resolved surface, ready for a painted-lane paintContent().

struct ICoreWinUIPaintedStyle {
public:
    ICoreRgba background;
    ICoreRgba foreground;

    ICoreRgba borderColor;
    double borderWidth = -1.0;

    // The four sides, after the uniform width and any per-side override have
    // been composed. Unset when the spec mentioned no border at all.
    //
    // ⚠ borderWidth is still the UNIFORM width and is not the same question:
    // a painted-lane caller drawing a one-colour frame wants it, while a
    // caller placing a 3px accent bar down the left edge wants this. When the
    // four agree, they say the same thing.
    //
    // ⚠ ONE BorderBrush, four thicknesses -- so a per-side COLOUR does not
    // survive the trip. The navigator's accent left edge is a different colour
    // from its hairline and is therefore a PAINTED surface on this backend,
    // not a Style. Said here because the alternative is a reader discovering
    // it on screen.
    ICoreStyleBox borderThickness;

    double borderRadius = -1.0;

    // ⚠ THREE FIELDS, NOT AN `ICoreStyleFont` -- and this file asked for the
    // struct until 2026-08-22 (W0.13, §57). ICoreStyleSpec carried an
    // `ICoreStyleFont { family, sizePx, weight }` on the branch this backend
    // was written against; the vocabulary that survived the 2026-08-22 merge
    // spells the same three answers as three flat members, and `weight` became
    // a BOOL. Mirrored here rather than translated at the read site, so the two
    // vocabularies cannot drift apart again unnoticed -- which is exactly what
    // they did, invisibly, for as long as no configure compiled this file.
    //
    // ⚠ THE NARROWING IS REAL AND IS NOT HIDDEN: a numeric CSS weight (300,
    // 600, 900) cannot be said any more -- bold or not is the whole scale. A
    // surface that needs a semibold is a question for ICoreStyleSpec, not
    // something to smuggle back in here.
    std::string fontFamily;           // empty is unset
    double      fontPixelSize = -1.0; // <= 0 is unset
    bool        fontBold      = false;

    // The resource a part is drawn AS -- today the two disclosure arrows.
    // Empty when unset. A XAML Style has no `image` setter, so this reaches
    // the caller for an ImageBrush or a painted glyph rather than a setter.
    std::string image;

    double minWidth = -1.0;
    double minHeight = -1.0;

    ICoreRgba alternateBackground;
    bool selectionSpansRow = false;

    ICoreStyleBox padding;
    ICoreStyleBox margin;

    double fixedWidth = -1.0;
    double fixedHeight = -1.0;

    bool suppressFocusRing = false;

    ICoreRgba selectionBackground;
    ICoreRgba selectionForeground;

    // False when the spec had no rule for the requested part in ANY state.
    // Distinct from "found a rule and every field was unset": the first means
    // the surface has no opinion at all and the caller should draw its
    // default, the second means it deliberately said nothing about anything.
    bool found = false;
};
};

ICoreWinUIThemeSeat.h#

ICoreEssentials/UI/Backends/WinUI/Theme/ICoreWinUIThemeSeat.h

Declares no class of its own — see the file.