different border drawing.
This commit is contained in:
parent
fccb1627a6
commit
1c6681e99d
|
@ -79,11 +79,12 @@ var score = new blessed.Box({
|
|||
top: 0,
|
||||
left: 4,
|
||||
height: 3,
|
||||
width: 26,
|
||||
//width: 26,
|
||||
border: {
|
||||
type: 'ascii'
|
||||
},
|
||||
align: 'center',
|
||||
shrink: true,
|
||||
//align: 'center',
|
||||
bold: true
|
||||
});
|
||||
|
||||
|
|
111
lib/widget.js
111
lib/widget.js
|
@ -986,7 +986,8 @@ Box.prototype.render = function(stop) {
|
|||
, xi_ = this.left
|
||||
, xi
|
||||
, xl = this.screen.cols - this.right
|
||||
, yi = this.top
|
||||
, yi_ = this.top
|
||||
, yi
|
||||
, yl = this.screen.rows - this.bottom
|
||||
, cell
|
||||
, attr
|
||||
|
@ -1003,14 +1004,14 @@ Box.prototype.render = function(stop) {
|
|||
}
|
||||
|
||||
if (this.position.height) {
|
||||
yl = yi + this.height;
|
||||
yl = yi_ + this.height;
|
||||
}
|
||||
|
||||
if (this.parent.childBase != null && ~this.parent.items.indexOf(this)) {
|
||||
var rtop = this.rtop - (this.parent.border ? 1 : 0)
|
||||
, visible = this.parent.height - (this.parent.border ? 2 : 0);
|
||||
|
||||
yi -= this.parent.childBase;
|
||||
yi_ -= this.parent.childBase;
|
||||
yl = Math.min(yl, this.screen.rows - this.parent.bottom - (this.parent.border ? 1 : 0));
|
||||
|
||||
if (rtop - this.parent.childBase < 0) {
|
||||
|
@ -1040,7 +1041,7 @@ Box.prototype.render = function(stop) {
|
|||
var ret = {
|
||||
xi: xi_,
|
||||
xl: xl,
|
||||
yi: yi,
|
||||
yi: yi_,
|
||||
yl: yl
|
||||
};
|
||||
|
||||
|
@ -1050,7 +1051,6 @@ Box.prototype.render = function(stop) {
|
|||
? sattr(this.border, this.border.fg, this.border.bg)
|
||||
: 0;
|
||||
|
||||
//if (this.escapes) dattr = this.screen.dattr;
|
||||
dattr = sattr(this, this.fg, this.bg);
|
||||
attr = dattr;
|
||||
|
||||
|
@ -1067,42 +1067,22 @@ Box.prototype.render = function(stop) {
|
|||
}
|
||||
}
|
||||
|
||||
for (; yi < yl; yi++) {
|
||||
if (this.border) yi_++, yl--, xi_++, xl--;
|
||||
|
||||
outer:
|
||||
for (yi = yi_; yi < yl; yi++) {
|
||||
if (!lines[yi]) break;
|
||||
for (xi = xi_; xi < xl; xi++) {
|
||||
cell = lines[yi][xi];
|
||||
if (!cell) break;
|
||||
|
||||
if (this.border && (yi === this.top || xi === this.left || yi === yl - 1 || xi === xl - 1)) {
|
||||
if (this.border.type === 'ascii') {
|
||||
if (yi === this.top) {
|
||||
if (xi === this.left) ch = '┌';
|
||||
else if (xi === xl - 1) ch = '┐';
|
||||
else ch = '─';
|
||||
} else if (yi === yl - 1) {
|
||||
if (xi === this.left) ch = '└';
|
||||
else if (xi === xl - 1) ch = '┘';
|
||||
else ch = '─';
|
||||
} else if (xi === this.left || xi === xl - 1) {
|
||||
ch = '│';
|
||||
}
|
||||
} else if (this.border.type === 'bg') {
|
||||
ch = this.border.ch;
|
||||
}
|
||||
if (battr !== cell[0] || ch !== cell[1]) {
|
||||
lines[yi][xi][0] = battr;
|
||||
lines[yi][xi][1] = ch;
|
||||
lines[yi].dirty = true;
|
||||
}
|
||||
continue;
|
||||
if (this.shrink && !content[ci] && yi === yi_) {
|
||||
xl = xi + 1 - 1;
|
||||
break outer;
|
||||
}
|
||||
|
||||
ch = content[ci++] || ' ';
|
||||
|
||||
if (this.shrink && !content[ci - 1]) {
|
||||
if (this.border) continue; else break;
|
||||
}
|
||||
|
||||
// Handle escape codes.
|
||||
while (ch === '\x1b') {
|
||||
if (c = /^\x1b\[(?:\d+(?:;\d+)*)?m/.exec(content.substring(ci - 1))) {
|
||||
|
@ -1117,8 +1097,7 @@ Box.prototype.render = function(stop) {
|
|||
if (ch === '\t') ch = ' ';
|
||||
if (ch === '\n' || ch === '\r') {
|
||||
ch = ' ';
|
||||
var xxl = xl - (this.border ? 1 : 0);
|
||||
for (; xi < xxl; xi++) {
|
||||
for (; xi < xl; xi++) {
|
||||
cell = lines[yi][xi];
|
||||
if (!cell) break;
|
||||
if (attr !== cell[0] || ch !== cell[1]) {
|
||||
|
@ -1127,7 +1106,6 @@ Box.prototype.render = function(stop) {
|
|||
lines[yi].dirty = true;
|
||||
}
|
||||
}
|
||||
if (this.border) xi--;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1139,6 +1117,69 @@ Box.prototype.render = function(stop) {
|
|||
}
|
||||
}
|
||||
|
||||
if (this.border) {
|
||||
yi_--, yl++, xi_--, xl++;
|
||||
yi = yi_;
|
||||
for (xi = xi_; xi < xl; xi++) {
|
||||
if (!lines[yi]) break;
|
||||
if (this.border.type === 'ascii') {
|
||||
if (xi === xi_) ch = '┌';
|
||||
else if (xi === xl - 1) ch = '┐';
|
||||
else ch = '─';
|
||||
} else if (this.border.type === 'bg') {
|
||||
ch = this.border.ch;
|
||||
}
|
||||
cell = lines[yi][xi];
|
||||
if (!cell) break;
|
||||
if (battr !== cell[0] || ch !== cell[1]) {
|
||||
lines[yi][xi][0] = battr;
|
||||
lines[yi][xi][1] = ch;
|
||||
lines[yi].dirty = true;
|
||||
}
|
||||
}
|
||||
yi = yi_ + 1;
|
||||
for (; yi < yl; yi++) {
|
||||
if (!lines[yi]) break;
|
||||
if (this.border.type === 'ascii') {
|
||||
ch = '│';
|
||||
} else if (this.border.type === 'bg') {
|
||||
ch = this.border.ch;
|
||||
}
|
||||
cell = lines[yi][xi_];
|
||||
if (!cell) break;
|
||||
if (battr !== cell[0] || ch !== cell[1]) {
|
||||
lines[yi][xi_][0] = battr;
|
||||
lines[yi][xi_][1] = ch;
|
||||
lines[yi].dirty = true;
|
||||
}
|
||||
cell = lines[yi][xl - 1];
|
||||
if (!cell) break;
|
||||
if (battr !== cell[0] || ch !== cell[1]) {
|
||||
lines[yi][xl - 1][0] = battr;
|
||||
lines[yi][xl - 1][1] = ch;
|
||||
lines[yi].dirty = true;
|
||||
}
|
||||
}
|
||||
yi = yl - 1;
|
||||
for (xi = xi_; xi < xl; xi++) {
|
||||
if (!lines[yi]) break;
|
||||
if (this.border.type === 'ascii') {
|
||||
if (xi === xi_) ch = '└';
|
||||
else if (xi === xl - 1) ch = '┘';
|
||||
else ch = '─';
|
||||
} else if (this.border.type === 'bg') {
|
||||
ch = this.border.ch;
|
||||
}
|
||||
cell = lines[yi][xi];
|
||||
if (!cell) break;
|
||||
if (battr !== cell[0] || ch !== cell[1]) {
|
||||
lines[yi][xi][0] = battr;
|
||||
lines[yi][xi][1] = ch;
|
||||
lines[yi].dirty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.children.forEach(function(el) {
|
||||
el.render();
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue