use crate::converter::bytecolor2colorcode::ByteColor2ColorCodeConverter;
use crate::converter::int2ascii::IntConverter;
use crate::converter::mymode::MyModeConverter;
use crate::converter::none::NoneConverter;
use crate::converter::pixelbin2ascii::PixelBin2Ascii;
use crate::converter::sixteenbool2ascii::SixteenBool2Ascii;
use crate::converter::types::Converter;
use crate::converter::uint2ascii::UintConverter;
use std::collections::HashMap;
use std::sync::Arc;
pub fn get_convertmodes() -> HashMap<String, Arc<dyn Converter>> {
let mut convertmodes: HashMap<String, Arc<dyn Converter>> = HashMap::new();
let nonecv = Arc::new(NoneConverter::default());
let bytecolorcv = Arc::new(ByteColor2ColorCodeConverter::default());
let mymodecv = Arc::new(MyModeConverter::default());
let pixelcv = Arc::new(PixelBin2Ascii::default());
let sixteenboolcv = Arc::new(SixteenBool2Ascii::default());
convertmodes.insert(nonecv.to_string(), nonecv);
convertmodes.insert(bytecolorcv.to_string(), bytecolorcv);
convertmodes.insert(mymodecv.to_string(), mymodecv);
convertmodes.insert(pixelcv.to_string(), pixelcv);
convertmodes.insert(sixteenboolcv.to_string(),sixteenboolcv);
for b in [8, 16, 32, 64] {
for i in [1, 2, 4, 8] {
if (b / 8) * i <= 8 {
let cv = UintConverter::new(i, b).unwrap();
convertmodes.insert(cv.to_string(), Arc::new(cv));
let cv = IntConverter::new(i, b).unwrap();
convertmodes.insert(cv.to_string(), Arc::new(cv));
}
}
}
convertmodes
}