Load new 3B attribute and cursor styles

cpsdqs/unified-input
cpsdqs 7 years ago
parent cbc21e9e3b
commit 72069d2219
  1. 36
      jssrc/term_screen.js

@ -61,6 +61,7 @@ class TermScreen {
bg: 0, bg: 0,
attrs: 0, attrs: 0,
blinkOn: false, blinkOn: false,
blinking: true,
visible: true, visible: true,
hanging: false, hanging: false,
style: 'block', style: 'block',
@ -453,7 +454,9 @@ class TermScreen {
this.cursor.blinkOn = true; this.cursor.blinkOn = true;
clearInterval(this.cursor.blinkInterval); clearInterval(this.cursor.blinkInterval);
this.cursor.blinkInterval = setInterval(() => { this.cursor.blinkInterval = setInterval(() => {
this.cursor.blinkOn = !this.cursor.blinkOn; this.cursor.blinkOn = this.cursor.blinking
? !this.cursor.blinkOn
: true;
this.scheduleDraw(); this.scheduleDraw();
}, 500); }, 500);
} }
@ -653,16 +656,17 @@ class TermScreen {
bg = -2 bg = -2
} }
let cellDidChange = text !== this.drawnScreen[cell] || let needsUpdate = text !== this.drawnScreen[cell] ||
fg !== this.drawnScreenFG[cell] || fg !== this.drawnScreenFG[cell] ||
bg !== this.drawnScreenBG[cell] || bg !== this.drawnScreenBG[cell] ||
attrs !== this.drawnScreenAttrs[cell]; attrs !== this.drawnScreenAttrs[cell] ||
isCursor;
let font = attrs & FONT_MASK; let font = attrs & FONT_MASK;
if (!fontGroups.has(font)) fontGroups.set(font, []); if (!fontGroups.has(font)) fontGroups.set(font, []);
fontGroups.get(font).push([cell, x, y, text, fg, bg, attrs, isCursor]); fontGroups.get(font).push([cell, x, y, text, fg, bg, attrs, isCursor]);
updateMap.set(cell, cellDidChange); updateMap.set(cell, needsUpdate);
} }
for (let font of fontGroups.keys()) { for (let font of fontGroups.keys()) {
@ -777,6 +781,30 @@ class TermScreen {
let trackMouseClicks = !!(attributes & (1 << 5)); let trackMouseClicks = !!(attributes & (1 << 5));
let trackMouseMovement = !!(attributes & (1 << 6)); let trackMouseMovement = !!(attributes & (1 << 6));
let cursorShape = (attributes >> 9 & 0b111)
if (cursorShape === 1) {
this.cursor.style = 'block'
if (!this.cursor.blinking) {
this.cursor.blinking = true;
this.resetCursorBlink();
}
} else {
if (cursorShape > 0) cursorShape--
let cursorStyle = cursorShape >> 1
let cursorBlinking = !(cursorShape & 1)
if (cursorStyle === 0) this.cursor.style = 'block'
else if (cursorStyle === 1) this.cursor.style = 'line'
else if (cursorStyle === 2) this.cursor.style = 'bar'
if (this.cursor.blinking !== cursorBlinking) {
this.cursor.blinking = cursorBlinking;
this.resetCursorBlink();
}
}
Input.setMouseMode(trackMouseClicks, trackMouseMovement); Input.setMouseMode(trackMouseClicks, trackMouseMovement);
this.selection.selectable = !trackMouseMovement; this.selection.selectable = !trackMouseMovement;
$(this.canvas).toggleClass('selectable', !trackMouseMovement); $(this.canvas).toggleClass('selectable', !trackMouseMovement);

Loading…
Cancel
Save