pub struct Greyscale {
pub percent: f32,
pub icc_profile: Option<IccProfileRef>,
}
Expand description
Greyscale color
Fields§
§percent: f32
§icc_profile: Option<IccProfileRef>
Implementations§
source§impl Greyscale
impl Greyscale
sourcepub fn new(percent: f32, icc_profile: Option<IccProfileRef>) -> Self
pub fn new(percent: f32, icc_profile: Option<IccProfileRef>) -> Self
Examples found in repository?
examples/shape.rs (line 55)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
fn main() {
let (doc, page1, layer1) =
PdfDocument::new("printpdf graphics test", Mm(400.0), Mm(400.0), "Layer 1");
let current_layer = doc.get_page(page1).get_layer(layer1);
// Quadratic shape. The "false" determines if the next (following)
// point is a bezier handle (for curves)
// If you want holes, simply reorder the winding of the points to be
// counterclockwise instead of clockwise.
let points1 = vec![
(Point::new(Mm(100.0), Mm(100.0)), false),
(Point::new(Mm(100.0), Mm(200.0)), false),
(Point::new(Mm(300.0), Mm(200.0)), false),
(Point::new(Mm(300.0), Mm(100.0)), false),
];
// Is the shape stroked? Is the shape closed? Is the shape filled?
let line1 = Line {
points: points1.clone(),
is_closed: true,
};
let outline_color = Color::Rgb(Rgb::new(0.75, 1.0, 0.64, None));
let dash_pattern = LineDashPattern {
dash_1: Some(20),
..Default::default()
};
// Draw first line
current_layer.set_outline_color(outline_color);
current_layer.set_outline_thickness(10.0);
current_layer.add_line(line1);
// Triangle shape
// Note: Line is invisible by default, the previous method of
// constructing a line is recommended!
let line2 = Polygon {
rings: vec![vec![
(Point::new(Mm(150.0), Mm(150.0)), false),
(Point::new(Mm(150.0), Mm(250.0)), false),
(Point::new(Mm(350.0), Mm(250.0)), false),
]],
mode: PaintMode::FillStroke,
winding_order: WindingOrder::NonZero,
};
let fill_color_2 = Color::Cmyk(Cmyk::new(0.0, 0.0, 0.0, 0.0, None));
let outline_color_2 = Color::Greyscale(Greyscale::new(0.45, None));
// More advanced graphical options
current_layer.set_overprint_stroke(true);
current_layer.set_blend_mode(BlendMode::Seperable(SeperableBlendMode::Multiply));
current_layer.set_line_dash_pattern(dash_pattern);
current_layer.set_line_cap_style(LineCapStyle::Round);
current_layer.set_line_join_style(LineJoinStyle::Round);
current_layer.set_fill_color(fill_color_2);
current_layer.set_outline_color(outline_color_2);
current_layer.set_outline_thickness(15.0);
// draw second line
current_layer.add_polygon(line2);
// quad clip - note: FIRST SET THE CLIP, then paint the path
current_layer.save_graphics_state();
let line4 = Polygon {
rings: vec![points1.clone()],
mode: PaintMode::Clip,
winding_order: WindingOrder::NonZero,
};
current_layer.add_polygon(line4);
let points5 = vec![
(Point::new(Mm(150.0), Mm(150.0)), false),
(Point::new(Mm(150.0), Mm(250.0)), false),
(Point::new(Mm(350.0), Mm(250.0)), false),
];
let line3 = Line {
points: points5.clone(),
is_closed: true,
};
let outline_color2 = Color::Rgb(Rgb::new(1.0, 0.75, 0.0, None));
current_layer.set_line_dash_pattern(LineDashPattern::default());
current_layer.set_outline_color(outline_color2);
current_layer.set_outline_thickness(5.0);
current_layer.add_line(line3);
current_layer.restore_graphics_state(); // unset clip again for further operations
// If this is successful, you should see a PDF two shapes, one rectangle
// and a dotted line
doc.save(&mut BufWriter::new(
File::create("test_graphics.pdf").unwrap(),
))
.unwrap();
}
Trait Implementations§
source§impl PartialEq for Greyscale
impl PartialEq for Greyscale
impl StructuralPartialEq for Greyscale
Auto Trait Implementations§
impl RefUnwindSafe for Greyscale
impl Send for Greyscale
impl Sync for Greyscale
impl Unpin for Greyscale
impl UnwindSafe for Greyscale
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more