in plot-api/src/commonMain/kotlin/org/jetbrains/letsPlot/util/pngj/ImageLineByte.kt [152:184]
override fun writeToPngRaw(raw: ByteArray) {
raw[0] = filterType.value.toByte()
if (imgInfo.bitDepth == 8) {
arraycopy(scanline, 0, raw, 1, size)
} else if (imgInfo.bitDepth == 16) {
var i = 0
var s = 1
while (i < size) {
raw[s++] = scanline[i]
raw[s++] = scanline2!![i]
i++
}
} else { // packed formats
var shi: Int
val bd: Int
var v: Int
bd = imgInfo.bitDepth
shi = 8 - bd
v = 0
var i = 0
var r = 1
while (i < size) {
v = v or (scanline[i].toInt() shl shi)
shi -= bd
if (shi < 0 || i == size - 1) {
raw[r++] = v.toByte()
shi = 8 - bd
v = 0
}
i++
}
}
}