Render from the piece table!
This commit is contained in:
1 parent
e52710b47c
commit
20a2786755
4 files changed
+16
-38
No files matched your search
+10
-13
@@ -113,7 +113,7 @@ bool Window::create(std::shared_ptr<Buffer> buffer)
|
||||
m_programs.text->set_color(1.0, 1.0, 1.0, 1.0);
|
||||
|
||||
m_buffer = buffer;
|
||||
m_line = 0;
|
||||
m_start_piece = m_buffer->piece_table->start_descriptor->next;
|
||||
|
||||
resize();
|
||||
|
||||
@@ -223,18 +223,18 @@ void Window::handle_event(SDL_Event & event)
|
||||
|
||||
void Window::scroll_down()
|
||||
{
|
||||
if (m_line < m_buffer->get_num_lines() - 1)
|
||||
if (m_start_piece->next != m_buffer->piece_table->end_descriptor)
|
||||
{
|
||||
m_line++;
|
||||
m_start_piece = m_start_piece->next;
|
||||
redraw();
|
||||
}
|
||||
}
|
||||
|
||||
void Window::scroll_up()
|
||||
{
|
||||
if (m_line > 0)
|
||||
if (m_start_piece->prev != m_buffer->piece_table->start_descriptor)
|
||||
{
|
||||
m_line--;
|
||||
m_start_piece = m_start_piece->prev;
|
||||
redraw();
|
||||
}
|
||||
}
|
||||
@@ -257,17 +257,14 @@ void Window::redraw()
|
||||
int advance = m_font.get_advance();
|
||||
int line_height = m_font.get_line_height();
|
||||
int y = m_height - line_height;
|
||||
int line_number = 0;
|
||||
for (auto line = m_buffer->cbegin(); line != m_buffer->cend(); line++)
|
||||
for (PieceTable::PieceDescriptor * pd = m_start_piece;
|
||||
pd != m_buffer->piece_table->end_descriptor;
|
||||
pd = pd->next)
|
||||
{
|
||||
if (line_number++ < m_line)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
int x = 0;
|
||||
for (int i = 0, len = (*line)->size(); i < len; i++)
|
||||
for (int i = 0, len = pd->length; i < len; i++)
|
||||
{
|
||||
uint8_t c = (**line)[i];
|
||||
uint8_t c = pd->start[i];
|
||||
auto g = m_font.get_glyph(c);
|
||||
m_programs.text->set_position(x, y);
|
||||
g->render();
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ protected:
|
||||
|
||||
std::shared_ptr<Buffer> m_buffer;
|
||||
|
||||
int m_line;
|
||||
PieceTable::PieceDescriptor * m_start_piece;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user