| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import { Emitter } from '../../../base/common/event.js';
- import { Disposable, markAsSingleton } from '../../../base/common/lifecycle.js';
- import { RGBA8 } from '../core/rgba.js';
- import { TokenizationRegistry } from '../languages.js';
- export class MinimapTokensColorTracker extends Disposable {
- constructor() {
- super();
- this._onDidChange = new Emitter();
- this.onDidChange = this._onDidChange.event;
- this._updateColorMap();
- this._register(TokenizationRegistry.onDidChange(e => {
- if (e.changedColorMap) {
- this._updateColorMap();
- }
- }));
- }
- static getInstance() {
- if (!this._INSTANCE) {
- this._INSTANCE = markAsSingleton(new MinimapTokensColorTracker());
- }
- return this._INSTANCE;
- }
- _updateColorMap() {
- const colorMap = TokenizationRegistry.getColorMap();
- if (!colorMap) {
- this._colors = [RGBA8.Empty];
- this._backgroundIsLight = true;
- return;
- }
- this._colors = [RGBA8.Empty];
- for (let colorId = 1; colorId < colorMap.length; colorId++) {
- const source = colorMap[colorId].rgba;
- // Use a VM friendly data-type
- this._colors[colorId] = new RGBA8(source.r, source.g, source.b, Math.round(source.a * 255));
- }
- const backgroundLuminosity = colorMap[2 /* ColorId.DefaultBackground */].getRelativeLuminance();
- this._backgroundIsLight = backgroundLuminosity >= 0.5;
- this._onDidChange.fire(undefined);
- }
- getColor(colorId) {
- if (colorId < 1 || colorId >= this._colors.length) {
- // background color (basically invisible)
- colorId = 2 /* ColorId.DefaultBackground */;
- }
- return this._colors[colorId];
- }
- backgroundIsLight() {
- return this._backgroundIsLight;
- }
- }
- MinimapTokensColorTracker._INSTANCE = null;
|