Skip to main content

pdfium_render/pdf/document/page/object/
shading.rs

1//! Defines the [PdfPageShadingObject] struct, exposing functionality related to a single
2//! page object of type [PdfPageObjectType::Shading].
3
4use 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
16/// A single [PdfPageObject] of type [PdfPageObjectType::Shading].
17pub 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    /// Closes this [PdfPageShadingObject], releasing held memory.
89    fn drop(&mut self) {
90        self.drop_impl();
91    }
92}