pub trait PdfPageObjectCommon<'a> {
Show 48 methods fn has_transparency(&self) -> bool; fn bounds(&self) -> Result<PdfRect, PdfiumError>; fn transform(
        &mut self,
        a: f64,
        b: f64,
        c: f64,
        d: f64,
        e: f64,
        f: f64
    ) -> Result<(), PdfiumError>; fn transform_from(
        &mut self,
        other: &PdfPageObject<'_>
    ) -> Result<(), PdfiumError>; fn get_horizontal_translation(&self) -> PdfPoints; fn get_vertical_translation(&self) -> PdfPoints; fn get_horizontal_scale(&self) -> f64; fn get_vertical_scale(&self) -> f64; fn get_rotation_counter_clockwise_radians(&self) -> f32; fn get_x_axis_skew_radians(&self) -> f32; fn get_y_axis_skew_radians(&self) -> f32; fn set_blend_mode(
        &mut self,
        blend_mode: PdfPageObjectBlendMode
    ) -> Result<(), PdfiumError>; fn fill_color(&self) -> Result<PdfColor, PdfiumError>; fn set_fill_color(&mut self, fill_color: PdfColor) -> Result<(), PdfiumError>; fn stroke_color(&self) -> Result<PdfColor, PdfiumError>; fn set_stroke_color(
        &mut self,
        stroke_color: PdfColor
    ) -> Result<(), PdfiumError>; fn stroke_width(&self) -> Result<PdfPoints, PdfiumError>; fn set_stroke_width(
        &mut self,
        stroke_width: PdfPoints
    ) -> Result<(), PdfiumError>; fn line_join(&self) -> Result<PdfPageObjectLineJoin, PdfiumError>; fn set_line_join(
        &mut self,
        line_join: PdfPageObjectLineJoin
    ) -> Result<(), PdfiumError>; fn line_cap(&self) -> Result<PdfPageObjectLineCap, PdfiumError>; fn set_line_cap(
        &mut self,
        line_cap: PdfPageObjectLineCap
    ) -> Result<(), PdfiumError>; fn is_copyable(&self) -> bool; fn try_copy<'b>(
        &self,
        document: &PdfDocument<'b>
    ) -> Result<PdfPageObject<'b>, PdfiumError>; fn width(&self) -> Result<PdfPoints, PdfiumError> { ... } fn height(&self) -> Result<PdfPoints, PdfiumError> { ... } fn is_inside_rect(&self, rect: &PdfRect) -> bool { ... } fn does_overlap_rect(&self, rect: &PdfRect) -> bool { ... } fn translate(
        &mut self,
        delta_x: PdfPoints,
        delta_y: PdfPoints
    ) -> Result<(), PdfiumError> { ... } fn get_translation(&self) -> (PdfPoints, PdfPoints) { ... } fn scale(
        &mut self,
        horizontal_scale_factor: f64,
        vertical_scale_factor: f64
    ) -> Result<(), PdfiumError> { ... } fn flip_horizontally(&mut self) -> Result<(), PdfiumError> { ... } fn flip_vertically(&mut self) -> Result<(), PdfiumError> { ... } fn reflect(&mut self) -> Result<(), PdfiumError> { ... } fn get_scale(&self) -> (f64, f64) { ... } fn rotate_counter_clockwise_degrees(
        &mut self,
        degrees: f32
    ) -> Result<(), PdfiumError> { ... } fn get_rotation_counter_clockwise_degrees(&self) -> f32 { ... } fn rotate_clockwise_degrees(
        &mut self,
        degrees: f32
    ) -> Result<(), PdfiumError> { ... } fn get_rotation_clockwise_degrees(&self) -> f32 { ... } fn rotate_counter_clockwise_radians(
        &mut self,
        radians: f32
    ) -> Result<(), PdfiumError> { ... } fn rotate_clockwise_radians(
        &mut self,
        radians: f32
    ) -> Result<(), PdfiumError> { ... } fn get_rotation_clockwise_radians(&self) -> f32 { ... } fn skew_degrees(
        &mut self,
        x_axis_skew: f32,
        y_axis_skew: f32
    ) -> Result<(), PdfiumError> { ... } fn get_skew_degrees(&self) -> (f32, f32) { ... } fn get_x_axis_skew_degrees(&self) -> f32 { ... } fn get_y_axis_skew_degrees(&self) -> f32 { ... } fn skew_radians(
        &mut self,
        x_axis_skew: f32,
        y_axis_skew: f32
    ) -> Result<(), PdfiumError> { ... } fn get_skew_radians(&self) -> (f32, f32) { ... }
}
Expand description

Functionality common to all PdfPageObject objects, regardless of their PdfPageObjectType.

Required Methods§

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.

For text objects, the bottom of the bounding box is set to the font baseline. Any characters in the text object that have glyph shapes that descends below the font baseline will extend beneath the bottom of this bounding box. To measure the distance of the maximum descent of any glyphs, use the PdfPageTextObject::descent() function.

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.

To move, scale, rotate, or skew a PdfPageObject, consider using one or more of the following functions. Internally they all use PdfPageObjectCommon::transform(), but are probably easier to use (and certainly clearer in their intent) in most situations.

The order in which transformations are applied is significant. For example, the result of rotating then translating a page object may be vastly different from translating then rotating the same page object. In general, to obtain the expected results, transformations should be performed in the following order:

  • Scale and/or skew
  • Rotate
  • Translate

An overview of PDF transformation matrices can be found in the PDF Reference Manual version 1.7 on page 204; a detailed description can be founded in section 4.2.3 on page 207.

source

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

Transforms this PdfPageObject by applying the transformation matrix read from the given PdfPageObject.

Any translation, rotation, scaling, or skewing transformations currently applied to the given PdfPageObject will be immediately applied to this PdfPageObject.

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.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

source

fn get_x_axis_skew_radians(&self) -> f32

Returns the current x axis skew applied to this PdfPageObject, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

source

fn get_y_axis_skew_radians(&self) -> f32

Returns the current y axis skew applied to this PdfPageObject, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

source

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

Sets the blend mode that will be applied when painting this PdfPageObject.

Note that Pdfium does not currently expose a function to read the currently set blend mode.

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.

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

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.

A line width of 0 denotes the thinnest line that can be rendered at device resolution: 1 device pixel wide. However, some devices cannot reproduce 1-pixel lines, and on high-resolution devices, they are nearly invisible. Since the results of rendering such zero-width lines are device-dependent, their use is not recommended.

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

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.

Not all page objects can be successfully copied. The following restrictions apply:

  • For path objects, it is not possible to copy a path object that contains a Bézier path segment, because Pdfium does not currently provide any way to retrieve the control points of a Bézier curve of an existing path object.
  • For text objects, the font used by the object must be present in the destination document, or text rendering behaviour will be unpredictable. While text objects refer to fonts, font data is embedded into documents separately from text objects.
  • For image objects, Pdfium allows iterating over the list of image filters applied to an image object, but currently provides no way to set a new object’s image filters. As a result, it is not possible to copy an image object that has any image filters applied.

Pdfium currently allows setting the blend mode for a page object, but provides no way to retrieve an object’s current blend mode. As a result, the blend mode setting of the original object will not be transferred to the copy.

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.

Not all page objects can be successfully copied. The following restrictions apply:

  • For path objects, it is not possible to copy a path object that contains a Bézier path segment, because Pdfium does not currently provide any way to retrieve the control points of a Bézier curve of an existing path object.
  • For text objects, the font used by the object must be present in the destination document, or text rendering behaviour will be unpredictable. While text objects refer to fonts, font data is embedded into documents separately from text objects.
  • For image objects, Pdfium allows iterating over the list of image filters applied to an image object, but currently provides no way to set a new object’s image filters. As a result, it is not possible to copy an image object that has any image filters applied.

Pdfium currently allows setting the blend mode for a page object, but provides no way to retrieve an object’s current blend mode. As a result, the blend mode setting of the original object will not be transferred to the copy.

The returned page object will be detached from any existing PdfPage. Its lifetime will be bound to the lifetime of the given destination PdfDocument.

Provided Methods§

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.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

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.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

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.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

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.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

source

fn get_x_axis_skew_degrees(&self) -> f32

Returns the current x axis skew angle applied to this PdfPageObject, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

source

fn get_y_axis_skew_degrees(&self) -> f32

Returns the current y axis skew applied to this PdfPageObject, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

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.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Implementors§

source§

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