Struct cairo::PdfSurface
source · #[repr(transparent)]pub struct PdfSurface(_);
Implementations§
source§impl PdfSurface
impl PdfSurface
pub unsafe fn from_raw_full( ptr: *mut cairo_surface_t ) -> Result<PdfSurface, Error>
pub unsafe fn from_raw_none( ptr: *mut cairo_surface_t ) -> Result<PdfSurface, Error>
source§impl PdfSurface
impl PdfSurface
pub fn new<P: AsRef<Path>>( width: f64, height: f64, path: P ) -> Result<Self, Error>
sourcepub fn for_stream<W: Write + 'static>(
width: f64,
height: f64,
stream: W
) -> Result<Self, Error>
pub fn for_stream<W: Write + 'static>( width: f64, height: f64, stream: W ) -> Result<Self, Error>
Takes full ownership of the output stream,
which is not allowed to borrow any lifetime shorter than 'static
.
Because the underlying cairo_surface_t
is reference-counted,
a lifetime parameter in a Rust wrapper type would not be enough to track
how long it can keep writing to the stream.
sourcepub unsafe fn for_raw_stream<W: Write + 'static>(
width: f64,
height: f64,
stream: *mut W
) -> Result<Self, Error>
pub unsafe fn for_raw_stream<W: Write + 'static>( width: f64, height: f64, stream: *mut W ) -> Result<Self, Error>
Allows writing to a borrowed stream. The lifetime of the borrow is not tracked.
Safety
The value that stream
points to must live at least until the underlying cairo_surface_t
(which maybe be longer then the Rust PdfSurface
wrapper, because of reference-counting),
or until the output stream is removed from the surface with Surface::finish_output_stream
.
Since the former is hard to track for sure, the latter is strongly recommended.
The concrete type behind the Box<dyn Any>
value returned by finish_output_stream
is private, so you won’t be able to downcast it.
But removing it anyway ensures that later writes do not go through a dangling pointer.
pub fn versions() -> impl Iterator<Item = PdfVersion>
pub fn restrict(&self, version: PdfVersion) -> Result<(), Error>
pub fn set_size(&self, width: f64, height: f64) -> Result<(), Error>
pub fn set_metadata( &self, metadata: PdfMetadata, value: &str ) -> Result<(), Error>
pub fn set_custom_metadata(&self, name: &str, value: &str) -> Result<(), Error>
pub fn set_page_label(&self, label: &str) -> Result<(), Error>
pub fn set_thumbnail_size(&self, width: i32, height: i32) -> Result<(), Error>
pub fn add_outline( &self, parent_id: i32, name: &str, link_attribs: &str, flags: PdfOutline ) -> Result<i32, Error>
Methods from Deref<Target = Surface>§
pub fn to_raw_none(&self) -> *mut cairo_surface_t
pub fn create_similar( &self, content: Content, width: i32, height: i32 ) -> Result<Surface, Error>
pub fn create_for_rectangle(&self, bounds: Rectangle) -> Result<Surface, Error>
pub fn mime_data(&self, mime_type: &str) -> Option<Vec<u8>>
pub unsafe fn mime_data_raw(&self, mime_type: &str) -> Option<&[u8]>
pub fn set_mime_data<T: AsRef<[u8]> + 'static>( &self, mime_type: &str, slice: T ) -> Result<(), Error>
pub fn supports_mime_type(&self, mime_type: &str) -> bool
pub fn device(&self) -> Option<Device>
pub fn content(&self) -> Content
pub fn set_device_offset(&self, x_offset: f64, y_offset: f64)
pub fn device_offset(&self) -> (f64, f64)
pub fn set_device_scale(&self, x_scale: f64, y_scale: f64)
pub fn device_scale(&self) -> (f64, f64)
pub fn set_fallback_resolution( &self, x_pixels_per_inch: f64, y_pixels_per_inch: f64 )
pub fn fallback_resolution(&self) -> (f64, f64)
pub fn create_similar_image( &self, format: Format, width: i32, height: i32 ) -> Result<Surface, Error>
pub fn map_to_image( &self, extents: Option<RectangleInt> ) -> Result<MappedImageSurface, Error>
pub fn mark_dirty(&self)
pub fn mark_dirty_rectangle(&self, x: i32, y: i32, width: i32, height: i32)
pub fn status(&self) -> Result<(), Error>
sourcepub fn set_user_data<T: 'static>(
&self,
key: &'static UserDataKey<T>,
value: Rc<T>
) -> Result<(), Error>
pub fn set_user_data<T: 'static>( &self, key: &'static UserDataKey<T>, value: Rc<T> ) -> Result<(), Error>
Attach user data to self
for the given key
.
sourcepub fn user_data<T: 'static>(
&self,
key: &'static UserDataKey<T>
) -> Option<Rc<T>>
pub fn user_data<T: 'static>( &self, key: &'static UserDataKey<T> ) -> Option<Rc<T>>
Return the user data previously attached to self
with the given key
, if any.
sourcepub fn user_data_ptr<T: 'static>(
&self,
key: &'static UserDataKey<T>
) -> Option<NonNull<T>>
pub fn user_data_ptr<T: 'static>( &self, key: &'static UserDataKey<T> ) -> Option<NonNull<T>>
Return the user data previously attached to self
with the given key
, if any,
without incrementing the reference count.
The pointer is valid when it is returned from this method,
until the cairo object that self
represents is destroyed
or remove_user_data
or set_user_data
is called with the same key.
sourcepub fn remove_user_data<T: 'static>(
&self,
key: &'static UserDataKey<T>
) -> Result<(), Error>
pub fn remove_user_data<T: 'static>( &self, key: &'static UserDataKey<T> ) -> Result<(), Error>
Unattached from self
the user data associated with key
, if any.
If there is no other Rc
strong reference, the data is destroyed.
pub fn flush(&self)
pub fn finish(&self)
pub fn type_(&self) -> SurfaceType
sourcepub fn write_to_png<W: Write>(&self, stream: &mut W) -> Result<(), IoError>
pub fn write_to_png<W: Write>(&self, stream: &mut W) -> Result<(), IoError>
This function writes the surface as a PNG image to the given stream.
If the underlying surface does not support being written as a PNG, this will return
Error::SurfaceTypeMismatch
sourcepub fn finish_output_stream(&self) -> Result<Box<dyn Any>, StreamWithError>
pub fn finish_output_stream(&self) -> Result<Box<dyn Any>, StreamWithError>
Finish the surface, then remove and return the output stream if any.
This calls Surface::finish
, to make sure pending writes are done.
This is relevant for surfaces created for example with crate::PdfSurface::for_stream
.
Use Box::downcast
to recover the concrete stream type.
Panics
This method panics if:
- This method was already called for this surface, or
- This surface was not created with an output stream in the first place, or
- A previous write to this surface panicked, or
- A previous write happened while another write was ongoing, or
- A write is ongoing now.
The latter two cases can only occur with a pathological output stream type
that accesses the same surface again from Write::write_all
.
Trait Implementations§
source§impl AsRef<Surface> for PdfSurface
impl AsRef<Surface> for PdfSurface
source§impl Clone for PdfSurface
impl Clone for PdfSurface
source§fn clone(&self) -> PdfSurface
fn clone(&self) -> PdfSurface
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PdfSurface
impl Debug for PdfSurface
source§impl Deref for PdfSurface
impl Deref for PdfSurface
source§impl Display for PdfSurface
impl Display for PdfSurface
source§impl From<PdfSurface> for Value
impl From<PdfSurface> for Value
source§fn from(v: PdfSurface) -> Self
fn from(v: PdfSurface) -> Self
source§impl FromGlibPtrBorrow<*mut cairo_surface_t> for PdfSurface
impl FromGlibPtrBorrow<*mut cairo_surface_t> for PdfSurface
source§unsafe fn from_glib_borrow(ptr: *mut cairo_surface_t) -> Borrowed<PdfSurface>
unsafe fn from_glib_borrow(ptr: *mut cairo_surface_t) -> Borrowed<PdfSurface>
source§impl FromGlibPtrFull<*mut cairo_surface_t> for PdfSurface
impl FromGlibPtrFull<*mut cairo_surface_t> for PdfSurface
source§unsafe fn from_glib_full(ptr: *mut cairo_surface_t) -> PdfSurface
unsafe fn from_glib_full(ptr: *mut cairo_surface_t) -> PdfSurface
source§impl FromGlibPtrNone<*mut cairo_surface_t> for PdfSurface
impl FromGlibPtrNone<*mut cairo_surface_t> for PdfSurface
source§unsafe fn from_glib_none(ptr: *mut cairo_surface_t) -> PdfSurface
unsafe fn from_glib_none(ptr: *mut cairo_surface_t) -> PdfSurface
source§impl<'a> FromValue<'a> for &'a PdfSurface
impl<'a> FromValue<'a> for &'a PdfSurface
§type Checker = GenericValueTypeOrNoneChecker<&'a PdfSurface>
type Checker = GenericValueTypeOrNoneChecker<&'a PdfSurface>
source§unsafe fn from_value(value: &'a Value) -> Self
unsafe fn from_value(value: &'a Value) -> Self
Value
. Read moresource§impl<'a> FromValue<'a> for PdfSurface
impl<'a> FromValue<'a> for PdfSurface
§type Checker = GenericValueTypeOrNoneChecker<PdfSurface>
type Checker = GenericValueTypeOrNoneChecker<PdfSurface>
source§unsafe fn from_value(value: &'a Value) -> Self
unsafe fn from_value(value: &'a Value) -> Self
Value
. Read moresource§impl IntoGlibPtr<*mut cairo_surface_t> for PdfSurface
impl IntoGlibPtr<*mut cairo_surface_t> for PdfSurface
source§unsafe fn into_glib_ptr(self) -> *mut cairo_surface_t
unsafe fn into_glib_ptr(self) -> *mut cairo_surface_t
source§impl StaticType for PdfSurface
impl StaticType for PdfSurface
source§fn static_type() -> Type
fn static_type() -> Type
Self
.source§impl<'a> ToGlibPtr<'a, *mut cairo_surface_t> for PdfSurface
impl<'a> ToGlibPtr<'a, *mut cairo_surface_t> for PdfSurface
type Storage = PhantomData<&'a Surface>
source§fn to_glib_full(&self) -> *mut cairo_surface_t
fn to_glib_full(&self) -> *mut cairo_surface_t
source§fn to_glib_container(&'a self) -> Stash<'a, P, Self>
fn to_glib_container(&'a self) -> Stash<'a, P, Self>
source§impl ToValue for PdfSurface
impl ToValue for PdfSurface
source§impl ToValueOptional for PdfSurface
impl ToValueOptional for PdfSurface
source§impl TryFrom<Surface> for PdfSurface
impl TryFrom<Surface> for PdfSurface
source§impl ValueType for PdfSurface
impl ValueType for PdfSurface
§type Type = PdfSurface
type Type = PdfSurface
Type
from. Read more