[][src]Struct wrecked::RectManager

pub struct RectManager { /* fields omitted */ }

An environment to manage and display character-based graphics in-console.

Example

use std::{thread, time};
use wrecked::{RectManager, TOP};

let mut rectmanager = RectManager::new();
// rectmanager is initialized with top-level rect (id = TOP) attached...
rectmanager.set_string(TOP, 0, 0, "Hello World");

// draw the latest changes
rectmanager.draw();

// wait 5 seconds (in order to see the screen)
let five_seconds = time::Duration::from_secs(5);
let now = time::Instant::now();
thread::sleep(five_seconds);

rectmanager.kill();

Implementations

impl RectManager[src]

pub fn new() -> RectManager[src]

Instantiate a new environment

Example

use wrecked::{RectManager, TOP};
// Initialize the console; turn off echo and enable non-canonical input.
let mut rectmanager = RectManager::new();
// turn echo back on and return input to normal.
rectmanager.kill();

pub fn new_rect(&mut self, parent_id: usize) -> Result<usize, RectError>[src]

Add a new rectangle to the environment

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();

// Create a rectangle and attach it as a child to the top-level rectangle.
let first_rect_id = rectmanager.new_rect(TOP).ok().unwrap();

// Create a child of the newly created rect...
let second_rect_id = rectmanager.new_rect(first_rect_id).ok().unwrap();

rectmanager.kill();

pub fn new_orphan(&mut self) -> Result<usize, RectError>[src]

Create a new rectangle, but don't add it to the environment yet.

Example

use wrecked::RectManager;
let mut rectmanager = RectManager::new();

// Create a rectangle
let orphan_id = rectmanager.new_orphan().ok().unwrap();

assert!(!rectmanager.has_parent(orphan_id));

rectmanager.kill();

pub fn draw_rect(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Render the rectangle (and all its children) specified.

Example

// Use TOP to draw everything
use std::{thread, time};
use wrecked::{RectManager, TOP};

let mut rectmanager = RectManager::new();
let some_rect = rectmanager.new_rect(TOP).ok().unwrap();
// Adjust the rectangle so it will fit the string
rectmanager.resize(some_rect, 16, 1);
// Give it some text
rectmanager.set_string(some_rect, 0, 0, "Hello World");

// draw the latest changes, but only those of some_rect
rectmanager.draw_rect(some_rect);

// wait 5 seconds (in order to see the screen)
let five_seconds = time::Duration::from_secs(5);
let now = time::Instant::now();
thread::sleep(five_seconds);

rectmanager.kill();

pub fn draw(&mut self) -> Result<(), RectError>[src]

Render the visible portion of the rectmanager environment

Example

// Use TOP to draw everything
use std::{thread, time};
use wrecked::{RectManager, TOP};

let mut rectmanager = RectManager::new();
// rectmanager is initialized with top-level rect (id = TOP) attached...
rectmanager.set_string(TOP, 0, 0, "Hello World");

// draw the latest changes
rectmanager.draw();

// wait 5 seconds (in order to see the screen)
let five_seconds = time::Duration::from_secs(5);
let now = time::Instant::now();
thread::sleep(five_seconds);

rectmanager.kill();

pub fn get_rect_size(&self, rect_id: usize) -> Option<(usize, usize)>[src]

Get dimensions of specified rectangle, if it exists

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let rect_id = rectmanager.new_rect(TOP).ok().unwrap();
// Resizing to make sure we know the size
rectmanager.resize(rect_id, 10, 10);
assert_eq!((10, 10), rectmanager.get_rect_size(rect_id).unwrap());

pub fn resize(
    &mut self,
    rect_id: usize,
    width: usize,
    height: usize
) -> Result<(), RectError>
[src]

Resize a rectangle

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let rect_id = rectmanager.new_rect(TOP).ok().unwrap();
// Resizing to make sure we know the size
rectmanager.resize(rect_id, 10, 10);
assert_eq!((10, 10), rectmanager.get_rect_size(rect_id).unwrap());

pub fn shift_contents(
    &mut self,
    rect_id: usize,
    x_offset: isize,
    y_offset: isize
) -> Result<(), RectError>
[src]

Move all child rectangles, but not characters by the offsets specified

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let mut rect_parent = rectmanager.new_rect(TOP).ok().unwrap();
rectmanager.resize(rect_parent, 16, 5);

// Put a string at (0, 0)
rectmanager.set_string(rect_parent, 0, 0, "Hello world");
// Put a rect at (0, 1)
let rect_child = rectmanager.new_rect(rect_parent).ok().unwrap();
rectmanager.set_position(rect_child, 0, 1);
// Shift contents down one row ...
rectmanager.shift_contents(rect_parent, 0, 1);

assert_eq!(rectmanager.get_character(rect_parent, 0, 0).ok().unwrap(), 'H');
assert_eq!(rectmanager.get_relative_offset(rect_child).unwrap(), (0, 2));

rectmanager.kill();

pub fn set_position(
    &mut self,
    rect_id: usize,
    x: isize,
    y: isize
) -> Result<(), RectError>
[src]

Set relative offset of given rectangle.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let mut rect_id = rectmanager.new_rect(TOP).ok().unwrap();
rectmanager.set_position(rect_id, 4, 4);
assert_eq!(rectmanager.get_relative_offset(rect_id).unwrap(), (4, 4));

pub fn disable(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Do not draw the given rectangle or is descendents when draw() is called.

pub fn enable(&mut self, rect_id: usize) -> Result<(), RectError>[src]

If a rectangle has been disabled, enable it.

pub fn is_rect_enabled(&self, rect_id: usize) -> bool[src]

Check if a given rectangle (and therefor its children) will be considered when drawing.

pub fn clear_characters(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Remove all the text added to a rectangle.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
// Add some Characters to TOP rect
for x in 0 .. 10 {
    rectmanager.set_character(TOP, x, 0, 'X');
}
// Now delete them all ...
rectmanager.clear_characters(TOP);

rectmanager.kill();

pub fn clear_children(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Remove all children from a rectangle, deleting them.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
// Add some children to TOP rect
for _ in 0 .. 10 {
    rectmanager.new_rect(TOP).ok().unwrap();
}
// Now delete them all ...
rectmanager.clear_children(TOP);

rectmanager.kill();

pub fn clear_effects(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Remove all effects from the rectangle's text. Does not apply recursively.

pub fn detach(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Remove a rectangle from its parent without destroying it, so it can be reattached later.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
// Create a rectangle that is attached to TOP.
let rect_a = rectmanager.new_rect(TOP).ok().unwrap();
rectmanager.detach(rect_a);

assert!(!rectmanager.has_parent(rect_a));

rectmanager.kill();

pub fn attach(
    &mut self,
    rect_id: usize,
    new_parent_id: usize
) -> Result<(), RectError>
[src]

Attach one rect as a child to another.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
// Create a rectangle that is attached to TOP.
let rect_a = rectmanager.new_rect(TOP).ok().unwrap();
// Create an orphan rectangle to switch in.
let rect_b = rectmanager.new_orphan().ok().unwrap();
rectmanager.attach(rect_b, rect_a);

assert_eq!(rectmanager.get_parent_id(rect_b).unwrap(), rect_a);

rectmanager.kill();

pub fn set_string(
    &mut self,
    rect_id: usize,
    start_x: isize,
    start_y: isize,
    string: &str
) -> Result<(), RectError>
[src]

Set a string of characters starting at the specified position of the given rectangle. Wraps automatically, but will throw error on y-overflow.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_string(TOP, 0, 0, "This Some Text");
rectmanager.kill();

pub fn get_relative_offset(&self, rect_id: usize) -> Option<(isize, isize)>[src]

Get the offset relative to the parent rectangle of the given rectangle.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let mut rect_a = rectmanager.new_rect(TOP).ok().unwrap();
let mut rect_b = rectmanager.new_rect(rect_a).ok().unwrap();
// Move parent rect ...
rectmanager.set_position(rect_a, 10, 1);
// Move child rect ...
rectmanager.set_position(rect_b, 5, 2);

assert_eq!(rectmanager.get_relative_offset(rect_b).unwrap(), (5, 2));

rectmanager.kill();

pub fn get_absolute_offset(&self, rect_id: usize) -> Option<(isize, isize)>[src]

Get the offset relative to the top-level rectangle in the RectManager.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let mut rect_a = rectmanager.new_rect(TOP).ok().unwrap();
let mut rect_b = rectmanager.new_rect(rect_a).ok().unwrap();
// Move parent rect ...
rectmanager.set_position(rect_a, 5, 2);
// Move child rect ...
rectmanager.set_position(rect_b, 5, 2);

assert_eq!(rectmanager.get_absolute_offset(rect_b).unwrap(), (10, 4));

rectmanager.kill();

pub fn get_character(
    &self,
    rect_id: usize,
    x: isize,
    y: isize
) -> Result<char, RectError>
[src]

Get the character at the given position of a rectangle. The rectangle's default character (usually ' ') is returned if no character is found.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_character(TOP, 0, 0, 'X');
assert_eq!(rectmanager.get_character(TOP, 0, 0).ok().unwrap(), 'X');
rectmanager.kill();

pub fn set_character(
    &mut self,
    rect_id: usize,
    x: isize,
    y: isize,
    character: char
) -> Result<(), RectError>
[src]

Set the character at the given position of a rectangle.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_character(TOP, 0, 0, 'X');
assert_eq!(rectmanager.get_character(TOP, 0, 0).ok().unwrap(), 'X');
rectmanager.kill();

pub fn unset_character(
    &mut self,
    rect_id: usize,
    x: isize,
    y: isize
) -> Result<(), RectError>
[src]

Delete a set character of a given rectangle at specified point

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_character(TOP, 0, 0, 'X');
rectmanager.unset_character(TOP, 0, 0);
assert_eq!(rectmanager.get_character(TOP, 0, 0).ok().unwrap(), rectmanager.get_default_character(TOP));
rectmanager.kill();

pub fn delete_rect(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Completely erase a rectangle & remove it from the RectManager's tree.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let mut rect = rectmanager.new_rect(TOP).ok().unwrap();

rectmanager.delete_rect(rect);
assert!(!rectmanager.has_rect(rect));

rectmanager.kill();

pub fn replace_with(
    &mut self,
    old_rect_id: usize,
    new_rect_id: usize
) -> Result<(), RectError>
[src]

Swap out one rectangle with another.

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
// Create a rectangle that is attached to TOP.
let rect_a = rectmanager.new_rect(TOP).ok().unwrap();
// Create an orphan rectangle to switch in.
let rect_b = rectmanager.new_orphan().ok().unwrap();
rectmanager.replace_with(rect_a, rect_b);

assert!(rectmanager.has_parent(rect_b));
assert!(!rectmanager.has_parent(rect_a));

pub fn get_rect_width(&mut self, rect_id: usize) -> usize[src]

Get width of given rectangle

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let mut rect = rectmanager.new_rect(TOP).ok().unwrap();
rectmanager.resize(rect, 10, 10);
assert_eq!(rectmanager.get_rect_height(rect), 10);
rectmanager.kill();

pub fn get_rect_height(&mut self, rect_id: usize) -> usize[src]

Get height of given rectangle

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
let mut rect = rectmanager.new_rect(TOP).ok().unwrap();
rectmanager.resize(rect, 10, 10);
assert_eq!(rectmanager.get_rect_height(rect), 10);
rectmanager.kill();

pub fn get_width(&mut self) -> usize[src]

Gets the width of the RectManager

pub fn get_height(&mut self) -> usize[src]

Gets the height of the RectManager

pub fn auto_resize(&mut self) -> bool[src]

If the TOP rectangle dimensions to not match up to the console dimensions, then resize to fit. Returns true if a resize was made.

pub fn set_bold_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Apply bold effect to text of given rect (does not apply recursively).

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_bold_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Some Bold Text");
rectmanager.kill();

pub fn unset_bold_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Disable bold text effect

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_bold_flag(TOP);
rectmanager.unset_bold_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Normal Text");
rectmanager.kill();

pub fn set_underline_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Apply underline effect to text of given rect (does not apply recursively).

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_underline_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Some Underlined Text");
rectmanager.kill();

pub fn unset_underline_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Disable underline text effect

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_underline_flag(TOP);
rectmanager.unset_underline_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Normal Text");
rectmanager.kill();

pub fn set_invert_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Invert the background and foreground colors of the text of the given rect (does not apply recursively).

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_invert_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Some Inverted Text");
rectmanager.kill();

pub fn unset_invert_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Disable invert text effect

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_invert_flag(TOP);
rectmanager.unset_invert_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Normal Text");
rectmanager.kill();

pub fn set_italics_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Apply italics effect to text of given rect (does not apply recursively).

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_italics_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Some Italicized Text");
rectmanager.kill();

pub fn unset_italics_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Disable italics text effect

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_italics_flag(TOP);
rectmanager.unset_italics_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Normal Text");
rectmanager.kill();

pub fn set_strike_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Apply strike effect to text of given rect (does not apply recursively).

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_strike_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Some Text With Strikethrough");
rectmanager.kill();

pub fn unset_strike_flag(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Disable strike text effect

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_strike_flag(TOP);
rectmanager.unset_strike_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Normal Text");
rectmanager.kill();

Apply blink effect to text of given rect (does not apply recursively).

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_blink_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Some Blinking Text");
rectmanager.kill();

Disable blink text effect

Example

use wrecked::{RectManager, TOP};
let mut rectmanager = RectManager::new();
rectmanager.set_blink_flag(TOP);
rectmanager.unset_blink_flag(TOP);
rectmanager.set_string(TOP, 0, 0, "Normal Text");
rectmanager.kill();

pub fn set_bg_color(
    &mut self,
    rect_id: usize,
    color: RectColor
) -> Result<(), RectError>
[src]

Set color of background of given rect (does not apply recursively)

Example

use wrecked::{RectManager, TOP, RectColor};
let mut rectmanager = RectManager::new();
// Give Top a Green background
rectmanager.set_fg_color(TOP, RectColor::GREEN);

rectmanager.kill();

pub fn unset_bg_color(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Return background color to default

Example

use wrecked::{RectManager, TOP, RectColor};
let mut rectmanager = RectManager::new();
// Give Top a Magenta background
rectmanager.set_bg_color(TOP, RectColor::MAGENTA);

// Remove those colors...
rectmanager.unset_bg_color(TOP);

rectmanager.kill();

pub fn set_fg_color(
    &mut self,
    rect_id: usize,
    color: RectColor
) -> Result<(), RectError>
[src]

Set color of foreground (text) of given rect (does not apply recursively)

Example

use wrecked::{RectManager, TOP, RectColor};
let mut rectmanager = RectManager::new();
// Give Top a YELLOW foreground
rectmanager.set_fg_color(TOP, RectColor::YELLOW);

rectmanager.kill();

pub fn unset_fg_color(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Return foreground color to default

Example

use wrecked::{RectManager, TOP, RectColor};
let mut rectmanager = RectManager::new();
// Give Top a White foreground
rectmanager.set_fg_color(TOP, RectColor::WHITE);

// Remove those colors...
rectmanager.unset_fg_color(TOP);

rectmanager.kill();

pub fn unset_color(&mut self, rect_id: usize) -> Result<(), RectError>[src]

Return both background and foreground colors to default

Example

use wrecked::{RectManager, TOP, RectColor};
let mut rectmanager = RectManager::new();
// Give Top a Blue background and a White foreground
rectmanager.set_bg_color(TOP, RectColor::BLUE);
rectmanager.set_fg_color(TOP, RectColor::WHITE);

// Remove those colors...
rectmanager.unset_color(TOP);

rectmanager.kill();

pub fn kill(&mut self) -> Result<(), RectError>[src]

Return console state to normal

Example

use wrecked::RectManager;
// Initialize the console; turn off echo and enable non-canonical input.
let mut rectmanager = RectManager::new();
// turn echo back on and return input to normal.
rectmanager.kill();

pub fn get_default_character(&self, rect_id: usize) -> char[src]

Get the fallback character that would be displayed where no character is set. Defaults to ' '.

pub fn get_parent_id(&self, rect_id: usize) -> Option<usize>[src]

pub fn has_parent(&self, rect_id: usize) -> bool[src]

pub fn has_rect(&self, rect_id: usize) -> bool[src]

pub fn is_transparent(&self, rect_id: usize) -> bool[src]

pub fn set_transparency(
    &mut self,
    rect_id: usize,
    transparent: bool
) -> Result<(), RectError>
[src]

Auto Trait Implementations

Blanket Implementations

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

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

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

impl<T> From<T> for T[src]

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

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.