use std::marker::PhantomData;
use crate::bindgen::FPDF_PAGEOBJECT;
use crate::error::PdfiumError;
use crate::pdf::document::page::object::private::internal::PdfPageObjectPrivate;
use crate::pdf::document::page::object::PdfPageObjectOwnership;
use crate::pdf::matrix::{PdfMatrix, PdfMatrixValue};
use crate::pdf::points::PdfPoints;
use crate::pdfium::PdfiumLibraryBindingsAccessor;
use crate::{create_transform_getters, create_transform_setters};
#[cfg(doc)]
use {
crate::pdf::document::page::object::PdfPageObject,
crate::pdf::document::page::object::PdfPageObjectType, crate::pdf::document::page::PdfPage,
};
pub struct PdfPageShadingObject<'a> {
object_handle: FPDF_PAGEOBJECT,
ownership: PdfPageObjectOwnership,
lifetime: PhantomData<&'a FPDF_PAGEOBJECT>,
}
impl<'a> PdfPageShadingObject<'a> {
pub(crate) fn from_pdfium(
object_handle: FPDF_PAGEOBJECT,
ownership: PdfPageObjectOwnership,
) -> Self {
PdfPageShadingObject {
object_handle,
ownership,
lifetime: PhantomData,
}
}
create_transform_setters!(
&mut Self,
Result<(), PdfiumError>,
"this [PdfPageShadingObject]",
"this [PdfPageShadingObject].",
"this [PdfPageShadingObject],"
);
create_transform_getters!(
"this [PdfPageShadingObject]",
"this [PdfPageShadingObject].",
"this [PdfPageShadingObject],"
);
}
impl<'a> PdfPageObjectPrivate<'a> for PdfPageShadingObject<'a> {
#[inline]
fn object_handle(&self) -> FPDF_PAGEOBJECT {
self.object_handle
}
#[inline]
fn ownership(&self) -> &PdfPageObjectOwnership {
&self.ownership
}
#[inline]
fn set_ownership(&mut self, ownership: PdfPageObjectOwnership) {
self.ownership = ownership;
}
}
impl<'a> Drop for PdfPageShadingObject<'a> {
fn drop(&mut self) {
self.drop_impl();
}
}
impl<'a> PdfiumLibraryBindingsAccessor<'a> for PdfPageShadingObject<'a> {}
#[cfg(feature = "thread_safe")]
unsafe impl<'a> Send for PdfPageShadingObject<'a> {}
#[cfg(feature = "thread_safe")]
unsafe impl<'a> Sync for PdfPageShadingObject<'a> {}