mupdf 0.6.0

Safe Rust wrapper to MuPDF
Documentation
use mupdf_sys::*;

use crate::from_enum;

from_enum! { pdf_intent => pdf_intent,
    #[derive(Debug, Clone, Copy, PartialEq, Eq)]
    pub enum Intent {
        Default = PDF_ANNOT_IT_DEFAULT,
        FreetextCallout = PDF_ANNOT_IT_FREETEXT_CALLOUT,
        FreetextTypewriter = PDF_ANNOT_IT_FREETEXT_TYPEWRITER,
        LineArrow = PDF_ANNOT_IT_LINE_ARROW,
        LineDimension = PDF_ANNOT_IT_LINE_DIMENSION,
        PolylineDimension = PDF_ANNOT_IT_POLYLINE_DIMENSION,
        PolygonCloud = PDF_ANNOT_IT_POLYGON_CLOUD,
        PolygonDimension = PDF_ANNOT_IT_POLYGON_DIMENSION,
        StampImage = PDF_ANNOT_IT_STAMP_IMAGE,
        StampSnapshot = PDF_ANNOT_IT_STAMP_SNAPSHOT,
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn intents_convert() {
        let intents = [
            PDF_ANNOT_IT_DEFAULT,
            PDF_ANNOT_IT_FREETEXT_CALLOUT,
            PDF_ANNOT_IT_FREETEXT_TYPEWRITER,
            PDF_ANNOT_IT_LINE_ARROW,
            PDF_ANNOT_IT_LINE_DIMENSION,
            PDF_ANNOT_IT_POLYLINE_DIMENSION,
            PDF_ANNOT_IT_POLYGON_CLOUD,
            PDF_ANNOT_IT_POLYGON_DIMENSION,
            PDF_ANNOT_IT_STAMP_IMAGE,
            PDF_ANNOT_IT_STAMP_SNAPSHOT,
        ];

        for i in intents {
            let converted = Intent::try_from(i).unwrap();
            let back = pdf_intent::from(converted);

            assert_eq!(back, i);
        }
    }
}