Files
Terrarum/src/net/torvald/terrarum/TerrarumScreenSize.kt
2021-07-27 12:43:01 +09:00

48 lines
1.6 KiB
Kotlin

package net.torvald.terrarum
class TerrarumScreenSize(scrw: Int = defaultW, scrh: Int = defaultH) {
companion object {
const val minimumW = 1080
const val minimumH = 720
const val defaultW = 1280
const val defaultH = 720
const val TV_SAFE_GRAPHICS = 0.05f // as per EBU recommendation (https://tech.ebu.ch/docs/r/r095.pdf)
const val TV_SAFE_ACTION = 0.035f // as per EBU recommendation (https://tech.ebu.ch/docs/r/r095.pdf)
}
var screenW: Int = 0; private set
var screenH: Int = 0; private set
var screenWf: Float = 0f; private set
var screenHf: Float = 0f; private set
var halfScreenW: Int = 0; private set
var halfScreenH: Int = 0; private set
var halfScreenWf: Float = 0f; private set
var halfScreenHf: Float = 0f; private set
var aspectRatio: Float = 0f; private set
val tvSafeGraphicsWidth: Int; get() = Math.round(screenW * TV_SAFE_GRAPHICS)
val tvSafeGraphicsHeight: Int; get() = Math.round(screenH * TV_SAFE_GRAPHICS)
val tvSafeActionWidth: Int; get() = Math.round(screenW * TV_SAFE_ACTION)
val tvSafeActionHeight: Int; get() = Math.round(screenH * TV_SAFE_ACTION)
init {
setDimension(maxOf(minimumW, scrw), maxOf(minimumH, scrh))
}
fun setDimension(scrw: Int, scrh: Int) {
screenW = scrw and 0x7FFFFFFE
screenH = scrh and 0x7FFFFFFE
screenWf = scrw.toFloat()
screenHf = scrh.toFloat()
halfScreenW = screenW / 2
halfScreenH = screenH / 2
halfScreenWf = screenWf / 2f
halfScreenHf = screenHf / 2f
aspectRatio = screenWf / screenHf
}
}