diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-07-12 23:51:13 +0200 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-07-12 23:51:13 +0200 |
| commit | 03d8efc249a74bc6f4a34215246fa1c55a1e1601 (patch) | |
| tree | 2a3d67f4f6751adbaa613cfd35e4f85c7aac2cd9 /src/display_buffer.cc | |
| parent | b1a087485c0fdaf260d3c2aa3724f010c5c377f5 (diff) | |
DisplayBuffer: add range and compute_range methods
Diffstat (limited to 'src/display_buffer.cc')
| -rw-r--r-- | src/display_buffer.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/display_buffer.cc b/src/display_buffer.cc index 4b4847cb..5b8aaff3 100644 --- a/src/display_buffer.cc +++ b/src/display_buffer.cc @@ -17,4 +17,26 @@ DisplayLine::iterator DisplayLine::split(iterator it, BufferIterator pos) return m_atoms.insert(it, std::move(atom)); } +void DisplayBuffer::compute_range() +{ + m_range.first = BufferIterator(); + m_range.second = BufferIterator(); + for (auto& line : m_lines) + { + for (auto& atom : line) + { + if (not atom.content.has_buffer_range()) + continue; + + if (not m_range.first.is_valid() or m_range.first > atom.content.begin()) + m_range.first = atom.content.begin(); + + if (not m_range.second.is_valid() or m_range.second < atom.content.end()) + m_range.second = atom.content.end(); + } + } + assert(m_range.first.is_valid() and m_range.second.is_valid()); + assert(m_range.first <= m_range.second); +} + } |
