start on gap buffer drawing

This commit is contained in:
Josh Holtrop 2016-11-09 23:08:33 -05:00
parent b4ae0d5377
commit 1e2aae4136
2 changed files with 25 additions and 0 deletions

View File

@ -378,6 +378,30 @@ void Window::update_cursor_row()
void Window::draw_buffer()
{
update_cursor_row();
int screen_row = m_cursor_row - m_cursor->column() / m_columns;
GapBuffer::Cursor draw_cursor = *m_cursor;
draw_cursor.go_start_of_line();
while ((screen_row > 0) && draw_cursor.go_up(0u))
{
GapBuffer::Cursor cursor2 = draw_cursor;
cursor2.go_end_of_line(false);
screen_row -= (1 + cursor2.column() / m_columns);
}
while (screen_row < m_rows)
{
draw_buffer_line(screen_row, draw_cursor);
draw_cursor.go_end_of_line(false);
screen_row += (1 + draw_cursor.column() / m_columns);
if (!draw_cursor.go_down(0u))
{
break;
}
}
}
void Window::draw_buffer_line(int screen_row, const GapBuffer::Cursor & cursor)
{
/* TODO */
}
void Window::draw_buffer_character(int screen_column, int screen_row, uint32_t character)

View File

@ -45,6 +45,7 @@ protected:
void handle_keyval(uint32_t keyval);
void cursor_move(int which);
void draw_buffer();
void draw_buffer_line(int screen_row, const GapBuffer::Cursor & cursor);
void draw_buffer_character(int screen_column, int screen_row, uint32_t character);
void draw_character(int x, int y, uint32_t character);
void update_cursor_row();