Varinat -> Variant

This commit is contained in:
Daniel Imms
2023-11-02 10:43:56 -07:00
parent 390e4f30c8
commit 6214f4c2e6
7 changed files with 27 additions and 27 deletions
+2 -2
View File
@@ -53,14 +53,14 @@ class ExtendedAttrsImage implements IExtendedAttrsImage {
this._ext |= value & (Attributes.CM_MASK | Attributes.RGB_MASK); this._ext |= value & (Attributes.CM_MASK | Attributes.RGB_MASK);
} }
public get underlineVarinatOffset(): number { public get underlineVariantOffset(): number {
const val = (this._ext & ExtFlags.VARIANT_OFFSET) >> 29; const val = (this._ext & ExtFlags.VARIANT_OFFSET) >> 29;
if (val < 0) { if (val < 0) {
return val ^ 0xFFFFFFF8; return val ^ 0xFFFFFFF8;
} }
return val; return val;
} }
public set underlineVarinatOffset(value: number) { public set underlineVariantOffset(value: number) {
this._ext &= ~ExtFlags.VARIANT_OFFSET; this._ext &= ~ExtFlags.VARIANT_OFFSET;
this._ext |= (value << 29) & ExtFlags.VARIANT_OFFSET; this._ext |= (value << 29) & ExtFlags.VARIANT_OFFSET;
} }
@@ -3,15 +3,15 @@
* @license MIT * @license MIT
*/ */
import { computeNextVarinatOffset } from 'browser/renderer/shared/RendererUtils'; import { computeNextVariantOffset } from 'browser/renderer/shared/RendererUtils';
import { assert } from 'chai'; import { assert } from 'chai';
describe('RendererUtils', () => { describe('RendererUtils', () => {
it('computeNextVarinatOffset', () => { it('computeNextVariantOffset', () => {
const cellWidth = 11; const cellWidth = 11;
const doubleCellWidth = 22; const doubleCellWidth = 22;
let line = 1; let line = 1;
let varinatOffset = 0; let variantOffset = 0;
// should line 1 // should line 1
// =,_,=_,=_, // =,_,=_,=_,
@@ -19,32 +19,32 @@ describe('RendererUtils', () => {
let result = [1, 0, 0, 0]; let result = [1, 0, 0, 0];
for (let index = 0; index < cells.length; index++) { for (let index = 0; index < cells.length; index++) {
const cell = cells[index]; const cell = cells[index];
varinatOffset = computeNextVarinatOffset(cell, line, varinatOffset); variantOffset = computeNextVariantOffset(cell, line, variantOffset);
assert.equal(varinatOffset, result[index]); assert.equal(variantOffset, result[index]);
} }
// should line 2 // should line 2
// ==__==__==_,_==__==__==,__==__==__==__==__==__,==__==__==__==__==__==, // ==__==__==_,_==__==__==,__==__==__==__==__==__,==__==__==__==__==__==,
line = 2; line = 2;
varinatOffset = 0; variantOffset = 0;
cells = [cellWidth, cellWidth, doubleCellWidth, doubleCellWidth]; cells = [cellWidth, cellWidth, doubleCellWidth, doubleCellWidth];
result = [3, 2, 0 ,2]; result = [3, 2, 0 ,2];
for (let index = 0; index < cells.length; index++) { for (let index = 0; index < cells.length; index++) {
const cell = cells[index]; const cell = cells[index];
varinatOffset = computeNextVarinatOffset(cell, line, varinatOffset); variantOffset = computeNextVariantOffset(cell, line, variantOffset);
assert.equal(varinatOffset, result[index]); assert.equal(variantOffset, result[index]);
} }
// should line 3 // should line 3
// ===___===__,_===___===_,__===___===___===___==,=___===___===___===___, // ===___===__,_===___===_,__===___===___===___==,=___===___===___===___,
line = 3; line = 3;
varinatOffset = 0; variantOffset = 0;
cells = [cellWidth, cellWidth, doubleCellWidth, doubleCellWidth]; cells = [cellWidth, cellWidth, doubleCellWidth, doubleCellWidth];
result = [5, 4, 2, 0]; result = [5, 4, 2, 0];
for (let index = 0; index < cells.length; index++) { for (let index = 0; index < cells.length; index++) {
const cell = cells[index]; const cell = cells[index];
varinatOffset = computeNextVarinatOffset(cell, line, varinatOffset); variantOffset = computeNextVariantOffset(cell, line, variantOffset);
assert.equal(varinatOffset, result[index]); assert.equal(variantOffset, result[index]);
} }
}); });
}); });
+1 -1
View File
@@ -57,6 +57,6 @@ function createDimension(): IDimensions {
}; };
} }
export function computeNextVarinatOffset(cellWidth: number, lineWidth: number, currentOffset: number = 0): number { export function computeNextVariantOffset(cellWidth: number, lineWidth: number, currentOffset: number = 0): number {
return (cellWidth - (Math.round(lineWidth) * 2 - currentOffset)) % (Math.round(lineWidth) * 2); return (cellWidth - (Math.round(lineWidth) * 2 - currentOffset)) % (Math.round(lineWidth) * 2);
} }
+3 -3
View File
@@ -6,7 +6,7 @@
import { IColorContrastCache } from 'browser/Types'; import { IColorContrastCache } from 'browser/Types';
import { DIM_OPACITY, TEXT_BASELINE } from 'browser/renderer/shared/Constants'; import { DIM_OPACITY, TEXT_BASELINE } from 'browser/renderer/shared/Constants';
import { tryDrawCustomChar } from 'browser/renderer/shared/CustomGlyphs'; import { tryDrawCustomChar } from 'browser/renderer/shared/CustomGlyphs';
import { computeNextVarinatOffset, excludeFromContrastRatioDemands, isPowerlineGlyph, isRestrictedPowerlineGlyph, throwIfFalsy } from 'browser/renderer/shared/RendererUtils'; import { computeNextVariantOffset, excludeFromContrastRatioDemands, isPowerlineGlyph, isRestrictedPowerlineGlyph, throwIfFalsy } from 'browser/renderer/shared/RendererUtils';
import { IBoundingBox, ICharAtlasConfig, IRasterizedGlyph, ITextureAtlas } from 'browser/renderer/shared/Types'; import { IBoundingBox, ICharAtlasConfig, IRasterizedGlyph, ITextureAtlas } from 'browser/renderer/shared/Types';
import { NULL_COLOR, color, rgba } from 'common/Color'; import { NULL_COLOR, color, rgba } from 'common/Color';
import { EventEmitter } from 'common/EventEmitter'; import { EventEmitter } from 'common/EventEmitter';
@@ -545,7 +545,7 @@ export class TextureAtlas implements ITextureAtlas {
const yTop = Math.ceil(padding + this._config.deviceCharHeight) - yOffset - (restrictToCellHeight ? lineWidth * 2 : 0); const yTop = Math.ceil(padding + this._config.deviceCharHeight) - yOffset - (restrictToCellHeight ? lineWidth * 2 : 0);
const yMid = yTop + lineWidth; const yMid = yTop + lineWidth;
const yBot = yTop + lineWidth * 2; const yBot = yTop + lineWidth * 2;
let nextOffset = this._workAttributeData.getUnderlineVarinatOffset(); let nextOffset = this._workAttributeData.getUnderlineVariantOffset();
for (let i = 0; i < chWidth; i++) { for (let i = 0; i < chWidth; i++) {
this._tmpCtx.save(); this._tmpCtx.save();
@@ -610,7 +610,7 @@ export class TextureAtlas implements ITextureAtlas {
this._tmpCtx.moveTo(xChLeft + offsetWidth + lineWidth, yTop); this._tmpCtx.moveTo(xChLeft + offsetWidth + lineWidth, yTop);
this._tmpCtx.lineTo(xChRight, yTop); this._tmpCtx.lineTo(xChRight, yTop);
} }
nextOffset = computeNextVarinatOffset(xChRight - xChLeft, lineWidth, nextOffset); nextOffset = computeNextVariantOffset(xChRight - xChLeft, lineWidth, nextOffset);
break; break;
case UnderlineStyle.DASHED: case UnderlineStyle.DASHED:
this._tmpCtx.setLineDash([this._config.devicePixelRatio * 4, this._config.devicePixelRatio * 3]); this._tmpCtx.setLineDash([this._config.devicePixelRatio * 4, this._config.devicePixelRatio * 3]);
+2 -2
View File
@@ -119,7 +119,7 @@ export interface IExtendedAttrs {
ext: number; ext: number;
underlineStyle: UnderlineStyle; underlineStyle: UnderlineStyle;
underlineColor: number; underlineColor: number;
underlineVarinatOffset: number; underlineVariantOffset: number;
urlId: number; urlId: number;
clone(): IExtendedAttrs; clone(): IExtendedAttrs;
isEmpty(): boolean; isEmpty(): boolean;
@@ -210,7 +210,7 @@ export interface IAttributeData {
isUnderlineColorPalette(): boolean; isUnderlineColorPalette(): boolean;
isUnderlineColorDefault(): boolean; isUnderlineColorDefault(): boolean;
getUnderlineStyle(): number; getUnderlineStyle(): number;
getUnderlineVarinatOffset(): number; getUnderlineVariantOffset(): number;
} }
/** Cell data */ /** Cell data */
+4 -4
View File
@@ -126,8 +126,8 @@ export class AttributeData implements IAttributeData {
? (this.bg & BgFlags.HAS_EXTENDED ? this.extended.underlineStyle : UnderlineStyle.SINGLE) ? (this.bg & BgFlags.HAS_EXTENDED ? this.extended.underlineStyle : UnderlineStyle.SINGLE)
: UnderlineStyle.NONE; : UnderlineStyle.NONE;
} }
public getUnderlineVarinatOffset(): number { public getUnderlineVariantOffset(): number {
return this.extended.underlineVarinatOffset; return this.extended.underlineVariantOffset;
} }
} }
@@ -177,14 +177,14 @@ export class ExtendedAttrs implements IExtendedAttrs {
this._urlId = value; this._urlId = value;
} }
public get underlineVarinatOffset(): number { public get underlineVariantOffset(): number {
const val = (this._ext & ExtFlags.VARIANT_OFFSET) >> 29; const val = (this._ext & ExtFlags.VARIANT_OFFSET) >> 29;
if (val < 0) { if (val < 0) {
return val ^ 0xFFFFFFF8; return val ^ 0xFFFFFFF8;
} }
return val; return val;
} }
public set underlineVarinatOffset(value: number) { public set underlineVariantOffset(value: number) {
this._ext &= ~ExtFlags.VARIANT_OFFSET; this._ext &= ~ExtFlags.VARIANT_OFFSET;
this._ext |= (value << 29) & ExtFlags.VARIANT_OFFSET; this._ext |= (value << 29) & ExtFlags.VARIANT_OFFSET;
} }
+4 -4
View File
@@ -119,16 +119,16 @@ describe('AttributeData', () => {
attrs.fg &= ~FgFlags.UNDERLINE; attrs.fg &= ~FgFlags.UNDERLINE;
assert.equal(attrs.getUnderlineStyle(), UnderlineStyle.NONE); assert.equal(attrs.getUnderlineStyle(), UnderlineStyle.NONE);
}); });
it('getUnderlineVarinatOffset', () => { it('getUnderlineVariantOffset', () => {
const attrs = new AttributeData(); const attrs = new AttributeData();
// defaults to no offset // defaults to no offset
assert.equal(attrs.getUnderlineVarinatOffset(), 0); assert.equal(attrs.getUnderlineVariantOffset(), 0);
// should return 0 - 7 // should return 0 - 7
for (let i = 0; i < 8; ++i) { for (let i = 0; i < 8; ++i) {
attrs.extended.underlineVarinatOffset = i; attrs.extended.underlineVariantOffset = i;
assert.equal(attrs.getUnderlineVarinatOffset(), i); assert.equal(attrs.getUnderlineVariantOffset(), i);
} }
}); });
}); });