Files
Terrarum/src/net/torvald/colourutil/ColourTemp.kt
2017-04-18 01:14:25 +09:00

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()
}