[ui] Fix garish colors in slice tracks.
Bug: 312417373
Change-Id: I314c88e6e5928b4b6fd07937e328ce8273c2fa40
diff --git a/ui/src/common/colorizer.ts b/ui/src/common/colorizer.ts
index fec202d..3c20520 100644
--- a/ui/src/common/colorizer.ts
+++ b/ui/src/common/colorizer.ts
@@ -13,6 +13,7 @@
// limitations under the License.
import {hsl} from 'color-convert';
+import {hsluvToRgb} from 'hsluv';
import {clamp} from '../base/math_utils';
import {hash} from '../common/hash';
@@ -172,13 +173,6 @@
return cachedHsluvToHex(hue, saturation, newLightness);
}
-export function colorToStr(color: Color) {
- if (color.a !== undefined) {
- return `hsla(${color.h}, ${color.s}%, ${color.l}%, ${color.a})`;
- }
- return `hsl(${color.h}, ${color.s}%, ${color.l}%)`;
-}
-
export function colorCompare(x: Color, y: Color): number {
return (x.h - y.h) || (x.s - y.s) || (x.l - y.l);
}
@@ -270,7 +264,7 @@
// brightness.
export function colorIsLight(color: Color): boolean {
// YIQ calculation from https://24ways.org/2010/calculating-color-contrast
- const [r, g, b] = colorToRGB(color);
+ const [r, g, b] = hsluvToRgb([color.h, color.s, color.l]);
const yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
return (yiq >= 128);
}
diff --git a/ui/src/frontend/base_slice_track.ts b/ui/src/frontend/base_slice_track.ts
index 6f321ce..cd3ccc3 100644
--- a/ui/src/frontend/base_slice_track.ts
+++ b/ui/src/frontend/base_slice_track.ts
@@ -34,7 +34,6 @@
colorIsLight,
colorLighten,
colorsEqual,
- colorToStr,
UNEXPECTED_PINK_COLOR,
} from '../common/colorizer';
import {Selection, SelectionKind} from '../common/state';
@@ -431,7 +430,8 @@
for (const slice of vizSlicesByColor) {
if (slice.color !== lastColor) {
lastColor = slice.color;
- ctx.fillStyle = colorToStr(slice.color);
+ const {h, s, l} = slice.color;
+ ctx.fillStyle = cachedHsluvToHex(h, s, l);
}
const y = padding + slice.depth * (sliceHeight + rowSpacing);
if (slice.flags & SLICE_FLAGS_INSTANT) {
@@ -477,7 +477,7 @@
// Slices are sorted by color and light tint is a pure function of slice
// color so we should be able to re-use colors quite frequently
if (prevColor === undefined || !colorsEqual(color, prevColor)) {
- ctx.fillStyle = colorToStr(color);
+ ctx.fillStyle = cachedHsluvToHex(color.h, color.s, color.l);
prevColor = color;
}
diff --git a/ui/src/frontend/slice_track_base.ts b/ui/src/frontend/slice_track_base.ts
index 881e6c0..37c2ec8 100644
--- a/ui/src/frontend/slice_track_base.ts
+++ b/ui/src/frontend/slice_track_base.ts
@@ -18,7 +18,6 @@
import {cropText, drawIncompleteSlice} from '../common/canvas_utils';
import {
colorForThreadIdleSlice,
- colorToStr,
getColorForSlice,
} from '../common/colorizer';
import {HighPrecisionTime} from '../common/high_precision_time';
@@ -146,7 +145,7 @@
let color: string;
if (colorOverride === undefined) {
- color = colorToStr(colorObj);
+ color = cachedHsluvToHex(colorObj.h, colorObj.s, colorObj.l);
} else {
color = colorOverride;
}
diff --git a/ui/src/tracks/chrome_scroll_jank/event_latency_track.ts b/ui/src/tracks/chrome_scroll_jank/event_latency_track.ts
index 498591e..fcd0b5d 100644
--- a/ui/src/tracks/chrome_scroll_jank/event_latency_track.ts
+++ b/ui/src/tracks/chrome_scroll_jank/event_latency_track.ts
@@ -84,6 +84,18 @@
};
}
+ // TODO(stevegolton): The janky event color should be assigned in rowToSlice.
+ // For example:
+
+ // rowToSlice(row: NamedSliceRow): Slice {
+ // const baseSlice = super.rowToSlice(row);
+ // if (baseSlice.title === JANKY_LATENCY_NAME) {
+ // return {...baseSlice, baseColor: RED_COLOR};
+ // } else {
+ // return baseSlice;
+ // }
+ // }
+
onUpdatedSlices(slices: EventLatencyTrackTypes['slice'][]) {
for (const slice of slices) {
const currentSelection = globals.state.currentSelection;
diff --git a/ui/src/tracks/chrome_scroll_jank/jank_colors.ts b/ui/src/tracks/chrome_scroll_jank/jank_colors.ts
index 704819e..f556f7d 100644
--- a/ui/src/tracks/chrome_scroll_jank/jank_colors.ts
+++ b/ui/src/tracks/chrome_scroll_jank/jank_colors.ts
@@ -15,13 +15,13 @@
import {Color} from '../../common/colorizer';
export const RED_COLOR: Color = {
- h: 196,
- s: 30,
- l: 58,
+ h: 7,
+ s: 100,
+ l: 46,
};
export const DEEP_RED_COLOR: Color = {
- h: 136,
- s: 8,
- l: 8,
+ h: 11,
+ s: 100,
+ l: 32,
};