Skip to main content

SlideReader

Trait SlideReader 

Source
pub trait SlideReader: Send + Sync {
Show 15 methods // Required methods fn dataset(&self) -> &Dataset; fn read_tile_cpu(&self, req: &TileRequest) -> Result<CpuTile, WsiError>; fn read_associated(&self, name: &str) -> Result<CpuTile, WsiError>; // Provided methods fn tile_codec_kind(&self, _req: &TileRequest) -> TileCodecKind { ... } fn level_source_kind( &self, scene: usize, series: usize, level: u32, ) -> Result<LevelSourceKind, WsiError> { ... } fn read_tiles( &self, reqs: &[TileRequest], output: TileOutputPreference, ) -> Result<Vec<TilePixels>, WsiError> { ... } fn read_tile( &self, req: &TileRequest, output: TileOutputPreference, ) -> Result<TilePixels, WsiError> { ... } fn read_raw_compressed_tile( &self, req: &TileRequest, ) -> Result<RawCompressedTile, WsiError> { ... } fn read_tiles_cpu( &self, reqs: &[TileRequest], ) -> Result<Vec<CpuTile>, WsiError> { ... } fn use_display_tile_cache(&self, _req: &TileViewRequest) -> bool { ... } fn read_region_fastpath( &self, _ctx: &mut SlideReadContext<'_>, _req: &RegionRequest, ) -> Option<Result<CpuTile, WsiError>> { ... } fn read_region( &self, req: &RegionRequest, output: TileOutputPreference, ) -> Result<TilePixels, WsiError> { ... } fn read_display_tile( &self, req: &TileViewRequest, ) -> Result<CpuTile, WsiError> { ... } fn associated_image(&self, name: &str) -> Result<Option<CpuTile>, WsiError> { ... } fn recommended_shared_cache_bytes(&self) -> Option<u64> { ... }
}
Expand description

Phase-2 read interface.

read_tile is a default impl over a 1-element slice into read_tiles. A backend that overrides read_tiles automatically gets the right read_tile for free:

use statumen::{
    ColorSpace, CpuTile, Dataset, SlideReader, TileOutputPreference, TilePixels, TileRequest,
    WsiError,
};
struct Mock;
impl SlideReader for Mock {
    fn dataset(&self) -> &Dataset { unimplemented!() }
    fn read_tiles(
        &self,
        reqs: &[TileRequest],
        _: TileOutputPreference,
    ) -> Result<Vec<TilePixels>, WsiError> {
        Ok(reqs
            .iter()
            .map(|_| {
                TilePixels::Cpu(
                    CpuTile::from_u8_interleaved(1, 1, 3, ColorSpace::Rgb, vec![255, 0, 0])
                        .unwrap(),
                )
            })
            .collect())
    }
    fn read_tile_cpu(&self, _: &TileRequest) -> Result<CpuTile, WsiError> {
        Ok(CpuTile::from_u8_interleaved(1, 1, 3, ColorSpace::Rgb, vec![255, 0, 0]).unwrap())
    }
    fn read_associated(&self, name: &str) -> Result<CpuTile, WsiError> {
        Err(WsiError::AssociatedImageNotFound(name.into()))
    }
}
let m = Mock;
let _ = m.read_tile(
    &TileRequest {
        scene: 0,
        series: 0,
        level: 0,
        plane: Default::default(),
        col: 0,
        row: 0,
    },
    TileOutputPreference::cpu(),
);

Required Methods§

Provided Methods§

Implementors§