pub struct PdfPagePathObject<'a> { /* private fields */ }
Expand description

A single PdfPageObject of type PdfPageObjectType::Path. The page object defines a path.

Paths define shapes, trajectories, and regions of all sorts. They are used to draw lines, define the shapes of filled areas, and specify boundaries for clipping other graphics. A path is composed of one or more path segments, each specifying a straight or curved line segment. Each segment may connect to one another, forming a closed sub-path, or may be disconnected from one another, forming one or more open sub-paths. A path therefore is made up of one or more disconnected sub-paths, each comprising a sequence of connected segments. Closed sub-paths can be filled; both closed and open sub-paths can be stroked. The topology of the path is unrestricted; it may be concave or convex, may contain multiple sub-paths representing disjoint areas, and may intersect itself in arbitrary ways.

Page objects can be created either attached to a PdfPage (in which case the page object’s memory is owned by the containing page) or detached from any page (in which case the page object’s memory is owned by the object). Page objects are not rendered until they are attached to a page; page objects that are never attached to a page will be lost when they fall out of scope.

The simplest way to create a path object that is immediately attached to a page is to call one of the PdfPageObjects::create_path_object_*() functions to create lines, cubic Bézier curves, rectangles, circles, and ellipses. Alternatively you can create a detached path object using one of the following functions, but you must add the object to a containing PdfPageObjects collection manually.

The detached path object can later be attached to a page by calling the PdfPageObjects::add_path_object() function.

Implementations§

source§

impl<'a> PdfPagePathObject<'a>

source

pub fn new(
    document: &PdfDocument<'a>,
    x: PdfPoints,
    y: PdfPoints,
    stroke_color: Option<PdfColor>,
    stroke_width: Option<PdfPoints>,
    fill_color: Option<PdfColor>
) -> Result<Self, PdfiumError>

Creates a new PdfPagePathObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjects::add_path_object() function.

The new path will be created with the given initial position and with the given fill and stroke settings applied. Both the stroke color and the stroke width must be provided for the path to be stroked.

Other than setting the initial position, this path will be empty. Add additional segments to this path by calling one or more of the PdfPagePathObject::move_to(), PdfPagePathObject::line_to(), or PdfPagePathObject::bezier_to() functions. A closed sub-path can be created by calling the PdfPagePathObject::close_path() function. Convenience functions for adding rectangles, circles, and ellipses are also available with the PdfPagePathObject::rect_to(), PdfPagePathObject::circle_to(), and PdfPagePathObject::ellipse_to() functions, which create the desired shapes by constructing closed sub-paths from other path segments.

source

pub fn new_line(
    document: &PdfDocument<'a>,
    x1: PdfPoints,
    y1: PdfPoints,
    x2: PdfPoints,
    y2: PdfPoints,
    stroke_color: PdfColor,
    stroke_width: PdfPoints
) -> Result<Self, PdfiumError>

Creates a new PdfPagePathObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjects::add_path_object() function.

The new path will be created with a line with the given start and end coordinates, and with the given stroke settings applied.

source

pub fn new_bezier(
    document: &PdfDocument<'a>,
    x1: PdfPoints,
    y1: PdfPoints,
    x2: PdfPoints,
    y2: PdfPoints,
    control1_x: PdfPoints,
    control1_y: PdfPoints,
    control2_x: PdfPoints,
    control2_y: PdfPoints,
    stroke_color: PdfColor,
    stroke_width: PdfPoints
) -> Result<Self, PdfiumError>

Creates a new PdfPagePathObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjects::add_path_object() function.

The new path will be created with a cubic Bézier curve with the given start, end, and control point coordinates, and with the given stroke settings applied.

source

pub fn new_rect(
    document: &PdfDocument<'a>,
    rect: PdfRect,
    stroke_color: Option<PdfColor>,
    stroke_width: Option<PdfPoints>,
    fill_color: Option<PdfColor>
) -> Result<Self, PdfiumError>

Creates a new PdfPagePathObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjects::add_path_object() function.

The new path will be created with a path for the given rectangle, with the given fill and stroke settings applied. Both the stroke color and the stroke width must be provided for the rectangle to be stroked.

source

pub fn new_circle(
    document: &PdfDocument<'a>,
    rect: PdfRect,
    stroke_color: Option<PdfColor>,
    stroke_width: Option<PdfPoints>,
    fill_color: Option<PdfColor>
) -> Result<Self, PdfiumError>

Creates a new PdfPagePathObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjects::add_path_object() function.

The new path will be created with a circle that fills the given rectangle, with the given fill and stroke settings applied. Both the stroke color and the stroke width must be provided for the circle to be stroked.

source

pub fn new_circle_at(
    document: &PdfDocument<'a>,
    center_x: PdfPoints,
    center_y: PdfPoints,
    radius: PdfPoints,
    stroke_color: Option<PdfColor>,
    stroke_width: Option<PdfPoints>,
    fill_color: Option<PdfColor>
) -> Result<Self, PdfiumError>

Creates a new PdfPagePathObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjects::add_path_object() function.

The new path will be created with a circle centered at the given coordinates, with the given radius, and with the given fill and stroke settings applied. Both the stroke color and the stroke width must be provided for the circle to be stroked.

source

pub fn new_ellipse(
    document: &PdfDocument<'a>,
    rect: PdfRect,
    stroke_color: Option<PdfColor>,
    stroke_width: Option<PdfPoints>,
    fill_color: Option<PdfColor>
) -> Result<Self, PdfiumError>

Creates a new PdfPagePathObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjects::add_path_object() function.

The new path will be created with an ellipse that fills the given rectangle, with the given fill and stroke settings applied. Both the stroke color and the stroke width must be provided for the ellipse to be stroked.

source

pub fn new_ellipse_at(
    document: &PdfDocument<'a>,
    center_x: PdfPoints,
    center_y: PdfPoints,
    x_radius: PdfPoints,
    y_radius: PdfPoints,
    stroke_color: Option<PdfColor>,
    stroke_width: Option<PdfPoints>,
    fill_color: Option<PdfColor>
) -> Result<Self, PdfiumError>

Creates a new PdfPagePathObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjects::add_path_object() function.

The new path will be created with an ellipse centered at the given coordinates, with the given horizontal and vertical radii, and with the given fill and stroke settings applied. Both the stroke color and the stroke width must be provided for the ellipse to be stroked.

source

pub fn move_to(&mut self, x: PdfPoints, y: PdfPoints) -> Result<(), PdfiumError>

Begins a new sub-path in this PdfPagePathObject by moving the current point to the given coordinates, omitting any connecting line segment.

source

pub fn line_to(&mut self, x: PdfPoints, y: PdfPoints) -> Result<(), PdfiumError>

Appends a straight line segment to this PdfPagePathObject from the current point to the given coordinates. The new current point is set to the given coordinates.

source

pub fn bezier_to(
    &mut self,
    x: PdfPoints,
    y: PdfPoints,
    control1_x: PdfPoints,
    control1_y: PdfPoints,
    control2_x: PdfPoints,
    control2_y: PdfPoints
) -> Result<(), PdfiumError>

Appends a cubic Bézier curve to this PdfPagePathObject from the current point to the given coordinates, using the two given Bézier control points. The new current point is set to the given coordinates.

source

pub fn rect_to(&mut self, x: PdfPoints, y: PdfPoints) -> Result<(), PdfiumError>

Appends a rectangle to this PdfPagePathObject by drawing four line segments from the current point, ending at the given coordinates. The current sub-path will be closed. The new current point is set to the given coordinates.

source

pub fn ellipse_to(
    &mut self,
    x: PdfPoints,
    y: PdfPoints
) -> Result<(), PdfiumError>

Appends an ellipse to this PdfPagePathObject by drawing four Bézier curves approximating an ellipse filling a rectangle from the current point to the given coordinates. The current sub-path will be closed. The new current point is set to the given coordinates.

source

pub fn circle_to(&mut self, x: PdfPoints, y: PdfPoints) -> Result<(), PdfiumError>

Appends a circle to this PdfPagePathObject by drawing four Bézier curves approximating a circle filling a rectangle from the current point to the given coordinates. The current sub-path will be closed. The new current point is set to the given coordinates.

Note that perfect circles cannot be represented exactly using Bézier curves. However, a very close approximation, more than sufficient to please the human eye, can be achieved using four Bézier curves, one for each quadrant of the circle.

source

pub fn close_path(&mut self) -> Result<(), PdfiumError>

Closes the current sub-path in this PdfPagePathObject by appending a straight line segment from the current point to the starting point of the sub-path.

source

pub fn fill_mode(&self) -> Result<PdfPathFillMode, PdfiumError>

Returns the method used to determine which sub-paths of any path in this PdfPagePathObject should be filled.

source

pub fn is_stroked(&self) -> Result<bool, PdfiumError>

Returns true if this PdfPagePathObject will be stroked, regardless of the path’s stroke settings.

Even if this path is set to be stroked, the stroke must be configured with a visible color and a non-zero width in order to actually be visible.

source

pub fn set_fill_and_stroke_mode(
    &mut self,
    fill_mode: PdfPathFillMode,
    do_stroke: bool
) -> Result<(), PdfiumError>

Sets the method used to determine which sub-paths of any path in this PdfPagePathObject should be filled, and whether or not any path in this PdfPagePathObject should be stroked.

Even if this object’s path is set to be stroked, the stroke must be configured with a visible color and a non-zero width in order to actually be visible.

source

pub fn segments(&self) -> PdfPagePathObjectSegments<'_>

Returns the collection of path segments currently defined by this PdfPagePathObject.

Trait Implementations§

source§

impl<'a> From<PdfPagePathObject<'a>> for PdfPageObject<'a>

source§

fn from(object: PdfPagePathObject<'a>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for PdfPagePathObject<'a>

§

impl<'a> !Send for PdfPagePathObject<'a>

§

impl<'a> !Sync for PdfPagePathObject<'a>

§

impl<'a> Unpin for PdfPagePathObject<'a>

§

impl<'a> !UnwindSafe for PdfPagePathObject<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere
    T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere
    U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<'a, T> PdfPageObjectCommon<'a> for Twhere
    T: PdfPageObjectPrivate<'a>,

source§

fn has_transparency(&self) -> bool

Returns true if this PdfPageObject contains transparency.
source§

fn bounds(&self) -> Result<PdfRect, PdfiumError>

Returns the bounding box of this PdfPageObject. Read more
source§

fn transform(
    &mut self,
    a: f64,
    b: f64,
    c: f64,
    d: f64,
    e: f64,
    f: f64
) -> Result<(), PdfiumError>

Applies the given transformation, expressed as six values representing the six configurable elements of a nine-element 3x3 PDF transformation matrix, to this PdfPageObject. Read more
source§

fn transform_from(
    &mut self,
    other: &PdfPageObject<'_>
) -> Result<(), PdfiumError>

Transforms this PdfPageObject by applying the transformation matrix read from the given PdfPageObject. Read more
source§

fn get_horizontal_translation(&self) -> PdfPoints

Returns the current horizontal translation of the origin of this PdfPageObject.
source§

fn get_vertical_translation(&self) -> PdfPoints

Returns the current vertical translation of the origin of this PdfPageObject.
source§

fn get_horizontal_scale(&self) -> f64

Returns the current horizontal scale factor applied to this PdfPageObject.
source§

fn get_vertical_scale(&self) -> f64

Returns the current vertical scale factor applied to this PdfPageObject.
source§

fn get_rotation_counter_clockwise_radians(&self) -> f32

Returns the counter-clockwise rotation applied to this PdfPageObject, in radians. Read more
source§

fn get_x_axis_skew_radians(&self) -> f32

Returns the current x axis skew applied to this PdfPageObject, in radians. Read more
source§

fn get_y_axis_skew_radians(&self) -> f32

Returns the current y axis skew applied to this PdfPageObject, in radians. Read more
source§

fn set_blend_mode(
    &mut self,
    blend_mode: PdfPageObjectBlendMode
) -> Result<(), PdfiumError>

Sets the blend mode that will be applied when painting this PdfPageObject. Read more
source§

fn fill_color(&self) -> Result<PdfColor, PdfiumError>

Returns the color of any filled paths in this PdfPageObject.
source§

fn set_fill_color(&mut self, fill_color: PdfColor) -> Result<(), PdfiumError>

Sets the color of any filled paths in this PdfPageObject.
source§

fn stroke_color(&self) -> Result<PdfColor, PdfiumError>

Returns the color of any stroked lines in this PdfPageObject.
source§

fn set_stroke_color(&mut self, stroke_color: PdfColor) -> Result<(), PdfiumError>

Sets the color of any stroked lines in this PdfPageObject. Read more
source§

fn stroke_width(&self) -> Result<PdfPoints, PdfiumError>

Returns the width of any stroked lines in this PdfPageObject.
source§

fn set_stroke_width(
    &mut self,
    stroke_width: PdfPoints
) -> Result<(), PdfiumError>

Sets the width of any stroked lines in this PdfPageObject. Read more
source§

fn line_join(&self) -> Result<PdfPageObjectLineJoin, PdfiumError>

Returns the line join style that will be used when painting stroked path segments in this PdfPageObject.
source§

fn set_line_join(
    &mut self,
    line_join: PdfPageObjectLineJoin
) -> Result<(), PdfiumError>

Sets the line join style that will be used when painting stroked path segments in this PdfPageObject.
source§

fn line_cap(&self) -> Result<PdfPageObjectLineCap, PdfiumError>

Returns the line cap style that will be used when painting stroked path segments in this PdfPageObject.
source§

fn set_line_cap(
    &mut self,
    line_cap: PdfPageObjectLineCap
) -> Result<(), PdfiumError>

Sets the line cap style that will be used when painting stroked path segments in this PdfPageObject.
source§

fn is_copyable(&self) -> bool

Returns true if this PdfPageObject can be successfully copied by calling its try_copy() function. Read more
source§

fn try_copy<'b>(
    &self,
    document: &PdfDocument<'b>
) -> Result<PdfPageObject<'b>, PdfiumError>

Attempts to copy this PdfPageObject by creating a new page object and copying across all the properties of this PdfPageObject to the new page object. Read more
source§

fn width(&self) -> Result<PdfPoints, PdfiumError>

Returns the width of this PdfPageObject.
source§

fn height(&self) -> Result<PdfPoints, PdfiumError>

Returns the height of this PdfPageObject.
source§

fn is_inside_rect(&self, rect: &PdfRect) -> bool

Returns true if the bounds of this PdfPageObject lie entirely within the given rectangle.
source§

fn does_overlap_rect(&self, rect: &PdfRect) -> bool

Returns true if the bounds of this PdfPageObject lie at least partially within the given rectangle.
source§

fn translate(
    &mut self,
    delta_x: PdfPoints,
    delta_y: PdfPoints
) -> Result<(), PdfiumError>

Moves the origin of this PdfPageObject by the given horizontal and vertical delta distances.
source§

fn get_translation(&self) -> (PdfPoints, PdfPoints)

Returns the current horizontal and vertical translation of the origin of this PdfPageObject.
source§

fn scale(
    &mut self,
    horizontal_scale_factor: f64,
    vertical_scale_factor: f64
) -> Result<(), PdfiumError>

Changes the size of this PdfPageObject, scaling it by the given horizontal and vertical scale factors.
source§

fn flip_horizontally(&mut self) -> Result<(), PdfiumError>

Flips this PdfPageObject horizontally around its origin by applying a horizontal scale factor of -1.
source§

fn flip_vertically(&mut self) -> Result<(), PdfiumError>

Flips this PdfPageObject vertically around its origin by applying a vertical scale factor of -1.
source§

fn reflect(&mut self) -> Result<(), PdfiumError>

Reflects this PdfPageObject by flipping it both horizontally and vertically around its origin.
source§

fn get_scale(&self) -> (f64, f64)

Returns the current horizontal and vertical scale factors applied to this PdfPageObject.
source§

fn rotate_counter_clockwise_degrees(
    &mut self,
    degrees: f32
) -> Result<(), PdfiumError>

Rotates this PdfPageObject counter-clockwise by the given number of degrees.
source§

fn get_rotation_counter_clockwise_degrees(&self) -> f32

Returns the counter-clockwise rotation applied to this PdfPageObject, in degrees. Read more
source§

fn rotate_clockwise_degrees(&mut self, degrees: f32) -> Result<(), PdfiumError>

Rotates this PdfPageObject clockwise by the given number of degrees.
source§

fn get_rotation_clockwise_degrees(&self) -> f32

Returns the clockwise rotation applied to this PdfPageObject, in degrees. Read more
source§

fn rotate_counter_clockwise_radians(
    &mut self,
    radians: f32
) -> Result<(), PdfiumError>

Rotates this PdfPageObject counter-clockwise by the given number of radians.
source§

fn rotate_clockwise_radians(&mut self, radians: f32) -> Result<(), PdfiumError>

Rotates this PdfPageObject clockwise by the given number of radians.
source§

fn get_rotation_clockwise_radians(&self) -> f32

Returns the clockwise rotation applied to this PdfPageObject, in radians. Read more
source§

fn skew_degrees(
    &mut self,
    x_axis_skew: f32,
    y_axis_skew: f32
) -> Result<(), PdfiumError>

Skews the axes of this PdfPageObject by the given angles in degrees.
source§

fn get_skew_degrees(&self) -> (f32, f32)

Returns the current x axis and y axis skew angles applied to this PdfPageObject, in degrees. Read more
source§

fn get_x_axis_skew_degrees(&self) -> f32

Returns the current x axis skew angle applied to this PdfPageObject, in degrees. Read more
source§

fn get_y_axis_skew_degrees(&self) -> f32

Returns the current y axis skew applied to this PdfPageObject, in degrees. Read more
source§

fn skew_radians(
    &mut self,
    x_axis_skew: f32,
    y_axis_skew: f32
) -> Result<(), PdfiumError>

Skews the axes of this PdfPageObject by the given angles in radians.
source§

fn get_skew_radians(&self) -> (f32, f32)

Returns the current x axis and y axis skew angles applied to this PdfPageObject, in radians. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for Twhere
    U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere
    U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.