From 2bc29552dd8e2917207777fb88ae467c33276360 Mon Sep 17 00:00:00 2001 From: LepilkinaElena Date: Mon, 11 Mar 2019 09:10:39 +0300 Subject: [PATCH] Fix coloring of ratio (#2750) --- .../main/kotlin/org/jetbrains/renders/HTMLRender.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/benchmarksAnalyzer/src/main/kotlin/org/jetbrains/renders/HTMLRender.kt b/tools/benchmarksAnalyzer/src/main/kotlin/org/jetbrains/renders/HTMLRender.kt index e89f4c1be9a..9874913eeab 100644 --- a/tools/benchmarksAnalyzer/src/main/kotlin/org/jetbrains/renders/HTMLRender.kt +++ b/tools/benchmarksAnalyzer/src/main/kotlin/org/jetbrains/renders/HTMLRender.kt @@ -575,12 +575,13 @@ class HTMLRender: Render() { } td { val scaledRatio = if (maxRatio == 0.0) null else change.second.mean / maxRatio - attributes["bgcolor"] = ColoredCell(scaledRatio).backgroundStyle + attributes["bgcolor"] = ColoredCell(scaledRatio, + borderPositive = { cellValue -> cellValue > 1.0 / maxRatio }).backgroundStyle +"${change.second}" } } } - } else { + } else if (bucket == null) { // Output all values without performance changes. val placeholder = "-" for ((name, value) in fullSet) { @@ -650,7 +651,8 @@ class HTMLRender: Render() { } } - class ColoredCell(val scaledValue: Double?, val reverse: Boolean = false) { + class ColoredCell(val scaledValue: Double?, val reverse: Boolean = false, + val borderPositive: (cellValue: Double) -> Boolean = { cellValue -> cellValue > 0 }) { val value: Double val neutralColor = Color(1.0,1.0 , 1.0) val negativeColor = Color(0.0, 1.0, 0.0) @@ -667,7 +669,7 @@ class HTMLRender: Render() { fun getColor(): Color { val currentValue = clamp(value, -1.0, 1.0) val cellValue = if (reverse) -currentValue else currentValue - val baseColor = if (cellValue < 0) negativeColor else positiveColor + val baseColor = if (borderPositive(cellValue)) positiveColor else negativeColor // Smooth mapping to put first 20% of change into 50% of range, // although really we should compensate for luma. val color = sin((abs(cellValue).pow(.477)) * kotlin.math.PI * .5)