From e6709eac0964e4151723525f3ff7ffe3df340259 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Tue, 17 Dec 2024 18:36:28 +0100 Subject: [PATCH] feat: Add an API that returns all dynamic color tokens in Java. ...sync from library implementation Signed-off-by: Andy Scherzinger --- .../dynamiccolor/MaterialDynamicColors.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/material-color-utilities/src/main/java/dynamiccolor/MaterialDynamicColors.java b/material-color-utilities/src/main/java/dynamiccolor/MaterialDynamicColors.java index 3153bdea..5c06b207 100644 --- a/material-color-utilities/src/main/java/dynamiccolor/MaterialDynamicColors.java +++ b/material-color-utilities/src/main/java/dynamiccolor/MaterialDynamicColors.java @@ -19,6 +19,9 @@ import androidx.annotation.NonNull; import dislike.DislikeAnalyzer; import hct.Hct; +import java.util.Arrays; +import java.util.List; +import java.util.function.Supplier; /** Named colors, otherwise known as tokens, or roles, in the Material Design system. */ // Prevent lint for Function.apply not being available on Android before API level 14 (4.0.1). @@ -933,6 +936,73 @@ public DynamicColor textHintInverse() { "text_hint_inverse", (s) -> s.neutralPalette, (s) -> s.isDark ? 10.0 : 90.0); } + /** All dynamic colors in Material Design system. */ + public final List> allDynamicColors() { + return Arrays.asList( + this::primaryPaletteKeyColor, + this::secondaryPaletteKeyColor, + this::tertiaryPaletteKeyColor, + this::neutralPaletteKeyColor, + this::neutralVariantPaletteKeyColor, + this::background, + this::onBackground, + this::surface, + this::surfaceDim, + this::surfaceBright, + this::surfaceContainerLowest, + this::surfaceContainerLow, + this::surfaceContainer, + this::surfaceContainerHigh, + this::surfaceContainerHighest, + this::onSurface, + this::surfaceVariant, + this::onSurfaceVariant, + this::inverseSurface, + this::inverseOnSurface, + this::outline, + this::outlineVariant, + this::shadow, + this::scrim, + this::surfaceTint, + this::primary, + this::onPrimary, + this::primaryContainer, + this::onPrimaryContainer, + this::inversePrimary, + this::secondary, + this::onSecondary, + this::secondaryContainer, + this::onSecondaryContainer, + this::tertiary, + this::onTertiary, + this::tertiaryContainer, + this::onTertiaryContainer, + this::error, + this::onError, + this::errorContainer, + this::onErrorContainer, + this::primaryFixed, + this::primaryFixedDim, + this::onPrimaryFixed, + this::onPrimaryFixedVariant, + this::secondaryFixed, + this::secondaryFixedDim, + this::onSecondaryFixed, + this::onSecondaryFixedVariant, + this::tertiaryFixed, + this::tertiaryFixedDim, + this::onTertiaryFixed, + this::onTertiaryFixedVariant, + this::controlActivated, + this::controlNormal, + this::controlHighlight, + this::textPrimaryInverse, + this::textSecondaryAndTertiaryInverse, + this::textPrimaryInverseDisableOnly, + this::textSecondaryAndTertiaryInverseDisabled, + this::textHintInverse); + } + private boolean isFidelity(DynamicScheme scheme) { if (this.isExtendedFidelity && scheme.variant != Variant.MONOCHROME