Skip to content

Commit

Permalink
Merge pull request #2602 from Tyriar/fix_dom
Browse files Browse the repository at this point in the history
Fix minimumContrastRatio on dom/truecolor
  • Loading branch information
Tyriar authored Dec 4, 2019
2 parents 8b5c48f + 543b3d6 commit 17cb610
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/browser/Color.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ export function contrastRatio(l1: number, l2: number): number {
return (l1 + 0.05) / (l2 + 0.05);
}

function rgbaToColor(r: number, g: number, b: number): IColor {
export function rgbaToColor(r: number, g: number, b: number): IColor {
return {
css: toCss(r, g, b),
rgba: toRgba(r, g, b)
Expand Down
19 changes: 15 additions & 4 deletions src/browser/renderer/dom/DomRendererRowFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { INVERTED_DEFAULT_COLOR } from 'browser/renderer/atlas/Constants';
import { NULL_CELL_CODE, WHITESPACE_CELL_CHAR, Attributes } from 'common/buffer/Constants';
import { CellData } from 'common/buffer/CellData';
import { IOptionsService } from 'common/services/Services';
import { ensureContrastRatio } from 'browser/Color';
import { ensureContrastRatio, rgbaToColor } from 'browser/Color';
import { IColorSet, IColor } from 'browser/Types';

export const BOLD_CLASS = 'xterm-bold';
Expand Down Expand Up @@ -129,7 +129,14 @@ export class DomRendererRowFactory {
}
break;
case Attributes.CM_RGB:
charElement.setAttribute('style', `${charElement.getAttribute('style') || ''}color:#${padStart(fg.toString(16), '0', 6)};`);
const color = rgbaToColor(
(fg >> 16) & 0xFF,
(fg >> 8) & 0xFF,
(fg ) & 0xFF
);
if (!this._applyMinimumContrast(charElement, this._colors.background, color)) {
this._addStyle(charElement, `color:#${padStart(fg.toString(16), '0', 6)}`);
}
break;
case Attributes.CM_DEFAULT:
default:
Expand All @@ -147,7 +154,7 @@ export class DomRendererRowFactory {
charElement.classList.add(`xterm-bg-${bg}`);
break;
case Attributes.CM_RGB:
charElement.setAttribute('style', `${charElement.getAttribute('style') || ''}background-color:#${padStart(bg.toString(16), '0', 6)};`);
this._addStyle(charElement, `background-color:#${padStart(bg.toString(16), '0', 6)}`);
break;
case Attributes.CM_DEFAULT:
default:
Expand Down Expand Up @@ -176,12 +183,16 @@ export class DomRendererRowFactory {
}

if (adjustedColor) {
element.setAttribute('style', `${element.getAttribute('style') || ''}color:${adjustedColor.css}`);
this._addStyle(element, `color:${adjustedColor.css}`);
return true;
}

return false;
}

private _addStyle(element: HTMLElement, style: string): void {
element.setAttribute('style', `${element.getAttribute('style') || ''}${style};`);
}
}

function padStart(text: string, padChar: string, length: number): string {
Expand Down

0 comments on commit 17cb610

Please sign in to comment.