pub struct GdsiiEmitter {
mask_buffer: Vec<u8>,
}
impl GdsiiEmitter {
pub fn new() -> Self {
GdsiiEmitter { mask_buffer: Vec::new() }
}
pub fn emit_triadic_gate(&mut self, state: i8) {
self.mask_buffer.push(0x00);
match state {
1 => self.draw_affirm_geometry(),
-1 => self.draw_reject_geometry(),
0 => self.draw_hold_geometry(), _ => panic!("Invalid Trit State"),
}
}
fn draw_affirm_geometry(&mut self) {
self.mask_buffer.push(0x01);
}
fn draw_reject_geometry(&mut self) {
self.mask_buffer.push(0xFF);
}
fn draw_hold_geometry(&mut self) {
self.mask_buffer.push(0x80);
}
pub fn export_mask(&self) -> &[u8] {
&self.mask_buffer
}
}