pdfium_render/pdf/document/page/object/
shading.rs1use std::marker::PhantomData;
5
6use crate::bindgen::FPDF_PAGEOBJECT;
7use crate::error::PdfiumError;
8use crate::pdf::document::page::object::private::internal::PdfPageObjectPrivate;
9use crate::pdf::document::page::object::PdfPageObjectOwnership;
10use crate::pdf::matrix::{PdfMatrix, PdfMatrixValue};
11use crate::pdf::points::PdfPoints;
12use crate::pdfium::PdfiumLibraryBindingsAccessor;
13use crate::{create_transform_getters, create_transform_setters};
14
15#[cfg(doc)]
16use {
17 crate::pdf::document::page::object::PdfPageObject,
18 crate::pdf::document::page::object::PdfPageObjectType, crate::pdf::document::page::PdfPage,
19};
20
21pub struct PdfPageShadingObject<'a> {
23 object_handle: FPDF_PAGEOBJECT,
24 ownership: PdfPageObjectOwnership,
25 lifetime: PhantomData<&'a FPDF_PAGEOBJECT>,
26}
27
28impl<'a> PdfPageShadingObject<'a> {
29 pub(crate) fn from_pdfium(
30 object_handle: FPDF_PAGEOBJECT,
31 ownership: PdfPageObjectOwnership,
32 ) -> Self {
33 PdfPageShadingObject {
34 object_handle,
35 ownership,
36 lifetime: PhantomData,
37 }
38 }
39
40 create_transform_setters!(
41 &mut Self,
42 Result<(), PdfiumError>,
43 "this [PdfPageShadingObject]",
44 "this [PdfPageShadingObject].",
45 "this [PdfPageShadingObject],"
46 );
47
48 create_transform_getters!(
52 "this [PdfPageShadingObject]",
53 "this [PdfPageShadingObject].",
54 "this [PdfPageShadingObject],"
55 );
56
57 }
60
61impl<'a> PdfPageObjectPrivate<'a> for PdfPageShadingObject<'a> {
62 #[inline]
63 fn object_handle(&self) -> FPDF_PAGEOBJECT {
64 self.object_handle
65 }
66
67 #[inline]
68 fn ownership(&self) -> &PdfPageObjectOwnership {
69 &self.ownership
70 }
71
72 #[inline]
73 fn set_ownership(&mut self, ownership: PdfPageObjectOwnership) {
74 self.ownership = ownership;
75 }
76}
77
78impl<'a> Drop for PdfPageShadingObject<'a> {
79 fn drop(&mut self) {
81 self.drop_impl();
82 }
83}
84
85impl<'a> PdfiumLibraryBindingsAccessor<'a> for PdfPageShadingObject<'a> {}
86
87#[cfg(feature = "thread_safe")]
88unsafe impl<'a> Send for PdfPageShadingObject<'a> {}
89
90#[cfg(feature = "thread_safe")]
91unsafe impl<'a> Sync for PdfPageShadingObject<'a> {}