use alloc::vec::Vec;
pub use crate::{
J2kRect as WaveletRect, J2kSubBandType as WaveletBandKind,
J2kWaveletTransform as WaveletTransform,
};
#[derive(Debug, Clone, Default)]
pub struct WaveletSelection {
pub tiles: Vec<u32>,
pub components: Vec<u16>,
pub resolutions: Vec<u8>,
pub bands: Vec<WaveletBandKind>,
}
#[derive(Debug, PartialEq)]
pub enum WaveletSamples {
I64(Vec<i64>),
F32(Vec<f32>),
}
#[derive(Debug)]
pub struct WaveletBand {
pub kind: WaveletBandKind,
pub resolution: u8,
pub rect: WaveletRect,
pub quantization_step: f32,
pub samples: WaveletSamples,
}
#[derive(Debug)]
pub struct WaveletComponent {
pub index: u16,
pub rect: WaveletRect,
pub precision: u8,
pub signed: bool,
pub sampling: (u8, u8),
pub transform: WaveletTransform,
pub decomposition_levels: u8,
pub bands: Vec<WaveletBand>,
}
#[derive(Debug)]
pub struct WaveletTile {
pub index: u32,
pub rect: WaveletRect,
pub uses_color_transform: bool,
pub components: Vec<WaveletComponent>,
}
#[derive(Debug)]
pub struct WaveletImage {
pub rect: WaveletRect,
pub tiles: Vec<WaveletTile>,
}