mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-10 05:41:51 +09:00
30 lines
1.0 KiB
Kotlin
30 lines
1.0 KiB
Kotlin
package net.torvald.colourutil
|
|
|
|
import net.torvald.terrarum.getPixel
|
|
import net.torvald.terrarum.weather.toColor
|
|
import org.newdawn.slick.Color
|
|
import org.newdawn.slick.Image
|
|
import net.torvald.colourutil.CIEXYZUtil.toColor
|
|
import net.torvald.terrarum.ModMgr
|
|
|
|
/**
|
|
* RGB-modeled CCT calculator
|
|
* Created by minjaesong on 16-07-26.
|
|
*/
|
|
object ColourTemp {
|
|
private var envOverlayColourmap = Image(ModMgr.getPath("basegame", "colourmap/black_body_col_1000_40000_K.tga"))
|
|
|
|
private fun colTempToImagePos(K: Int): Int {
|
|
if (K < 1000 || K >= 40000) throw IllegalArgumentException("K: out of range. ($K)")
|
|
return (K - 1000) / 10
|
|
}
|
|
|
|
/** returns sRGB-normalised colour */
|
|
operator fun invoke(temp: Int): Color =
|
|
envOverlayColourmap.getPixel(colTempToImagePos(temp), 0).toColor()
|
|
|
|
/** returns CIExyY-based colour converted to slick.color
|
|
* @param CIE_Y 0.0 - 1.0+ */
|
|
operator fun invoke(temp: Float, CIE_Y: Float): Color =
|
|
CIEXYZUtil.colourTempToXYZ(temp, CIE_Y).toColor()
|
|
} |