1pub mod rendering;
2pub use rendering::renderer::{ObjectId, Renderer, SpriteId};
3
4pub mod update_interval_handler;
5pub use update_interval_handler::{UpdateInterval, UpdateIntervalHandler};
6
7pub mod terminal_buffer;
8pub use terminal_buffer::{ScreenBuffer, SpriteDrawable};
9
10pub mod drawable_traits;
11pub use drawable_traits::{
12 BasicDraw, DoublePointed, Drawable, MultiPointed, ScreenFitting, SinglePointed,
13};
14
15pub mod sprite_register;
16pub use sprite_register::{SpriteEntry, SpriteRegistry};
17
18pub mod term_utils;
19pub use term_utils::{initial_terminal_state, restore_terminal};
20
21pub mod error;
22pub use error::{DrawError, FileError};
23
24pub mod display_screen;
25pub use display_screen::{Screen, ScreenKey};
26
27pub mod drawable_register;
28pub use drawable_register::{DrawObject, DrawObjectKey, DrawObjectLibrary};
29
30pub mod draw_object_builder;
31pub use draw_object_builder::DrawObjectBuilder;
32
33pub mod input_handler;
34pub use input_handler::CrosstermEventManager;
35
36use once_cell::sync::Lazy;
38use std::sync::Mutex;
39
40use crate::{
41 error::AppError,
42 terminal_buffer::buffer_and_celldrawer::standard_celldrawer::test_celldrawer::TerminalContentInformation,
43};
44
45static TEST_DATA: Lazy<Mutex<Option<TerminalContentInformation>>> = Lazy::new(|| Mutex::new(None));
46
47pub fn set_test_data(data: TerminalContentInformation) {
48 let mut guard = TEST_DATA.lock().unwrap();
49 *guard = Some(data);
50}
51
52pub fn get_test_data() -> Option<TerminalContentInformation> {
53 let guard = TEST_DATA.lock().unwrap();
54 guard.clone()
55}
56
57use env_logger::Builder;
58use std::fs::File;
59use std::io::Write;
60
61pub fn init_logger(path: &str) -> Result<(), AppError> {
62 let f = File::create(path)?;
63 Builder::new()
64 .format_timestamp_secs()
65 .format(|buf, record| writeln!(buf, "[{}] {}", record.level(), record.args()))
66 .target(env_logger::Target::Pipe(Box::new(f)))
67 .filter_level(log::LevelFilter::Info)
68 .init();
69 Ok(())
70}