mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
[DS] improve performance of ImageInverter.kt
New image convert is 1.5-2 times faster GitOrigin-RevId: 9340e472426b46cd170f46f9605910f14cf2a78b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
938a4fc903
commit
deeb40644b
@@ -129,13 +129,20 @@ class ImageInverter(foreground: Color, background: Color, private val graphicsCo
|
||||
}
|
||||
|
||||
private fun invertInPlace(image: BufferedImage, outputImage: BufferedImage) {
|
||||
for (x in 0 until image.width) {
|
||||
for (y in 0 until image.height) {
|
||||
val argb = image.getRGB(x, y)
|
||||
val alpha = invert(argb)
|
||||
outputImage.setRGB(x, y, convertHSLtoRGB(hsl, alpha))
|
||||
val rgbArray = image.getRGB(0, 0, image.width, image.height, null, 0, image.width)
|
||||
if (rgbArray.isEmpty()) return
|
||||
// Usually graph data contains regions with same color. Previous converted color may be reused.
|
||||
var prevArgb = rgbArray[0]
|
||||
var prevConverted = convertHSLtoRGB(hsl, invert(prevArgb))
|
||||
for (i in rgbArray.indices) {
|
||||
val argb = rgbArray[i]
|
||||
if (argb != prevArgb) {
|
||||
prevArgb = argb
|
||||
prevConverted = convertHSLtoRGB(hsl, invert(argb))
|
||||
}
|
||||
rgbArray[i] = prevConverted
|
||||
}
|
||||
outputImage.setRGB(0, 0, image.width, image.height, rgbArray, 0, image.width)
|
||||
}
|
||||
|
||||
private fun createImageWithInvertedPalette(image: BufferedImage): BufferedImage {
|
||||
|
||||
Reference in New Issue
Block a user