use rpl::instructions::{FilterInstruction, Instruction}; use crate::{value::DynamicValue, Executor}; mod instructions; pub struct DebugExecutor; impl Executor for DebugExecutor { fn execute(instruction: Instruction, input: Option) -> Option { match instruction { Instruction::Read(read_instruction) => Some(DynamicValue::Image( instructions::read::read(read_instruction), )), Instruction::Write(write_instruction) => { instructions::write::write( write_instruction, match input { Some(DynamicValue::Image(img)) => img, _ => panic!("awawwawwa"), }, ); None } Instruction::Math(_) => todo!(), Instruction::Blend(_) => todo!(), Instruction::Noise(_) => todo!(), Instruction::Filter(filter_instruction) => match filter_instruction { FilterInstruction::Invert => Some(DynamicValue::Image( instructions::filters::invert::invert(match input { Some(DynamicValue::Image(img)) => img, _ => panic!("invalid value type for invert"), }), )), }, } } }