override fun parseFromRaw()

in plot-api/src/commonMain/kotlin/org/jetbrains/letsPlot/util/pngj/chunks/PngChunkSPLT.kt [59:103]


    override fun parseFromRaw(chunk: ChunkRaw) {
        var t = -1
        for (i in chunk.data!!.indices) { // look for first zero
            if (chunk.data!![i].toInt() == 0) {
                t = i
                break
            }
        }
        if (t <= 0 || t > chunk.data!!.size - 2) throw PngjException("bad sPLT chunk: no separator found")
        palName = ChunkHelper.toStringLatin1(chunk.data!!, 0, t)
        sampledepth = PngHelperInternal.readInt1fromByte(chunk.data, t + 1)
        t += 2
        val nentries: Int = (chunk.data!!.size - t) / if (sampledepth == 8) 6 else 10
        palette = IntArray(nentries * 5)
        var r: Int
        var g: Int
        var b: Int
        var a: Int
        var f: Int
        var ne = 0
        for (i in 0 until nentries) {
            if (sampledepth == 8) {
                r = PngHelperInternal.readInt1fromByte(chunk.data, t++)
                g = PngHelperInternal.readInt1fromByte(chunk.data, t++)
                b = PngHelperInternal.readInt1fromByte(chunk.data, t++)
                a = PngHelperInternal.readInt1fromByte(chunk.data, t++)
            } else {
                r = PngHelperInternal.readInt2fromBytes(chunk.data, t)
                t += 2
                g = PngHelperInternal.readInt2fromBytes(chunk.data, t)
                t += 2
                b = PngHelperInternal.readInt2fromBytes(chunk.data, t)
                t += 2
                a = PngHelperInternal.readInt2fromBytes(chunk.data, t)
                t += 2
            }
            f = PngHelperInternal.readInt2fromBytes(chunk.data, t)
            t += 2
            palette[ne++] = r
            palette[ne++] = g
            palette[ne++] = b
            palette[ne++] = a
            palette[ne++] = f
        }
    }