in plot-api/src/commonMain/kotlin/org/jetbrains/letsPlot/util/pngj/pixels/PixelsWriterDefault.kt [62:89]
override fun initParams() {
super.initParams()
if (rowb.size < buflen) rowb = ByteArray(buflen)
if (rowbfilter == null || rowbfilter!!.size < buflen) rowbfilter = ByteArray(buflen)
if (rowbprev == null || rowbprev!!.size < buflen) rowbprev = ByteArray(buflen) else fill(rowbprev!!, 0.toByte())
// if adaptative but too few rows or columns, use default
if (imgInfo.cols < 3 && !FilterType.isValidStandard(filterType)) filterType = FilterType.FILTER_DEFAULT
if (imgInfo.rows < 3 && !FilterType.isValidStandard(filterType)) filterType = FilterType.FILTER_DEFAULT
if (imgInfo.totalPixels <= 1024 && !FilterType.isValidStandard(filterType)) filterType = defaultFilter
if (FilterType.isAdaptive(filterType)) {
// adaptCurSkip = 0;
adaptNextRow = 0
if (filterType === FilterType.FILTER_ADAPTIVE_FAST) {
adaptMaxSkip = 200
adaptSkipIncreaseSinceRow = 3
adaptSkipIncreaseFactor = 1 / 4.0 // skip ~ row/3
} else if (filterType === FilterType.FILTER_ADAPTIVE_MEDIUM) {
adaptMaxSkip = 8
adaptSkipIncreaseSinceRow = 32
adaptSkipIncreaseFactor = 1 / 80.0
} else if (filterType === FilterType.FILTER_ADAPTIVE_FULL) {
adaptMaxSkip = 0
adaptSkipIncreaseSinceRow = 128
adaptSkipIncreaseFactor = 1 / 120.0
} else throw PngjOutputException("bad filter $filterType")
}
}