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::PdfPage, crate::pdf::document::page::object::PdfPageObjectType};
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!(
45 "this [PdfPageShadingObject]",
46 "this [PdfPageShadingObject].",
47 "this [PdfPageShadingObject],"
48 );
49}
50
51impl<'a> PdfPageObjectPrivate<'a> for PdfPageShadingObject<'a> {
52 #[inline]
53 fn object_handle(&self) -> FPDF_PAGEOBJECT {
54 self.object_handle
55 }
56
57 #[inline]
58 fn ownership(&self) -> &PdfPageObjectOwnership {
59 &self.ownership
60 }
61
62 #[inline]
63 fn set_ownership(&mut self, ownership: PdfPageObjectOwnership) {
64 self.ownership = ownership;
65 }
66
67 #[inline]
68 fn bindings(&self) -> &dyn PdfiumLibraryBindings {
69 self.bindings
70 }
71
72 #[inline]
73 fn is_copyable_impl(&self) -> bool {
74 false
75 }
76
77 #[inline]
78 fn try_copy_impl<'b>(
79 &self,
80 _: FPDF_DOCUMENT,
81 _: &'b dyn PdfiumLibraryBindings,
82 ) -> Result<PdfPageObject<'b>, PdfiumError> {
83 Err(PdfiumError::UnsupportedPdfPageObjectType)
84 }
85}
86
87impl<'a> Drop for PdfPageShadingObject<'a> {
88 fn drop(&mut self) {
90 self.drop_impl();
91 }
92}