override fun writeToPngRaw()

in plot-api/src/commonMain/kotlin/org/jetbrains/letsPlot/util/pngj/ImageLineInt.kt [165:202]


    override fun writeToPngRaw(raw: ByteArray) {
        raw[0] = filterType.value.toByte()
        when (imgInfo.bitDepth) {
            8 -> {
                for (i in 0 until size) {
                    raw[i + 1] = scanline[i].toByte()
                }
            }
            16 -> {
                var i = 0
                var s = 1
                while (i < size) {
                    raw[s++] = (scanline[i] shr 8).toByte()
                    raw[s++] = (scanline[i] and 0xff).toByte()
                    i++
                }
            }
            else -> { // packed formats
                var shi: Int
                var v: Int
                val bd: Int = imgInfo.bitDepth
                shi = 8 - bd
                v = 0
                var i = 0
                var r = 1
                while (i < size) {
                    v = v or (scanline[i] shl shi)
                    shi -= bd
                    if (shi < 0 || i == size - 1) {
                        raw[r++] = v.toByte()
                        shi = 8 - bd
                        v = 0
                    }
                    i++
                }
            }
        }
    }