[][src]Struct cursive::Printer

pub struct Printer<'a, 'b> {
    pub offset: Vec2,
    pub output_size: Vec2,
    pub size: Vec2,
    pub content_offset: Vec2,
    pub focused: bool,
    pub enabled: bool,
    pub theme: &'a Theme,
    // some fields omitted
}

Convenient interface to draw on a subset of the screen.

The area it can print on is defined by offset and size.

The part of the content it will print is defined by content_offset and size.

Fields

offset: Vec2

Offset into the window this printer should start drawing at.

A print request at x will really print at x + offset.

output_size: Vec2

Size of the area we are allowed to draw on.

Anything outside of this should be discarded.

The view being drawn can ingore this, but anything further than that will be ignored.

size: Vec2

Size allocated to the view.

This should be the same value as the one given in the last call to View::layout.

content_offset: Vec2

Offset into the view for this printer.

The view being drawn can ignore this, but anything to the top-left of this will actually be ignored, so it can be used to skip this part.

A print request x, will really print at x - content_offset.

focused: bool

Whether the view to draw is currently focused or not.

enabled: bool

Whether the view to draw is currently enabled or not.

theme: &'a Theme

Currently used theme

Methods

impl<'a, 'b> Printer<'a, 'b>[src]

pub fn clear(&self)[src]

Clear the screen.

It will discard anything drawn before.

Users rarely need to call this directly.

pub fn print_styled<S>(&self, start: S, text: SpannedStr<Style>) where
    S: Into<Vec2>, 
[src]

Prints some styled text at the given position.

pub fn print<S: Into<Vec2>>(&self, start: S, text: &str)[src]

Prints some text at the given position

pub fn print_vline<T: Into<Vec2>>(&self, start: T, height: usize, c: &str)[src]

Prints a vertical line using the given character.

pub fn print_line<T: Into<Vec2>>(
    &self,
    orientation: Orientation,
    start: T,
    length: usize,
    c: &str
)
[src]

Prints a line using the given character.

pub fn print_hline<T: Into<Vec2>>(&self, start: T, width: usize, c: &str)[src]

Prints a horizontal line using the given character.

pub fn with_color<F>(&self, c: ColorStyle, f: F) where
    F: FnOnce(&Printer), 
[src]

Call the given closure with a colored printer, that will apply the given color on prints.

Examples

printer.with_color(theme::ColorStyle::highlight(), |printer| {
    printer.print((0,0), "This text is highlighted!");
});

pub fn with_style<F, T>(&self, style: T, f: F) where
    F: FnOnce(&Printer),
    T: Into<Style>, 
[src]

Call the given closure with a styled printer, that will apply the given style on prints.

pub fn with_effect<F>(&self, effect: Effect, f: F) where
    F: FnOnce(&Printer), 
[src]

Call the given closure with a modified printer that will apply the given effect on prints.

pub fn with_theme<F>(&self, theme: &Theme, f: F) where
    F: FnOnce(&Printer), 
[src]

Call the given closure with a modified printer that will apply the given theme on prints.

pub fn theme<'c>(&self, theme: &'c Theme) -> Printer<'c, 'b> where
    'a: 'c, 
[src]

Create a new sub-printer with the given theme.

pub fn with_effects<F>(&self, effects: EnumSet<Effect>, f: F) where
    F: FnOnce(&Printer), 
[src]

Call the given closure with a modified printer that will apply each given effect on prints.

pub fn print_box<T: Into<Vec2>, S: Into<Vec2>>(
    &self,
    start: T,
    size: S,
    invert: bool
)
[src]

Prints a rectangular box.

If invert is true, and the theme uses Outset borders, then the box will use an "inset" style instead.

Examples

printer.print_box((0,0), (6,4), false);

pub fn with_high_border<F>(&self, invert: bool, f: F) where
    F: FnOnce(&Printer), 
[src]

Runs the given function using a color depending on the theme.

  • If the theme's borders is None, return without calling f.
  • If the theme's borders is "outset" and invert is false, use ColorStyle::Tertiary.
  • Otherwise, use ColorStyle::Primary.

pub fn with_low_border<F>(&self, invert: bool, f: F) where
    F: FnOnce(&Printer), 
[src]

Runs the given function using a color depending on the theme.

  • If the theme's borders is None, return without calling f.
  • If the theme's borders is "outset" and invert is true, use ColorStyle::tertiary().
  • Otherwise, use ColorStyle::primary().

pub fn with_selection<F: FnOnce(&Printer)>(&self, selection: bool, f: F)[src]

Apply a selection style and call the given function.

  • If selection is false, simply uses ColorStyle::primary().
  • If selection is true:
    • If the printer currently has the focus, uses ColorStyle::highlight().
    • Otherwise, uses ColorStyle::highlight_inactive().

pub fn print_hdelim<T>(&self, start: T, len: usize) where
    T: Into<Vec2>, 
[src]

Prints a horizontal delimiter with side border and .

pub fn offset<S>(&self, offset: S) -> Self where
    S: Into<Vec2>, 
[src]

Returns a sub-printer with the given offset.

It will print in an area slightly to the bottom/right.

pub fn focused(&self, focused: bool) -> Self[src]

Returns a new sub-printer inheriting the given focus.

If self is focused and focused == true, the child will be focused.

Otherwise, he will be unfocused.

pub fn enabled(&self, enabled: bool) -> Self[src]

Returns a new sub-printer inheriting the given enabled state.

If self is enabled and enabled == true, the child will be enabled.

Otherwise, he will be disabled.

pub fn cropped<S>(&self, size: S) -> Self where
    S: Into<Vec2>, 
[src]

Returns a new sub-printer with a cropped area.

The new printer size will be the minimum of size and its current size.

Any size reduction happens at the bottom-right.

pub fn cropped_centered<S>(&self, size: S) -> Self where
    S: Into<Vec2>, 
[src]

Returns a new sub-printer with a cropped area.

The new printer size will be the minimum of size and its current size.

The view will stay centered.

Note that if shrinking by an odd number, the view will round to the top-left.

pub fn shrinked<S>(&self, borders: S) -> Self where
    S: Into<Vec2>, 
[src]

Returns a new sub-printer with a shrinked area.

The printer size will be reduced by the given border from the bottom-right.

pub fn shrinked_centered<S>(&self, borders: S) -> Self where
    S: Into<Vec2>, 
[src]

Returns a new sub-printer with a shrinked area.

The printer size will be reduced by the given border, and will stay centered.

Note that if shrinking by an odd number, the view will round to the top-left.

pub fn content_offset<S>(&self, offset: S) -> Self where
    S: Into<Vec2>, 
[src]

Returns a new sub-printer with a content offset.

pub fn inner_size<S>(&self, size: S) -> Self where
    S: Into<Vec2>, 
[src]

Returns a sub-printer with a different inner size.

This will not change the actual output size, but will appear bigger to users of this printer.

Useful to give to children who think they're big, but really aren't.

Trait Implementations

impl<'a, 'b> Clone for Printer<'a, 'b>[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

Auto Trait Implementations

impl<'a, 'b> !Send for Printer<'a, 'b>

impl<'a, 'b> !Sync for Printer<'a, 'b>

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Erased for T[src]