pub struct VideoStreamDrawableBuilder { /* private fields */ }Implementations§
Source§impl VideoStreamDrawableBuilder
impl VideoStreamDrawableBuilder
pub fn new() -> Self
Sourcepub fn position(self, position: impl Into<Point<i32>>) -> Self
pub fn position(self, position: impl Into<Point<i32>>) -> Self
Examples found in repository?
examples/screens.rs (line 157)
113pub fn main() -> Result<(), AppError> {
114 init_terminal!();
115 init_logger("./screens_showcase.log")?;
116
117 let (cols, rows) = size()?;
118 let renderer = Renderer::<DefaultScreenBuffer<CrosstermCellDrawer>, Instant>::create_renderer(
119 (cols, rows),
120 );
121 let (mut r, ev_handler, _ev_manager) = start_renderer_with_input(renderer);
122 r.set_update_interval(1)?;
123
124 let mut hook = ev_handler.create_hook();
125
126 let mut ad_screens = AdjustableScreens::new_uniform_grid(WIDTH, HEIGHT, &mut r)?;
127
128 for screen in &mut ad_screens {
129 let builder = DrawObjectBuilder::default();
130 let d_key = builder
131 .layer(100)
132 .rect_drawable(|r| {
133 r.border_style(
134 ltrender::terminal_buffer::standard_drawables::rect_drawable::BorderStyle::Custom {
135 top: TerminalChar::from_char('T'),
136 bottom: TerminalChar::from_char('B'),
137 left: TerminalChar::from_char('L'),
138 right: TerminalChar::from_char('R'),
139 },
140 )
141 .border_thickness(1)
142 .fill_style(' ')
143 .rect(Rect::from_coords(0, 0, 2, 2))
144 .screen_fit(ScreenFitType::Full)
145 })?
146 .add_lifetime(ObjectLifetime::ExplicitRemove)
147 .screen(screen)
148 .build(&mut r)?;
149 info!("manually rendering drawable: {:?}", d_key);
150 r.render_drawable(d_key)?;
151 }
152
153 let (s, recv) = mpsc::channel();
154 let builder = DrawObjectBuilder::default();
155 let text_stream = builder
156 .layer(200)
157 .videostream_drawable(|b| b.position((0, 0)).recv(recv))?
158 .add_lifetime(ObjectLifetime::ExplicitRemove)
159 .screen(0)
160 .build(&mut r)?;
161 let callback_hook = ev_handler.create_hook();
162 let callback_renderh: RenderHandle<Instant> = r.clone();
163 hook.on_mouse_button_press(MouseButtons::Left, move |_| {
164 if let TargetScreen::Screen(id) = callback_hook.current_selected_screen() {
165 let msg = format!("selected_screen: {} ", id);
166 info!("{}", msg);
167 let mut data = Vec::new();
168 for chr in msg.chars() {
169 data.push(Some(TerminalChar::from_char(chr)));
170 }
171 let _ = s.send(StreamFrame {
172 size: (data.len() as u16, 1),
173 data,
174 });
175 let _ = callback_renderh.render_drawable(text_stream);
176 }
177 })?;
178 loop {
179 if hook.is_pressed(InputButton::Key(KeyCode::Char('c'))) {
180 info!("breaking out of the loop");
181 break;
182 }
183
184 let cur_size = size()?;
185 let rendered_size = r.get_terminal_size()?;
186 if cur_size != rendered_size {
187 info!(
188 "redrawing with cur_size: {:?}, rendered: {:?}",
189 cur_size, rendered_size
190 );
191 r.handle_resize(cur_size)?;
192 ad_screens.place_screens_uniformly(&mut r)?;
193 }
194 }
195 restore_terminal()?;
196 info!("returning with ok");
197 Ok(())
198}pub fn size(self, size: (u16, u16)) -> Self
Sourcepub fn recv(self, receiver: Receiver<StreamFrame>) -> Self
pub fn recv(self, receiver: Receiver<StreamFrame>) -> Self
Examples found in repository?
examples/screens.rs (line 157)
113pub fn main() -> Result<(), AppError> {
114 init_terminal!();
115 init_logger("./screens_showcase.log")?;
116
117 let (cols, rows) = size()?;
118 let renderer = Renderer::<DefaultScreenBuffer<CrosstermCellDrawer>, Instant>::create_renderer(
119 (cols, rows),
120 );
121 let (mut r, ev_handler, _ev_manager) = start_renderer_with_input(renderer);
122 r.set_update_interval(1)?;
123
124 let mut hook = ev_handler.create_hook();
125
126 let mut ad_screens = AdjustableScreens::new_uniform_grid(WIDTH, HEIGHT, &mut r)?;
127
128 for screen in &mut ad_screens {
129 let builder = DrawObjectBuilder::default();
130 let d_key = builder
131 .layer(100)
132 .rect_drawable(|r| {
133 r.border_style(
134 ltrender::terminal_buffer::standard_drawables::rect_drawable::BorderStyle::Custom {
135 top: TerminalChar::from_char('T'),
136 bottom: TerminalChar::from_char('B'),
137 left: TerminalChar::from_char('L'),
138 right: TerminalChar::from_char('R'),
139 },
140 )
141 .border_thickness(1)
142 .fill_style(' ')
143 .rect(Rect::from_coords(0, 0, 2, 2))
144 .screen_fit(ScreenFitType::Full)
145 })?
146 .add_lifetime(ObjectLifetime::ExplicitRemove)
147 .screen(screen)
148 .build(&mut r)?;
149 info!("manually rendering drawable: {:?}", d_key);
150 r.render_drawable(d_key)?;
151 }
152
153 let (s, recv) = mpsc::channel();
154 let builder = DrawObjectBuilder::default();
155 let text_stream = builder
156 .layer(200)
157 .videostream_drawable(|b| b.position((0, 0)).recv(recv))?
158 .add_lifetime(ObjectLifetime::ExplicitRemove)
159 .screen(0)
160 .build(&mut r)?;
161 let callback_hook = ev_handler.create_hook();
162 let callback_renderh: RenderHandle<Instant> = r.clone();
163 hook.on_mouse_button_press(MouseButtons::Left, move |_| {
164 if let TargetScreen::Screen(id) = callback_hook.current_selected_screen() {
165 let msg = format!("selected_screen: {} ", id);
166 info!("{}", msg);
167 let mut data = Vec::new();
168 for chr in msg.chars() {
169 data.push(Some(TerminalChar::from_char(chr)));
170 }
171 let _ = s.send(StreamFrame {
172 size: (data.len() as u16, 1),
173 data,
174 });
175 let _ = callback_renderh.render_drawable(text_stream);
176 }
177 })?;
178 loop {
179 if hook.is_pressed(InputButton::Key(KeyCode::Char('c'))) {
180 info!("breaking out of the loop");
181 break;
182 }
183
184 let cur_size = size()?;
185 let rendered_size = r.get_terminal_size()?;
186 if cur_size != rendered_size {
187 info!(
188 "redrawing with cur_size: {:?}, rendered: {:?}",
189 cur_size, rendered_size
190 );
191 r.handle_resize(cur_size)?;
192 ad_screens.place_screens_uniformly(&mut r)?;
193 }
194 }
195 restore_terminal()?;
196 info!("returning with ok");
197 Ok(())
198}pub fn build(self) -> Result<Box<dyn Drawable>, DrawObjectBuilderError>
Trait Implementations§
Source§impl Default for VideoStreamDrawableBuilder
impl Default for VideoStreamDrawableBuilder
Source§fn default() -> VideoStreamDrawableBuilder
fn default() -> VideoStreamDrawableBuilder
Returns the “default value” for a type. Read more