1#[macro_use]
2extern crate lazy_static;
3
4use crate::properties::Properties;
5
6#[cfg(feature = "deepzoom")]
7use {
8 crate::traits::Slide,
9 std::{borrow::Borrow, marker::PhantomData},
10};
11
12mod bindings;
13#[cfg(feature = "openslide4")]
14mod cache;
15#[cfg(feature = "deepzoom")]
16pub mod deepzoom;
17pub mod errors;
18pub mod properties;
19#[cfg(feature = "deepzoom")]
20pub mod traits;
21mod utils;
22mod wrapper;
23
24pub type Result<T, E = errors::OpenSlideError> = std::result::Result<T, E>;
26
27#[derive(Debug)]
34pub struct OpenSlide {
35 osr: bindings::OpenSlideWrapper,
36 pub properties: Properties,
37}
38
39#[cfg(feature = "deepzoom")]
41#[derive(Debug)]
42pub struct DeepZoomGenerator<S: Slide, B: Borrow<S>> {
43 slide: B,
44 _phantom: PhantomData<S>,
45
46 level_count: usize,
47 level_tiles: Vec<Size>,
48 level_dimensions: Vec<Size>,
49
50 tile_size: u32,
51 overlap: u32,
52
53 l0_offset: Address,
54 slide_level_dimensions: Vec<Size>,
55 slide_from_dz_level: Vec<u32>,
56 l0_l_downsamples: Vec<f64>,
57 l_z_downsamples: Vec<f64>,
58}
59
60#[derive(Debug, Clone, Copy, PartialEq, Eq)]
63pub struct Region {
64 pub size: Size,
65 pub level: u32,
66 pub address: Address,
67}
68
69#[derive(Debug, Clone, Copy, PartialEq, Eq)]
71pub struct Size {
72 pub w: u32,
73 pub h: u32,
74}
75
76#[derive(Debug, Clone, Copy, PartialEq, Eq)]
78pub struct Address {
79 pub x: u32,
80 pub y: u32,
81}