• Stars
    star
    283
  • Rank 140,365 (Top 3 %)
  • Language
    Kotlin
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 26 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Multiplatform Kotlin color conversion and manipulation

Colormath is a Kotlin Multiplatform library for color manipulation and conversion.

Colormath can:

  • Convert between color models and spaces
  • Manipulate colors with transformations such as mixing and chromatic adaptation
  • Calculate attributes such as WCAG contrast and perceptual color difference
  • Generate gradients with custom interpolation methods and easing functions
  • Parse and render colors as strings, including all representations from the CSS spec
// Create an sRGB color
val color = RGB("#ff23cc")

// Interpolate with another color
val mixed = color.interpolate(RGB(0.1, 0.4, 1), 0.5f)
// RGB("#8c45e6")

// Convert to a different color space
val lab = mixed.toLAB()
// LAB(46.3, 60.9, -70)

// Change the transparency
val labA = lab.copy(alpha = 0.25f)
// LAB(46.3, 60.9, -70, 0.25)

// Adapt white point
val lab50 = labA.convertTo(LAB50)
// LAB50(45, 55.1812, 72.5911, 0.25)

// Render as a css color string
println(lab50.formatCssString())
// "lab(45% 55.1812 -72.5911 / 0.25)"

Documentation

The full documentation can be found on the website.

There are also some online examples:

Installation

Colormath is distributed through Maven Central.

dependencies {
    implementation("com.github.ajalt.colormath:colormath:3.4.0")
    
    // optional extensions for interop with other platforms
    //
    // android.graphics.Color
    implementation("com.github.ajalt.colormath:colormath-ext-android-color:3.4.0")
    // androidx.annotation.ColorInt
    implementation("com.github.ajalt.colormath:colormath-ext-android-colorint:3.4.0")
    // androidx.compose.ui.graphics.Color
    implementation("com.github.ajalt.colormath:colormath-ext-jetpack-compose:3.4.0")
}
If you're using Maven instead of Gradle, use <artifactId>colormath-jvm</artifactId>

Multiplatform

Colormath publishes artifacts for all Tier 1 and Tier 2 targets, as well as mingwX64 and wasm.

wasm and the arm64 targets are not tested on CI.

Snapshots

Snapshot builds are also available

You'll need to add the Sonatype snapshots repository:

repositories {
    maven {
        url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
    }
}