pdfium_render/pdf/document/page/object/
shading.rs1use crate::bindgen::{FPDF_DOCUMENT, FPDF_PAGEOBJECT};
5use crate::bindings::PdfiumLibraryBindings;
6use crate::error::PdfiumError;
7use crate::pdf::document::page::object::private::internal::PdfPageObjectPrivate;
8use crate::pdf::document::page::object::{PdfPageObject, PdfPageObjectOwnership};
9use crate::pdf::matrix::{PdfMatrix, PdfMatrixValue};
10use crate::pdf::points::PdfPoints;
11use crate::{create_transform_getters, create_transform_setters};
12
13#[cfg(doc)]
14use {crate::pdf::document::page::object::PdfPageObjectType, crate::pdf::document::page::PdfPage};
15
16pub struct PdfPageShadingObject<'a> {
18 object_handle: FPDF_PAGEOBJECT,
19 ownership: PdfPageObjectOwnership,
20 bindings: &'a dyn PdfiumLibraryBindings,
21}
22
23impl<'a> PdfPageShadingObject<'a> {
24 pub(crate) fn from_pdfium(
25 object_handle: FPDF_PAGEOBJECT,
26 ownership: PdfPageObjectOwnership,
27 bindings: &'a dyn PdfiumLibraryBindings,
28 ) -> Self {
29 PdfPageShadingObject {
30 object_handle,
31 ownership,
32 bindings,
33 }
34 }
35
36 create_transform_setters!(
37 &mut Self,
38 Result<(), PdfiumError>,
39 "this [PdfPageShadingObject]",
40 "this [PdfPageShadingObject].",
41 "this [PdfPageShadingObject],"
42 );
43
44 create_transform_getters!(
48 "this [PdfPageShadingObject]",
49 "this [PdfPageShadingObject].",
50 "this [PdfPageShadingObject],"
51 );
52
53 }
56
57impl<'a> PdfPageObjectPrivate<'a> for PdfPageShadingObject<'a> {
58 #[inline]
59 fn object_handle(&self) -> FPDF_PAGEOBJECT {
60 self.object_handle
61 }
62
63 #[inline]
64 fn ownership(&self) -> &PdfPageObjectOwnership {
65 &self.ownership
66 }
67
68 #[inline]
69 fn set_ownership(&mut self, ownership: PdfPageObjectOwnership) {
70 self.ownership = ownership;
71 }
72
73 #[inline]
74 fn bindings(&self) -> &dyn PdfiumLibraryBindings {
75 self.bindings
76 }
77
78 #[inline]
79 fn is_copyable_impl(&self) -> bool {
80 false
81 }
82
83 #[inline]
84 fn try_copy_impl<'b>(
85 &self,
86 _: FPDF_DOCUMENT,
87 _: &'b dyn PdfiumLibraryBindings,
88 ) -> Result<PdfPageObject<'b>, PdfiumError> {
89 Err(PdfiumError::UnsupportedPdfPageObjectType)
90 }
91}
92
93impl<'a> Drop for PdfPageShadingObject<'a> {
94 fn drop(&mut self) {
96 self.drop_impl();
97 }
98}