in plot-api/src/commonMain/kotlin/org/jetbrains/letsPlot/util/pngj/chunks/PngChunkITXT.kt [55:89]
override fun parseFromRaw(chunk: ChunkRaw) {
var nullsFound = 0
val nullsIdx = IntArray(3)
run {
var i = 0
while (i < chunk.data!!.size) {
if (chunk.data!![i].toInt() != 0) {
i++
continue
}
nullsIdx[nullsFound] = i
nullsFound++
if (nullsFound == 1) i += 2
if (nullsFound == 3) break
i++
}
}
if (nullsFound != 3) throw PngjException("Bad formed PngChunkITXT chunk")
key = ChunkHelper.toStringLatin1(chunk.data!!, 0, nullsIdx[0])
var i = nullsIdx[0] + 1
isCompressed = chunk.data!![i] != 0.toByte()
i++
if (isCompressed && chunk.data!![i]
.toInt() != 0
) throw PngjException("Bad formed PngChunkITXT chunk - bad compression method ")
langtag = ChunkHelper.toStringLatin1(chunk.data!!, i, nullsIdx[1] - i)
translatedTag = ChunkHelper.toStringUTF8(chunk.data!!, nullsIdx[1] + 1, nullsIdx[2] - nullsIdx[1] - 1)
i = nullsIdx[2] + 1
value = if (isCompressed) {
val bytes: ByteArray = ChunkHelper.compressBytes(chunk.data!!, i, chunk.data!!.size - i, false)
ChunkHelper.toStringUTF8(bytes)
} else {
ChunkHelper.toStringUTF8(chunk.data!!, i, chunk.data!!.size - i)
}
}