Add a display coord to buffer coord method to Window

This commit is contained in:
Maxime Coste 2015-03-18 23:40:26 +00:00
parent d3738b858b
commit 3e28539b81
2 changed files with 10 additions and 2 deletions

View File

@ -234,7 +234,7 @@ ByteCoord find_buffer_coord(const DisplayLine& line, const Buffer& buffer,
} }
} }
CharCoord Window::display_position(ByteCoord coord) CharCoord Window::display_position(ByteCoord coord) const
{ {
LineCount l = 0; LineCount l = 0;
for (auto& line : m_display_buffer.lines()) for (auto& line : m_display_buffer.lines())
@ -247,6 +247,13 @@ CharCoord Window::display_position(ByteCoord coord)
return { 0, 0 }; return { 0, 0 };
} }
ByteCoord Window::buffer_coord(CharCoord coord) const
{
if (0_line <= coord.line and coord.line < m_display_buffer.lines().size())
return find_buffer_coord(m_display_buffer.lines()[(int)coord.line], buffer(), coord.column);
return { 0, 0 };
}
ByteCoord Window::offset_coord(ByteCoord coord, CharCount offset) ByteCoord Window::offset_coord(ByteCoord coord, CharCount offset)
{ {
return buffer().offset_coord(coord, offset); return buffer().offset_coord(coord, offset);

View File

@ -31,7 +31,8 @@ public:
void scroll(CharCount offset); void scroll(CharCount offset);
void update_display_buffer(const Context& context); void update_display_buffer(const Context& context);
CharCoord display_position(ByteCoord coord); CharCoord display_position(ByteCoord coord) const;
ByteCoord buffer_coord(CharCoord coord) const;
Highlighter& highlighters() { return m_highlighters; } Highlighter& highlighters() { return m_highlighters; }