40 lines
1.1 KiB
Rust
40 lines
1.1 KiB
Rust
use crate::gfx::BlendMode;
|
|
use prometeu_hal::color::Color;
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub enum OverlayCommand {
|
|
FillRectBlend { x: i32, y: i32, w: i32, h: i32, color: Color, mode: BlendMode },
|
|
DrawLine { x0: i32, y0: i32, x1: i32, y1: i32, color: Color },
|
|
DrawCircle { x: i32, y: i32, r: i32, color: Color },
|
|
DrawDisc { x: i32, y: i32, r: i32, border_color: Color, fill_color: Color },
|
|
DrawSquare { x: i32, y: i32, w: i32, h: i32, border_color: Color, fill_color: Color },
|
|
DrawText { x: i32, y: i32, text: String, color: Color },
|
|
}
|
|
|
|
#[derive(Debug, Clone, Default)]
|
|
pub struct DeferredGfxOverlay {
|
|
commands: Vec<OverlayCommand>,
|
|
}
|
|
|
|
impl DeferredGfxOverlay {
|
|
pub fn begin_frame(&mut self) {
|
|
self.commands.clear();
|
|
}
|
|
|
|
pub fn push(&mut self, command: OverlayCommand) {
|
|
self.commands.push(command);
|
|
}
|
|
|
|
pub fn commands(&self) -> &[OverlayCommand] {
|
|
&self.commands
|
|
}
|
|
|
|
pub fn command_count(&self) -> usize {
|
|
self.commands.len()
|
|
}
|
|
|
|
pub fn take_commands(&mut self) -> Vec<OverlayCommand> {
|
|
std::mem::take(&mut self.commands)
|
|
}
|
|
}
|