use crate::{error::PdfResult, objects::Dictionary, Resolve};
use super::Function;
#[derive(Debug)]
pub struct StitchingFunction {
functions: Vec<Function>,
bounds: Vec<f32>,
encode: Vec<f32>,
}
impl StitchingFunction {
pub fn from_dict(dict: &mut Dictionary, resolver: &mut dyn Resolve) -> PdfResult<Self> {
let functions = dict
.expect_arr("Functions", resolver)?
.into_iter()
.map(|obj| Function::from_obj(obj, resolver))
.collect::<PdfResult<Vec<Function>>>()?;
let bounds = dict
.expect_arr("Bounds", resolver)?
.into_iter()
.map(|obj| resolver.assert_number(obj))
.collect::<PdfResult<Vec<f32>>>()?;
let encode = dict
.expect_arr("Bounds", resolver)?
.into_iter()
.map(|obj| resolver.assert_number(obj))
.collect::<PdfResult<Vec<f32>>>()?;
Ok(Self {
functions,
bounds,
encode,
})
}
}