Struct cursive::view::ScrollBase
[−]
[src]
pub struct ScrollBase { pub start_line: usize, pub content_height: usize, pub view_height: usize, }
Provide scrolling functionalities to a view.
Fields
start_line: usize
content_height: usize
view_height: usize
Methods
impl ScrollBase
[src]
fn new() -> Self
fn set_heights(&mut self, view_height: usize, content_height: usize)
Call this method whem the content or the view changes.
fn scrollable(&self) -> bool
Returns TRUE
if the view needs to scroll.
fn can_scroll_up(&self) -> bool
Returns TRUE
unless we are at the top.
fn can_scroll_down(&self) -> bool
Returns TRUE
unless we are at the bottom.
fn scroll_top(&mut self)
Scroll to the top of the view.
fn scroll_to(&mut self, y: usize)
Makes sure that the given line is visible, scrolling if needed.
fn scroll_bottom(&mut self)
Scroll to the bottom of the view.
fn scroll_down(&mut self, n: usize)
Scroll down by the given number of line, never going further than the bottom of the view.
fn scroll_up(&mut self, n: usize)
Scroll up by the given number of lines, never going above the top of the view.
fn draw<F>(&self, printer: &Printer, line_drawer: F) where F: Fn(&Printer, usize)
Draws the scroll bar and the content using the given drawer.
line_drawer
will be called once for each line that needs to be drawn.
It will be given the absolute ID of the item to draw..
It will also be given a printer with the correct offset,
so it should only print on the first line.
Examples
let lines = ["Line 1", "Line number 2"]; scrollbase.draw(printer, |printer, i| { printer.print((0,0), lines[i]); });