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