mirror of
https://github.com/embarklabs/neo-blessed.git
synced 2025-01-09 18:45:51 +00:00
optimize rendering even more.
This commit is contained in:
parent
d0473749c9
commit
ac10c408e3
@ -197,10 +197,16 @@ Screen.prototype.alloc = function() {
|
|||||||
this.lines[y] = [];
|
this.lines[y] = [];
|
||||||
for (x = 0; x < this.cols; x++) {
|
for (x = 0; x < this.cols; x++) {
|
||||||
this.lines[y][x] = [this.dattr, ' '];
|
this.lines[y][x] = [this.dattr, ' '];
|
||||||
//this.lines[y][x].dirty = true;
|
|
||||||
}
|
}
|
||||||
this.lines[y].dirty = true;
|
this.lines[y].dirty = true;
|
||||||
}
|
}
|
||||||
|
this.olines = [];
|
||||||
|
for (y = 0; y < this.rows; y++) {
|
||||||
|
this.olines[y] = [];
|
||||||
|
for (x = 0; x < this.cols; x++) {
|
||||||
|
this.olines[y][x] = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Screen.prototype.render = function() {
|
Screen.prototype.render = function() {
|
||||||
@ -222,11 +228,18 @@ Screen.prototype.draw = function(start, end) {
|
|||||||
, bgColor
|
, bgColor
|
||||||
, flags;
|
, flags;
|
||||||
|
|
||||||
|
var lx = -1
|
||||||
|
, ly = -1
|
||||||
|
, o;
|
||||||
|
|
||||||
this.program.saveCursor();
|
this.program.saveCursor();
|
||||||
|
//this.program.write('\x1b[1;1H');
|
||||||
|
|
||||||
for (y = start; y <= end; y++) {
|
for (y = start; y <= end; y++) {
|
||||||
line = this.lines[y];
|
line = this.lines[y];
|
||||||
|
o = this.olines[y];
|
||||||
|
|
||||||
|
// TODO: Possibly get rid of .dirty altogether.
|
||||||
if (!line.dirty) continue;
|
if (!line.dirty) continue;
|
||||||
line.dirty = false;
|
line.dirty = false;
|
||||||
|
|
||||||
@ -237,6 +250,21 @@ Screen.prototype.draw = function(start, end) {
|
|||||||
data = line[x][0];
|
data = line[x][0];
|
||||||
ch = line[x][1];
|
ch = line[x][1];
|
||||||
|
|
||||||
|
if (data === o[x][0] && ch === o[x][1]) {
|
||||||
|
if (lx === -1) {
|
||||||
|
lx = x;
|
||||||
|
ly = y;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
} else if (lx !== -1) {
|
||||||
|
out += y === ly
|
||||||
|
? '\x1b[' + (x - lx) + 'C'
|
||||||
|
: '\x1b[' + (y + 1) + ';' + (x + 1) + 'H';
|
||||||
|
lx = -1, ly = -1;
|
||||||
|
}
|
||||||
|
o[x][0] = data;
|
||||||
|
o[x][1] = ch;
|
||||||
|
|
||||||
if (data !== attr) {
|
if (data !== attr) {
|
||||||
if (attr !== this.dattr) {
|
if (attr !== this.dattr) {
|
||||||
out += '\x1b[m';
|
out += '\x1b[m';
|
||||||
@ -315,7 +343,8 @@ Screen.prototype.draw = function(start, end) {
|
|||||||
|
|
||||||
//this.program.move(y + 1, 1);
|
//this.program.move(y + 1, 1);
|
||||||
//this.program.write(out);
|
//this.program.write(out);
|
||||||
this.program.write('\x1b[' + (y + 1) + ';1H' + out);
|
if (out) this.program.write('\x1b[' + (y + 1) + ';1H' + out);
|
||||||
|
//if (out) this.program.write(lx !== -1 ? out : '\x1b[' + (y + 1) + ';1H' + out);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.program.restoreCursor();
|
this.program.restoreCursor();
|
||||||
@ -651,7 +680,6 @@ Box.prototype.render = function() {
|
|||||||
// lines[yi][xi][0] = attr;
|
// lines[yi][xi][0] = attr;
|
||||||
// lines[yi][xi][1] = ch;
|
// lines[yi][xi][1] = ch;
|
||||||
// lines[yi].dirty = true;
|
// lines[yi].dirty = true;
|
||||||
// //lines[yi][xi].dirty = true;
|
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
@ -660,7 +688,6 @@ Box.prototype.render = function() {
|
|||||||
lines[yi][xi][0] = attr;
|
lines[yi][xi][0] = attr;
|
||||||
lines[yi][xi][1] = ch;
|
lines[yi][xi][1] = ch;
|
||||||
lines[yi].dirty = true;
|
lines[yi].dirty = true;
|
||||||
//lines[yi][xi].dirty = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -764,7 +791,6 @@ Text.prototype.render = function() {
|
|||||||
// lines[yi][xi][0] = attr;
|
// lines[yi][xi][0] = attr;
|
||||||
// lines[yi][xi][1] = ch;
|
// lines[yi][xi][1] = ch;
|
||||||
// lines[yi].dirty = true;
|
// lines[yi].dirty = true;
|
||||||
// //lines[yi][xi].dirty = true;
|
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
@ -773,7 +799,6 @@ Text.prototype.render = function() {
|
|||||||
lines[yi][xi][0] = attr;
|
lines[yi][xi][0] = attr;
|
||||||
lines[yi][xi][1] = ch;
|
lines[yi][xi][1] = ch;
|
||||||
lines[yi].dirty = true;
|
lines[yi].dirty = true;
|
||||||
//lines[yi][xi].dirty = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1086,7 +1111,6 @@ ProgressBar.prototype.render = function() {
|
|||||||
lines[y][x][0] = attr;
|
lines[y][x][0] = attr;
|
||||||
lines[y][x][1] = ch;
|
lines[y][x][1] = ch;
|
||||||
lines[y].dirty = true;
|
lines[y].dirty = true;
|
||||||
//lines[y][x].dirty = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user