Support strikethrough text style

This commit is contained in:
Simon Lamon
2021-05-15 17:35:23 +02:00
parent 873dd76167
commit d19a740825
10 changed files with 65 additions and 11 deletions
+6
View File
@@ -636,6 +636,12 @@ describe('InputHandler', () => {
await inputHandler.parseP('\x1b[28m');
assert.equal(!!inputHandler.curAttrData.isInvisible(), false);
});
it('strikethrough', async () => {
await inputHandler.parseP('\x1b[9m');
assert.equal(!!inputHandler.curAttrData.isStrikethrough(), true);
await inputHandler.parseP('\x1b[29m');
assert.equal(!!inputHandler.curAttrData.isStrikethrough(), false);
});
it('colormode palette 16', async () => {
assert.equal(inputHandler.curAttrData.getFgColorMode(), 0); // DEFAULT
assert.equal(inputHandler.curAttrData.getBgColorMode(), 0); // DEFAULT
+6
View File
@@ -2478,6 +2478,9 @@ export class InputHandler extends Disposable implements IInputHandler {
} else if (p === 8) {
// invisible
attr.fg |= FgFlags.INVISIBLE;
} else if (p === 9) {
// strikethrough
attr.fg |= FgFlags.STRIKETHROUGH;
} else if (p === 2) {
// dimmed text
attr.bg |= BgFlags.DIM;
@@ -2503,6 +2506,9 @@ export class InputHandler extends Disposable implements IInputHandler {
} else if (p === 28) {
// not invisible
attr.fg &= ~FgFlags.INVISIBLE;
} else if (p === 29) {
// not strikethrough
attr.fg &= ~FgFlags.STRIKETHROUGH;
} else if (p === 39) {
// reset fg
attr.fg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);
+1
View File
@@ -117,6 +117,7 @@ export interface IAttributeData {
isInvisible(): number;
isItalic(): number;
isDim(): number;
isStrikethrough(): number;
// color modes
getFgColorMode(): number;
+8 -7
View File
@@ -33,13 +33,14 @@ export class AttributeData implements IAttributeData {
public extended = new ExtendedAttrs();
// flags
public isInverse(): number { return this.fg & FgFlags.INVERSE; }
public isBold(): number { return this.fg & FgFlags.BOLD; }
public isUnderline(): number { return this.fg & FgFlags.UNDERLINE; }
public isBlink(): number { return this.fg & FgFlags.BLINK; }
public isInvisible(): number { return this.fg & FgFlags.INVISIBLE; }
public isItalic(): number { return this.bg & BgFlags.ITALIC; }
public isDim(): number { return this.bg & BgFlags.DIM; }
public isInverse(): number { return this.fg & FgFlags.INVERSE; }
public isBold(): number { return this.fg & FgFlags.BOLD; }
public isUnderline(): number { return this.fg & FgFlags.UNDERLINE; }
public isBlink(): number { return this.fg & FgFlags.BLINK; }
public isInvisible(): number { return this.fg & FgFlags.INVISIBLE; }
public isItalic(): number { return this.bg & BgFlags.ITALIC; }
public isDim(): number { return this.bg & BgFlags.DIM; }
public isStrikethrough(): number { return this.fg & FgFlags.STRIKETHROUGH; }
// color modes
public getFgColorMode(): number { return this.fg & Attributes.CM_MASK; }
+3 -2
View File
@@ -110,13 +110,14 @@ export const enum Attributes {
export const enum FgFlags {
/**
* bit 27..31 (32th bit unused)
* bit 27..32
*/
INVERSE = 0x4000000,
BOLD = 0x8000000,
UNDERLINE = 0x10000000,
BLINK = 0x20000000,
INVISIBLE = 0x40000000
INVISIBLE = 0x40000000,
STRIKETHROUGH = 0x80000000,
}
export const enum BgFlags {