use alloc::vec::Vec;
use core::ops::Range;
use crate::{EncodedHtJ2kCodeBlock, J2kForwardDwt53Output, J2kForwardDwt97Output, J2kSubBandType};
#[derive(Debug)]
pub struct PrecomputedHtj2k53Component {
pub x_rsiz: u8,
pub y_rsiz: u8,
pub dwt: J2kForwardDwt53Output,
}
#[derive(Debug)]
pub struct PrecomputedHtj2k53Image {
pub width: u32,
pub height: u32,
pub bit_depth: u8,
pub signed: bool,
pub components: Vec<PrecomputedHtj2k53Component>,
}
#[derive(Debug)]
pub struct PrecomputedHtj2k97Component {
pub x_rsiz: u8,
pub y_rsiz: u8,
pub dwt: J2kForwardDwt97Output,
}
#[derive(Debug)]
pub struct PrecomputedHtj2k97Image {
pub width: u32,
pub height: u32,
pub bit_depth: u8,
pub signed: bool,
pub components: Vec<PrecomputedHtj2k97Component>,
}
#[derive(Debug)]
pub struct PrequantizedHtj2k97Image {
pub width: u32,
pub height: u32,
pub bit_depth: u8,
pub signed: bool,
pub components: Vec<PrequantizedHtj2k97Component>,
}
#[derive(Debug)]
pub struct PrequantizedHtj2k97Component {
pub x_rsiz: u8,
pub y_rsiz: u8,
pub resolutions: Vec<PrequantizedHtj2k97Resolution>,
}
#[derive(Debug)]
pub struct PrequantizedHtj2k97Resolution {
pub subbands: Vec<PrequantizedHtj2k97Subband>,
}
#[derive(Debug)]
pub struct PrequantizedHtj2k97Subband {
pub sub_band_type: J2kSubBandType,
pub num_cbs_x: u32,
pub num_cbs_y: u32,
pub total_bitplanes: u8,
pub code_blocks: Vec<PrequantizedHtj2k97CodeBlock>,
}
#[derive(Debug)]
pub struct PrequantizedHtj2k97CodeBlock {
pub coefficients: Vec<i32>,
pub width: u32,
pub height: u32,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97Image {
pub width: u32,
pub height: u32,
pub bit_depth: u8,
pub signed: bool,
pub components: Vec<PreencodedHtj2k97Component>,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97Component {
pub x_rsiz: u8,
pub y_rsiz: u8,
pub resolutions: Vec<PreencodedHtj2k97Resolution>,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97Resolution {
pub subbands: Vec<PreencodedHtj2k97Subband>,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97Subband {
pub sub_band_type: J2kSubBandType,
pub num_cbs_x: u32,
pub num_cbs_y: u32,
pub total_bitplanes: u8,
pub code_blocks: Vec<PreencodedHtj2k97CodeBlock>,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97CodeBlock {
pub width: u32,
pub height: u32,
pub encoded: EncodedHtJ2kCodeBlock,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97CompactImage {
pub width: u32,
pub height: u32,
pub bit_depth: u8,
pub signed: bool,
pub payload: Vec<u8>,
pub components: Vec<PreencodedHtj2k97CompactComponent>,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97CompactComponent {
pub x_rsiz: u8,
pub y_rsiz: u8,
pub resolutions: Vec<PreencodedHtj2k97CompactResolution>,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97CompactResolution {
pub subbands: Vec<PreencodedHtj2k97CompactSubband>,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97CompactSubband {
pub sub_band_type: J2kSubBandType,
pub num_cbs_x: u32,
pub num_cbs_y: u32,
pub total_bitplanes: u8,
pub code_blocks: Vec<PreencodedHtj2k97CompactCodeBlock>,
}
#[derive(Debug)]
pub struct PreencodedHtj2k97CompactCodeBlock {
pub width: u32,
pub height: u32,
pub payload_range: Range<usize>,
pub cleanup_length: u32,
pub refinement_length: u32,
pub num_coding_passes: u8,
pub num_zero_bitplanes: u8,
}
crate::move_only::assert_move_only!(
PrecomputedHtj2k53Component,
PrecomputedHtj2k53Image,
PrecomputedHtj2k97Component,
PrecomputedHtj2k97Image,
PrequantizedHtj2k97Image,
PrequantizedHtj2k97Component,
PrequantizedHtj2k97Resolution,
PrequantizedHtj2k97Subband,
PrequantizedHtj2k97CodeBlock,
PreencodedHtj2k97Image,
PreencodedHtj2k97Component,
PreencodedHtj2k97Resolution,
PreencodedHtj2k97Subband,
PreencodedHtj2k97CodeBlock,
PreencodedHtj2k97CompactImage,
PreencodedHtj2k97CompactComponent,
PreencodedHtj2k97CompactResolution,
PreencodedHtj2k97CompactSubband,
PreencodedHtj2k97CompactCodeBlock,
);