package com.suno.android.common_ui.components.aura import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import com.suno.android.common_ui.BuildConfig private const val STAFF_HUE_SHIFT = -99 + 360 private const val HUE_MAX_VALUE = 360f @Suppress("MagicNumber") // color channel indexing private fun Color.withStaffShifting( floatArray: FloatArray = FloatArray(3), ): Color { if (!BuildConfig.IS_STAFF) return this android.graphics.Color.colorToHSV(this.toArgb(), floatArray) floatArray[0] = (floatArray[0] + STAFF_HUE_SHIFT) % HUE_MAX_VALUE return Color.hsv(floatArray[0], floatArray[1], floatArray[2]) } val AuraDefaultColorA = Color(1.0846897f, 0.07778742f, 0.4651054f).withStaffShifting() val AuraDefaultColorB = Color(1.0f, 0.28235295f, 0.16078432f).withStaffShifting() val AuraDefaultColorC = Color(1.0f, 0.69803923f, 0.003921569f).withStaffShifting() class AuraStyle( val colors: Colors = Colors(), val points: Points = Points(), val scales: Scales = Scales(), ) { class Colors( val background: Color = Color.Transparent, val a: Color = AuraDefaultColorA, val b: Color = AuraDefaultColorB, val c: Color = AuraDefaultColorC, ) class Points( val start: Float = -0.2f, val background: Float = -0.1f, val backgroundA: Float = -0.05f, val ab: Float = 0.2f, val bc: Float = 0.4f, val end: Float = 2.0f, ) class Scales( val fractal: Float = .5f, val grain: Float = 5f, ) }