more work on BufferView
This commit is contained in:
parent
e243dd654c
commit
65df0c2320
@ -9,6 +9,8 @@ BufferView::BufferView(std::shared_ptr<Buffer> buffer,
|
|||||||
{
|
{
|
||||||
m_width = 1;
|
m_width = 1;
|
||||||
m_height = 1;
|
m_height = 1;
|
||||||
|
m_scroll_offset = 0;
|
||||||
|
m_cursor_screen_row = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferView::resize(int width, int height)
|
void BufferView::resize(int width, int height)
|
||||||
@ -17,6 +19,11 @@ void BufferView::resize(int width, int height)
|
|||||||
m_height = std::max(1, height);
|
m_height = std::max(1, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BufferView::set_scroll_offset(int scroll_offset)
|
||||||
|
{
|
||||||
|
m_scroll_offset = std::max(0, scroll_offset);
|
||||||
|
}
|
||||||
|
|
||||||
void BufferView::iter_cols(const Buffer::Iterator & start_of_line, std::function<void(int, int, int, int, const Buffer::Iterator &)> callback)
|
void BufferView::iter_cols(const Buffer::Iterator & start_of_line, std::function<void(int, int, int, int, const Buffer::Iterator &)> callback)
|
||||||
{
|
{
|
||||||
int row_offset = 0;
|
int row_offset = 0;
|
||||||
|
@ -16,6 +16,8 @@ public:
|
|||||||
std::shared_ptr<Buffer::Iterator> iterator,
|
std::shared_ptr<Buffer::Iterator> iterator,
|
||||||
CharacterWidthDeterminer & character_width_determiner);
|
CharacterWidthDeterminer & character_width_determiner);
|
||||||
void resize(int width, int height);
|
void resize(int width, int height);
|
||||||
|
void set_scroll_offset(int scroll_offset);
|
||||||
|
void iter_lines(std::function<bool(const Buffer::Iterator &)> callback);
|
||||||
void iter_cols(const Buffer::Iterator & start_of_line, std::function<void(int, int, int, int, const Buffer::Iterator &)> callback);
|
void iter_cols(const Buffer::Iterator & start_of_line, std::function<void(int, int, int, int, const Buffer::Iterator &)> callback);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -24,6 +26,13 @@ protected:
|
|||||||
CharacterWidthDeterminer & m_character_width_determiner;
|
CharacterWidthDeterminer & m_character_width_determiner;
|
||||||
int m_width;
|
int m_width;
|
||||||
int m_height;
|
int m_height;
|
||||||
|
int m_scroll_offset;
|
||||||
|
int m_cursor_screen_row;
|
||||||
|
|
||||||
|
int effective_scroll_offset()
|
||||||
|
{
|
||||||
|
return std::min(m_scroll_offset, (m_height - 1) / 2);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user