Skip to content

zedalaye/material-color-utilities-for-delphi

Repository files navigation

Material Color Utilities for Delphi

This is a Delphi port from the CPP version of Google Material Color Utilities

Nothing fancy, just a line-to-line port with some Delphisms to deal with CPP std lib but it requires at least Delphi 11 (inline variables declarations)

All tests have been ported and require DUnitX and TestInsight to be run.

The plan is to build a Custom Style class so delphi apps could automagically themed... (help needed)

VCL Applications

Use PictureToColor() from Material.VCL to get a key color to initialize an instance of TDynamicScheme using one of the TDynamicSchemeBuilder.

See ProcessImage() and UpdateTheme() methods in GUITest.Mainform.pas

Material Color Utilities

Algorithms and utilities that power the Material Design 3 (M3) color system, including choosing theme colors from images and creating tones of colors; all in a new color space.

Usage

See cheat sheet at Material Color Utilities

Components

The library is composed of multiple components, each with its own folder and tests, each as small as possible.

This enables easy merging and updating of subsets into other libraries, such as Material Design Components, Android System UI, etc. Not all consumers will need every component — ex. MDC doesn’t need quantization/scoring/image extraction.

Components Purpose
blend Interpolate, harmonize, animate, and gradate colors in HCT
contrast Measure contrast, obtain contrastful colors
dislike Check and fix universally disliked colors
dynamiccolor Obtain colors that adjust based on UI state (dark theme, style, preferences, contrast requirements, etc.)
hct A new color space (hue, chrome, tone) based on CAM16 x L*, that accounts for viewing conditions
palettes Tonal palette — range of colors that varies only in tone
Core palette — set of tonal palettes needed to create Material color schemes
quantize Turn an image into N colors; composed of Celebi, which runs Wu, then WSMeans
scheme Create static and dynamic color schemes from a single color or a core palette
score Rank colors for suitability for theming
temperature Obtain analogous and complementary colors
utilities Color — convert between color spaces needed to implement HCT/CAM16
Math — functions for ex. ensuring hue is between 0 and 360, clamping, etc.
String - convert between strings and integers

Background

The Science of Color & Design - Material Design

Design tooling

The Material Theme Builder Figma plugin and web tool are recommended for design workflows. The Material Theme Builder delivers dynamic color to where design is done. Designers can take an existing design, and see what it looks like under different themes, with just a couple clicks.

Licence

The original code belongs to Google and this port is licenced under the Apache Public Licence v2

About

The Material Color Utilities for Delphi

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages