mupdf 0.6.0

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

use crate::{context, pdf::PdfObject, Error};

#[derive(Debug)]
pub struct PdfGraftMap {
    pub(crate) inner: *mut pdf_graft_map,
}

impl PdfGraftMap {
    pub(crate) unsafe fn from_raw(ptr: *mut pdf_graft_map) -> Self {
        Self { inner: ptr }
    }

    pub fn graft_object(&mut self, obj: &PdfObject) -> Result<PdfObject, Error> {
        unsafe {
            ffi_try!(mupdf_pdf_graft_mapped_object(
                context(),
                self.inner,
                obj.inner
            ))
        }
        .map(|inner| unsafe { PdfObject::from_raw(inner) })
    }
}

impl Drop for PdfGraftMap {
    fn drop(&mut self) {
        if !self.inner.is_null() {
            unsafe {
                pdf_drop_graft_map(context(), self.inner);
            }
        }
    }
}