claymorphismKeyFaceFor function
KeyFaceRenderer
claymorphismKeyFaceFor(
- ThemeSpec spec, {
- GlassRendering rendering = GlassRendering.standard,
The key renderer for a ThemeFamily.claymorphism spec.
rendering carries the device effects tier: lite draws no blurs.
Reduce Motion (EffectsTier.off) keeps the full static artwork, and
the glass mode is ignored (clay is opaque). Zero or foreign style
values fall back to the family defaults (5 dp depth, 12 dp blur, 0.09
shade), so every spec paints.
Implementation
KeyFaceRenderer claymorphismKeyFaceFor(
ThemeSpec spec, {
GlassRendering rendering = GlassRendering.standard,
}) {
final p = spec.palette;
final style = spec.keyStyle;
final depth = spec.motion.depthCdp > 0 ? spec.motion.depthCdp : 500;
final blur = style.shadowBlurCdp > 0 ? style.shadowBlurCdp : 1200;
final shade = style.edgeShadePermille > 0 ? style.edgeShadePermille : 90;
return ClayKeyFace(
digitShadow: Color(p.digit.edge),
operatorShadow: Color(p.operator.edge),
equalsShadow: Color(p.equals.edge),
functionShadow: Color(p.function.edge),
highlight: Color(p.highlight),
depth: depth / 100,
blur: blur / 100,
shadeDepth: shade.clamp(40, 140) / 1000,
cornerFraction: spec.keyShape.cornerFraction.clamp(0.0, 0.5),
pressScale: spec.motion.scalePermille / 1000,
labelFloor: spec.accessible ? ratioAccessible : ratioText,
lite: rendering.tier == EffectsTier.lite,
slashedZero: spec.type.slashedZero,
);
}