pub use crate::{
BrailleGrid, Color, DotmaxError, Result, TerminalBackend, TerminalCapabilities,
TerminalRenderer,
};
pub use crate::primitives::{
draw_circle, draw_circle_colored, draw_line, draw_line_colored, draw_polygon,
draw_polygon_colored, draw_rectangle, draw_rectangle_colored,
};
pub use crate::{
AnimationLoop, AnimationLoopBuilder, DifferentialRenderer, FrameBuffer, FrameTimer,
PrerenderedAnimation,
};
pub use crate::{
apply_color_scheme, apply_colors_to_grid, blue_purple, cyan_magenta, detect_color_capability,
grayscale, green_yellow, heat_map, monochrome, rainbow, ColorCapability, ColorScheme,
ColorSchemeBuilder,
};
#[cfg(feature = "image")]
pub use crate::image::{DitheringMethod, ImageRenderer};
pub use crate::quick::{grid, grid_sized, show};
#[cfg(feature = "image")]
pub use crate::quick::{load_file, load_image, load_image_sized, show_file, show_image};
#[cfg(feature = "image")]
pub use crate::media::{MediaContent, MediaPlayer};
#[cfg(feature = "video")]
pub use crate::media::{list_webcams, WebcamDevice, WebcamDeviceId, WebcamPlayer, WebcamPlayerBuilder};
#[cfg(feature = "video")]
pub use crate::quick::{show_webcam, show_webcam_device};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_core_types_accessible() {
let grid = BrailleGrid::new(10, 5).unwrap();
assert_eq!(grid.width(), 10);
let color = Color::rgb(255, 128, 0);
assert_eq!(color.r, 255);
fn returns_result() -> Result<()> {
Ok(())
}
returns_result().unwrap();
}
#[test]
fn test_primitives_accessible() {
let mut grid = BrailleGrid::new(20, 10).unwrap();
draw_line(&mut grid, 0, 0, 10, 10).unwrap();
draw_circle(&mut grid, 20, 20, 5).unwrap();
draw_rectangle(&mut grid, 0, 0, 10, 10).unwrap();
draw_polygon(&mut grid, &[(0, 0), (10, 0), (5, 10)]).unwrap();
let color = Color::rgb(255, 0, 0);
draw_line_colored(&mut grid, 0, 0, 5, 5, color, None).unwrap();
draw_circle_colored(&mut grid, 15, 15, 3, color, false).unwrap();
draw_rectangle_colored(&mut grid, 5, 5, 10, 10, color, false).unwrap();
draw_polygon_colored(&mut grid, &[(0, 0), (5, 0), (2, 5)], color, true).unwrap();
}
#[test]
fn test_animation_types_accessible() {
let fb = FrameBuffer::new(10, 5);
assert_eq!(fb.width(), 10);
let timer = FrameTimer::new(30);
assert_eq!(timer.target_fps(), 30);
let _builder = AnimationLoop::new(80, 24).fps(60);
let _diff = DifferentialRenderer::new();
let mut prerendered = PrerenderedAnimation::new(30);
prerendered.add_frame(BrailleGrid::new(10, 5).unwrap());
assert_eq!(prerendered.frame_rate(), 30);
}
#[test]
fn test_color_types_accessible() {
let _cap = ColorCapability::TrueColor;
let _detected = detect_color_capability();
let _scheme1 = heat_map();
let _scheme2 = rainbow();
let _scheme3 = grayscale();
let _scheme4 = monochrome();
let _scheme5 = blue_purple();
let _scheme6 = cyan_magenta();
let _scheme7 = green_yellow();
let _builder = ColorSchemeBuilder::new("test");
}
#[test]
#[cfg(feature = "image")]
fn test_image_types_accessible() {
let _renderer = ImageRenderer::new();
let _method = DitheringMethod::FloydSteinberg;
}
#[test]
#[cfg(feature = "image")]
fn test_media_types_accessible() {
fn _pattern_match_media_content(content: MediaContent) {
match content {
MediaContent::Static(_grid) => {}
MediaContent::Animated(_player) => {}
}
}
fn _accepts_media_player<T: MediaPlayer>(_player: T) {}
let _show_file_fn: fn(&str) -> crate::Result<()> =
|path| show_file(path);
let _load_file_fn: fn(&str) -> crate::Result<MediaContent> =
|path| load_file(path);
}
#[test]
#[cfg(feature = "video")]
fn test_webcam_types_accessible() {
let device = WebcamDevice::new("/dev/video0", "Test Camera", "Test description");
assert_eq!(device.id, "/dev/video0");
let _id1: WebcamDeviceId = 0.into();
let _id2: WebcamDeviceId = "/dev/video0".into();
let _id3 = WebcamDeviceId::Default;
let _devices: Vec<WebcamDevice> = list_webcams();
let _builder = WebcamPlayerBuilder::new()
.device(0)
.resolution(1280, 720)
.fps(30);
let _show_fn: fn() -> crate::Result<()> = show_webcam;
let _show_device_fn: fn(usize) -> crate::Result<()> =
|idx| show_webcam_device(idx);
}
#[test]
fn test_no_naming_conflicts() {
let mut grid = BrailleGrid::new(20, 10).unwrap();
let color = Color::rgb(128, 128, 128);
let scheme = grayscale();
let _cap = detect_color_capability();
draw_line(&mut grid, 0, 0, 10, 10).unwrap();
draw_line_colored(&mut grid, 5, 5, 15, 15, color, None).unwrap();
let fb = FrameBuffer::new(20, 10);
let _timer = FrameTimer::new(30);
fn _use_result_alias() -> Result<()> {
Ok(())
}
let _sampled_color = scheme.sample(0.5);
assert_eq!(fb.width(), 20);
assert_eq!(fb.height(), 10);
}
}