mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-23 18:04:26 +08:00
63 lines
2.4 KiB
Markdown
63 lines
2.4 KiB
Markdown
|
|
# Material Color Service
|
||
|
|
|
||
|
|
## Goal
|
||
|
|
|
||
|
|
Unify Monet seed extraction, wallpaper color extraction, semantic color roles, host material surfaces, and plugin appearance snapshots behind one host-owned material/color source of truth.
|
||
|
|
|
||
|
|
## Scope
|
||
|
|
|
||
|
|
- Host service: `IMaterialColorService`
|
||
|
|
- Compatibility facade: `IAppearanceThemeService`
|
||
|
|
- Settings page: `MaterialColorSettingsPage`
|
||
|
|
- Persisted settings:
|
||
|
|
- `ThemeColorMode`
|
||
|
|
- `ThemeColor`
|
||
|
|
- `SelectedWallpaperSeed`
|
||
|
|
- `SystemMaterialMode`
|
||
|
|
- `ThemeWallpaperColorSource`
|
||
|
|
- `UseNativeWallpaperChangeEvents`
|
||
|
|
- `SystemWallpaperRefreshIntervalSeconds`
|
||
|
|
- Plugin read-only appearance snapshot fields:
|
||
|
|
- accent color
|
||
|
|
- seed color
|
||
|
|
- color source
|
||
|
|
- system material mode
|
||
|
|
- semantic color roles
|
||
|
|
- material surfaces
|
||
|
|
- wallpaper seed candidates
|
||
|
|
|
||
|
|
## Behavior
|
||
|
|
|
||
|
|
`IMaterialColorService` owns the live `MaterialColorSnapshot`. Consumers should derive colors and material values from this snapshot instead of recalculating from raw theme settings, wallpaper settings, or `MonetPalette`.
|
||
|
|
|
||
|
|
Supported color sources:
|
||
|
|
|
||
|
|
- `default_neutral`: stable neutral surfaces with the default accent.
|
||
|
|
- `seed_monet`: user-selected seed color processed through Monet.
|
||
|
|
- `wallpaper_monet`: wallpaper colors processed through Monet.
|
||
|
|
|
||
|
|
Wallpaper color source selection:
|
||
|
|
|
||
|
|
- `auto`: app wallpaper or app solid color first, then system wallpaper, then fallback.
|
||
|
|
- `app`: app wallpaper or app solid color only, then fallback.
|
||
|
|
- `system`: system wallpaper only, then fallback.
|
||
|
|
|
||
|
|
System wallpaper monitoring:
|
||
|
|
|
||
|
|
- Native Windows user preference events are preferred when enabled and available.
|
||
|
|
- Polling remains active as the fallback path.
|
||
|
|
- Manual refresh clears cached wallpaper candidates and rebuilds the snapshot.
|
||
|
|
|
||
|
|
## Refactor Rules
|
||
|
|
|
||
|
|
- New consumers must depend on `IMaterialColorService`, not on parallel combinations of theme settings, wallpaper settings, and `MonetColorService`.
|
||
|
|
- `MonetColorService` remains the extraction/palette utility, not the application-wide coordinator.
|
||
|
|
- Component/editor/plugin appearance code must consume `MaterialColorSnapshot` or a mapper produced from it.
|
||
|
|
- Existing `IAppearanceThemeService` remains available for compatibility, but it must not become a second source of truth.
|
||
|
|
|
||
|
|
## Out Of Scope
|
||
|
|
|
||
|
|
- Plugin write access to global host appearance settings.
|
||
|
|
- Market metadata or sample plugin changes.
|
||
|
|
- Replacing the wallpaper picker page. It remains the asset/source management page.
|