… | |
… | |
734 | } |
734 | } |
735 | |
735 | |
736 | // use a simple and robust scrolling algorithm, this |
736 | // use a simple and robust scrolling algorithm, this |
737 | // part of scr_scroll_text is not time-critical. |
737 | // part of scr_scroll_text is not time-critical. |
738 | |
738 | |
|
|
739 | // sever line above scroll region |
|
|
740 | if (row1) |
|
|
741 | { |
|
|
742 | line_t &l = ROW(row1 - 1); |
|
|
743 | l.is_longer (0); |
|
|
744 | l.touch (); |
|
|
745 | } |
|
|
746 | |
739 | int rows = row2 - row1 + 1; |
747 | int rows = row2 - row1 + 1; |
740 | |
748 | |
741 | min_it (count, rows); |
749 | min_it (count, rows); |
742 | |
750 | |
743 | line_t *temp_buf = row_buf + total_rows; |
751 | line_t *temp_buf = row_buf + total_rows; |
… | |
… | |
750 | scr_blank_screen_mem (temp_buf [row], rstyle); |
758 | scr_blank_screen_mem (temp_buf [row], rstyle); |
751 | } |
759 | } |
752 | |
760 | |
753 | for (int row = 0; row < rows; row++) |
761 | for (int row = 0; row < rows; row++) |
754 | ROW(row1 + row) = temp_buf [row]; |
762 | ROW(row1 + row) = temp_buf [row]; |
|
|
763 | |
|
|
764 | // sever bottommost line |
|
|
765 | { |
|
|
766 | line_t &l = ROW(row2 - 1); |
|
|
767 | l.is_longer (0); |
|
|
768 | l.touch (); |
|
|
769 | } |
|
|
770 | |
755 | } |
771 | } |
756 | |
772 | |
757 | return count; |
773 | return count; |
758 | } |
774 | } |
759 | |
775 | |