use std::sync::Arc;
use crate::core::registry::FormatRegistry;
use crate::formats::dicom::DicomBackend;
use crate::formats::hamamatsu_vms::HamamatsuVmsBackend;
use crate::formats::mirax::MiraxBackend;
use crate::formats::olympus_vsi::OlympusVsiBackend;
use crate::formats::raw_jp2k::RawJp2kBackend;
use crate::formats::svcache::SvcacheBackend;
use crate::formats::tiff_family::TiffFamilyBackend;
use crate::formats::zeiss::ZeissBackend;
use crate::formats::zeiss_zvi::ZeissZviBackend;
impl FormatRegistry {
pub fn builtin() -> Self {
let mut registry = Self::new();
let svcache = Arc::new(SvcacheBackend);
registry.register(svcache.clone(), svcache);
registry.register_native_backends();
registry
}
pub(crate) fn builtin_native() -> Self {
let mut registry = Self::new();
registry.register_native_backends();
registry
}
fn register_native_backends(&mut self) {
let dicom = Arc::new(DicomBackend::new());
self.register_cache_configured(dicom.clone(), dicom);
let mirax = Arc::new(MiraxBackend::new());
self.register_cache_configured(mirax.clone(), mirax);
let vms = Arc::new(HamamatsuVmsBackend::new());
self.register_cache_configured(vms.clone(), vms);
let vsi = Arc::new(OlympusVsiBackend);
self.register(vsi.clone(), vsi);
let raw_jp2k = Arc::new(RawJp2kBackend);
self.register(raw_jp2k.clone(), raw_jp2k);
let zeiss_zvi = Arc::new(ZeissZviBackend);
self.register(zeiss_zvi.clone(), zeiss_zvi);
let zeiss = Arc::new(ZeissBackend);
self.register_cache_configured(zeiss.clone(), zeiss);
let tiff = Arc::new(TiffFamilyBackend::new());
self.register(tiff.clone(), tiff);
}
}