Render from the piece table!

This commit is contained in:
josh committed 2016-07-19 22:34:11 -04:00
1 parent e52710b47c
commit 20a2786755
4 files changed
+16 -38

No files matched your search

+10 -13
View File
@@ -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
View File
@@ -32,7 +32,7 @@ protected:
std::shared_ptr<Buffer> m_buffer;
int m_line;
PieceTable::PieceDescriptor * m_start_piece;
};
#endif