summaryrefslogtreecommitdiff
path: root/src/display_buffer.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-07-12 23:51:13 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-07-12 23:51:13 +0200
commit03d8efc249a74bc6f4a34215246fa1c55a1e1601 (patch)
tree2a3d67f4f6751adbaa613cfd35e4f85c7aac2cd9 /src/display_buffer.cc
parentb1a087485c0fdaf260d3c2aa3724f010c5c377f5 (diff)
DisplayBuffer: add range and compute_range methods
Diffstat (limited to 'src/display_buffer.cc')
-rw-r--r--src/display_buffer.cc22
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);
+}
+
}