… | |
… | |
126 | width = ncol; |
126 | width = ncol; |
127 | } |
127 | } |
128 | |
128 | |
129 | l.touch (); |
129 | l.touch (); |
130 | |
130 | |
131 | efs &= ~RS_baseattrMask; |
131 | efs &= ~RS_baseattrMask; // remove italic etc. fontstyles |
132 | efs = SET_FONT (efs, FONTSET (efs)->find_font (' ')); |
132 | efs = SET_FONT (efs, FONTSET (efs)->find_font (' ')); |
133 | |
133 | |
134 | text_t *et = l.t + col; |
134 | text_t *et = l.t + col; |
135 | rend_t *er = l.r + col; |
135 | rend_t *er = l.r + col; |
136 | |
136 | |
… | |
… | |
641 | } |
641 | } |
642 | |
642 | |
643 | // erase newly scrolled-in lines |
643 | // erase newly scrolled-in lines |
644 | for (int i = count; i--; ) |
644 | for (int i = count; i--; ) |
645 | { |
645 | { |
646 | // basically this is a slightly optimized scr_blank_screen_mem |
|
|
647 | // it is worth the effort on slower machines |
|
|
648 | line_t &l = ROW(nrow - 1 - i); |
646 | line_t &l = ROW(nrow - 1 - i); |
649 | |
647 | |
|
|
648 | // optimize if already cleared, can be significant on slow machines |
|
|
649 | // could be rolled into scr_blank_screen_mem |
|
|
650 | if (l.r && l.l < ncol - 1 && !((l.r[l.l + 1] ^ rstyle) & RS_bgMask)) |
|
|
651 | { |
650 | scr_blank_line (l, 0, l.l, rstyle); |
652 | scr_blank_line (l, 0, l.l, rstyle); |
651 | |
|
|
652 | l.l = 0; |
653 | l.l = 0; |
653 | l.f = 0; |
654 | l.f = 0; |
|
|
655 | } |
|
|
656 | else |
|
|
657 | scr_blank_screen_mem (l, rstyle); |
654 | } |
658 | } |
655 | |
659 | |
656 | // now copy lines below the scroll region bottom to the |
660 | // now copy lines below the scroll region bottom to the |
657 | // bottom of the screen again, so they look as if they |
661 | // bottom of the screen again, so they look as if they |
658 | // hadn't moved. |
662 | // hadn't moved. |
… | |
… | |
1750 | { |
1754 | { |
1751 | bool found = false; |
1755 | bool found = false; |
1752 | |
1756 | |
1753 | for (int i = 0; i < nrow; i++) |
1757 | for (int i = 0; i < nrow; i++) |
1754 | { |
1758 | { |
1755 | int col = 0; |
|
|
1756 | rend_t *drp = drawn_buf[i].r; |
1759 | rend_t *drp = drawn_buf[i].r; |
1757 | |
1760 | |
1758 | for (; col < ncol; col++, drp++) |
1761 | for (int col = 0; col < ncol; col++, drp++) |
1759 | if ((*drp & mask) == value) |
1762 | if ((*drp & mask) == value) |
1760 | { |
1763 | { |
1761 | found = true; |
1764 | found = true; |
1762 | *drp = ~value; |
1765 | *drp = ~value; |
1763 | } |
1766 | } |
… | |
… | |
2254 | && RS_SAME (rend, srp[text - stp - 1])) |
2257 | && RS_SAME (rend, srp[text - stp - 1])) |
2255 | text--, count++, xpixel -= fwidth; |
2258 | text--, count++, xpixel -= fwidth; |
2256 | |
2259 | |
2257 | // force redraw after "careful" characters to avoid pixel droppings |
2260 | // force redraw after "careful" characters to avoid pixel droppings |
2258 | for (int i = 0; srp[col + i] & RS_Careful && col + i < ncol - 1; i++) |
2261 | for (int i = 0; srp[col + i] & RS_Careful && col + i < ncol - 1; i++) |
2259 | drp[col + i + 1] = ~srp[col + i + 1]; |
2262 | drp[col + i + 1] = srp[col + i + 1] ^ RS_redraw; |
2260 | |
2263 | |
2261 | // force redraw before "careful" characters to avoid pixel droppings |
2264 | // force redraw before "careful" characters to avoid pixel droppings |
2262 | for (int i = 0; srp[text - stp - i] & RS_Careful && text - i > stp; i++) |
2265 | for (int i = 0; srp[text - stp - i] & RS_Careful && text - i > stp; i++) |
2263 | drp[text - stp - i - 1] = ~srp[text - stp - i - 1]; |
2266 | drp[text - stp - i - 1] = srp[text - stp - i - 1] ^ RS_redraw; |
2264 | #endif |
2267 | #endif |
2265 | |
2268 | |
2266 | bool invert = rend & RS_RVid; |
2269 | bool invert = rend & RS_RVid; |
2267 | |
2270 | |
2268 | #ifndef NO_BOLD_UNDERLINE_REVERSE |
2271 | #ifndef NO_BOLD_UNDERLINE_REVERSE |