mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-22 10:40:00 +08:00
Fix automerge at border (#515)
This commit is contained in:
parent
121bd0d046
commit
55b9706cfd
@ -708,6 +708,28 @@ TEST(TableTest, RowFlexTwo) {
|
||||
screen.ToString());
|
||||
}
|
||||
|
||||
TEST(TableTest, Merge) {
|
||||
auto table = Table({
|
||||
{"a", "b", "c"},
|
||||
{"d", "e", "f"},
|
||||
{"g", "h", "i"},
|
||||
});
|
||||
table.SelectAll().Border(LIGHT);
|
||||
table.SelectColumn(1).Border(HEAVY);
|
||||
table.SelectRow(1).Border(HEAVY);
|
||||
Screen screen(7, 7);
|
||||
Render(screen, table.Render());
|
||||
EXPECT_EQ(
|
||||
"┌─┲━┱─┐\r\n"
|
||||
"│a┃b┃c│\r\n"
|
||||
"┢━╋━╋━┪\r\n"
|
||||
"┃d┃e┃f┃\r\n"
|
||||
"┡━╋━╋━┩\r\n"
|
||||
"│g┃h┃i│\r\n"
|
||||
"└─┺━┹─┘",
|
||||
screen.ToString());
|
||||
}
|
||||
|
||||
} // namespace ftxui
|
||||
|
||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||
|
@ -501,22 +501,25 @@ void Screen::Clear() {
|
||||
// clang-format off
|
||||
void Screen::ApplyShader() {
|
||||
// Merge box characters togethers.
|
||||
for (int y = 1; y < dimy_; ++y) {
|
||||
for (int x = 1; x < dimx_; ++x) {
|
||||
for (int y = 0; y < dimy_; ++y) {
|
||||
for (int x = 0; x < dimx_; ++x) {
|
||||
// Box drawing character uses exactly 3 byte.
|
||||
Pixel& cur = pixels_[y][x];
|
||||
if (!ShouldAttemptAutoMerge(cur)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Pixel& left = pixels_[y][x-1];
|
||||
Pixel& top = pixels_[y-1][x];
|
||||
|
||||
if (ShouldAttemptAutoMerge(left)) {
|
||||
UpgradeLeftRight(left.character, cur.character);
|
||||
if (x > 0) {
|
||||
Pixel& left = pixels_[y][x-1];
|
||||
if (ShouldAttemptAutoMerge(left)) {
|
||||
UpgradeLeftRight(left.character, cur.character);
|
||||
}
|
||||
}
|
||||
if (ShouldAttemptAutoMerge(top)) {
|
||||
UpgradeTopDown(top.character, cur.character);
|
||||
if (y > 0) {
|
||||
Pixel& top = pixels_[y-1][x];
|
||||
if (ShouldAttemptAutoMerge(top)) {
|
||||
UpgradeTopDown(top.character, cur.character);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user