override fun parseFromRaw()

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