use crate::bindgen::{
FPDF_COLORSPACE_CALGRAY, FPDF_COLORSPACE_CALRGB, FPDF_COLORSPACE_DEVICECMYK,
FPDF_COLORSPACE_DEVICEGRAY, FPDF_COLORSPACE_DEVICEN, FPDF_COLORSPACE_DEVICERGB,
FPDF_COLORSPACE_ICCBASED, FPDF_COLORSPACE_INDEXED, FPDF_COLORSPACE_LAB,
FPDF_COLORSPACE_PATTERN, FPDF_COLORSPACE_SEPARATION, FPDF_COLORSPACE_UNKNOWN,
};
use crate::error::PdfiumError;
#[cfg(doc)]
use crate::pdf::document::page::PdfPage;
#[derive(Copy, Clone, Debug, PartialEq)]
pub enum PdfColorSpace {
Unknown = FPDF_COLORSPACE_UNKNOWN as isize,
DeviceGray = FPDF_COLORSPACE_DEVICEGRAY as isize,
DeviceRGB = FPDF_COLORSPACE_DEVICERGB as isize,
DeviceCMYK = FPDF_COLORSPACE_DEVICECMYK as isize,
CalibratedCIEGray = FPDF_COLORSPACE_CALGRAY as isize,
CalibratedCIERGB = FPDF_COLORSPACE_CALRGB as isize,
CalibratedCIELab = FPDF_COLORSPACE_LAB as isize,
CalibratedICCProfile = FPDF_COLORSPACE_ICCBASED as isize,
Separation = FPDF_COLORSPACE_SEPARATION as isize,
DeviceN = FPDF_COLORSPACE_DEVICEN as isize,
Indexed = FPDF_COLORSPACE_INDEXED as isize,
Pattern = FPDF_COLORSPACE_PATTERN as isize,
}
impl PdfColorSpace {
pub(crate) fn from_pdfium(value: u32) -> Result<PdfColorSpace, PdfiumError> {
match value {
FPDF_COLORSPACE_CALGRAY => Ok(PdfColorSpace::CalibratedCIEGray),
FPDF_COLORSPACE_CALRGB => Ok(PdfColorSpace::CalibratedCIERGB),
FPDF_COLORSPACE_DEVICECMYK => Ok(PdfColorSpace::DeviceCMYK),
FPDF_COLORSPACE_DEVICEGRAY => Ok(PdfColorSpace::DeviceGray),
FPDF_COLORSPACE_DEVICEN => Ok(PdfColorSpace::DeviceN),
FPDF_COLORSPACE_DEVICERGB => Ok(PdfColorSpace::DeviceRGB),
FPDF_COLORSPACE_ICCBASED => Ok(PdfColorSpace::CalibratedICCProfile),
FPDF_COLORSPACE_INDEXED => Ok(PdfColorSpace::Indexed),
FPDF_COLORSPACE_LAB => Ok(PdfColorSpace::CalibratedCIELab),
FPDF_COLORSPACE_PATTERN => Ok(PdfColorSpace::Pattern),
FPDF_COLORSPACE_SEPARATION => Ok(PdfColorSpace::Separation),
FPDF_COLORSPACE_UNKNOWN => Ok(PdfColorSpace::Unknown),
_ => Err(PdfiumError::UnknownPdfColorSpace),
}
}
}