Struct raqote::DrawOptions
source · pub struct DrawOptions {
pub blend_mode: BlendMode,
pub alpha: f32,
pub antialias: AntialiasMode,
}
Fields§
§blend_mode: BlendMode
§alpha: f32
§antialias: AntialiasMode
Implementations§
source§impl DrawOptions
impl DrawOptions
sourcepub fn new() -> Self
pub fn new() -> Self
Examples found in repository?
examples/stroke.rs (line 19)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
fn main() {
let mut dt = DrawTarget::new(400, 400);
let mut pb = PathBuilder::new();
pb.move_to(200., 200.);
pb.line_to(300., 300.);
pb.line_to(200., 300.);
let path = pb.finish();
dt.stroke(
&path,
&Source::Solid(SolidSource::from_unpremultiplied_argb(0xFF, 0, 0x80, 0)),
&StrokeStyle {
width: 100000., // <--
..StrokeStyle::default()
},
&DrawOptions::new(),
);
dt.write_png("out.png").unwrap();
}
More examples
examples/stroke-arc.rs (line 19)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
fn main() {
let mut dt = DrawTarget::new(400, 400);
let mut pb = PathBuilder::new();
pb.arc(0., 0., 20., 0., std::f32::consts::PI);
let path = pb.finish();
dt.set_transform(&Transform::translation(50., 50.));
dt.stroke(
&path,
&Source::Solid(SolidSource::from_unpremultiplied_argb(0xFF, 0, 0x80, 0)),
&StrokeStyle {
width: 40., // <--
..StrokeStyle::default()
},
&DrawOptions::new(),
);
dt.write_png("out.png").unwrap();
}
examples/sweep-gradient.rs (line 32)
1 2 3 4 5 6 7 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
fn main() {
use raqote::*;
let mut dt = DrawTarget::new(400, 400);
let mut pb = PathBuilder::new();
pb.rect(0., 0., 400., 400.);
let path = pb.finish();
let gradient = Source::new_sweep_gradient(
Gradient {
stops: vec![
GradientStop {
position: 0.,
color: Color::new(0xff, 0, 0, 0),
},
GradientStop {
position: 0.5,
color: Color::new(0xff, 0xff, 0xff, 0x0),
},
GradientStop {
position: 1.,
color: Color::new(0xff, 0, 0, 0x0),
},
],
},
Point::new(150., 200.),
45.,
180.+45.,
Spread::Repeat,
);
dt.fill(&path, &gradient, &DrawOptions::new());
dt.write_png("example.png");
}
examples/text.rs (line 31)
6 7 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
fn main() {
let mut dt = DrawTarget::new(300, 100);
dt.clear(SolidSource::from_unpremultiplied_argb(
0xff, 0xcf, 0xcf, 0xcf,
));
let font = SystemSource::new()
.select_best_match(
&[FamilyName::Title("Roboto".into())],
&Properties::new().weight(Weight::MEDIUM),
)
.unwrap()
.load()
.unwrap();
println!("{:?}", font);
//dt.set_transform(&Transform::create_translation(50.0, 0.0));
dt.set_transform(&Transform::rotation(euclid::Angle::degrees(15.0)));
let font = font_kit::loader::Loader::from_file(&mut std::fs::File::open("res/Box3.ttf").unwrap(), 0).unwrap();
dt.draw_text(
&font,
30.,
"3",
Point::new(0., 30.),
&Source::Solid(SolidSource::from_unpremultiplied_argb(255, 0, 180, 0)),
&DrawOptions::new(),
);
dt.fill_rect(0., 35., 40., 5., &Source::Solid(SolidSource::from_unpremultiplied_argb(255, 0, 180, 0)),
&DrawOptions::new() );
dt.write_png("out.png").unwrap();
}
examples/capabilities.rs (line 36)
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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
fn main() {
let mut dt = DrawTarget::new(400, 400);
let mut pb = PathBuilder::new();
pb.move_to(340., 190.);
pb.arc(160., 190., 180., 0., 2. * 3.14159);
pb.close();
let path = pb.finish();
dt.push_clip(&path);
let mut pb = PathBuilder::new();
pb.move_to(0., 0.);
pb.line_to(200., 0.);
pb.line_to(200., 300.);
pb.line_to(0., 300.);
pb.close();
let path = pb.finish();
dt.fill(
&path,
&Source::Solid(SolidSource {
r: 0x80,
g: 0x80,
b: 0,
a: 0x80,
}),
&DrawOptions::new(),
);
let mut pb = PathBuilder::new();
pb.move_to(50., 50.);
pb.line_to(100., 70.);
pb.line_to(110., 150.);
pb.line_to(40., 180.);
pb.close();
/*
dt.move_to(100., 10.);
dt.quad_to(150., 40., 200., 10.);
dt.quad_to(120., 100., 80., 200.);
dt.quad_to(150., 180., 200., 200.);
dt.close();
*/
pb.move_to(100., 10.);
pb.cubic_to(150., 40., 175., 0., 200., 10.);
pb.quad_to(120., 100., 80., 200.);
pb.quad_to(150., 180., 200., 200.);
pb.close();
let path = pb.finish();
let decoder = png::Decoder::new(File::open("photo.png").unwrap());
let mut reader = decoder.read_info().unwrap();
let mut buf = vec![0; reader.output_buffer_size()];
let info = reader.next_frame(&mut buf).unwrap();
println!("{:?}", info.color_type);
let mut image: Vec<u32> = Vec::new();
for i in buf.chunks(3) {
image.push(0xff << 24 | ((i[0] as u32) << 16) | ((i[1] as u32) << 8) | (i[2] as u32))
}
let _bitmap = Image {
width: info.width as i32,
height: info.height as i32,
data: &image[..],
};
//dt.fill(Source::Solid(SolidSource{r: 0xff, g: 0xff, b: 0, a: 0xff}));
//dt.fill(Source::Bitmap(bitmap, Transform::create_scale(2., 2.)));
let gradient = Source::RadialGradient(
Gradient {
stops: vec![
GradientStop {
position: 0.2,
color: Color::new(0xff, 0x00, 0xff, 0x00),
},
GradientStop {
position: 0.8,
color: Color::new(0xff, 0xff, 0xff, 0xff),
},
GradientStop {
position: 1.,
color: Color::new(0xff, 0xff, 0x00, 0xff),
},
],
},
Spread::Pad,
Transform::translation(-150., -150.),
);
dt.fill(&path, &gradient, &DrawOptions::new());
let mut pb = PathBuilder::new();
pb.move_to(200., 200.);
pb.line_to(300., 300.);
pb.line_to(200., 300.);
let path = pb.finish();
dt.stroke(
&path,
&gradient,
&StrokeStyle {
cap: LineCap::Butt,
join: LineJoin::Bevel,
width: 10.,
miter_limit: 2.,
dash_array: vec![10., 5.],
dash_offset: 3.,
},
&DrawOptions::new(),
);
let font = SystemSource::new()
.select_best_match(&[FamilyName::SansSerif], &Properties::new())
.unwrap()
.load()
.unwrap();
dt.draw_text(
&font,
24.,
"Hello",
Point::new(0., 100.),
&Source::Solid(SolidSource {
r: 0,
g: 0,
b: 0xff,
a: 0xff,
}),
&DrawOptions::new(),
);
dt.write_png("out.png").unwrap();
}
Trait Implementations§
source§impl Clone for DrawOptions
impl Clone for DrawOptions
source§fn clone(&self) -> DrawOptions
fn clone(&self) -> DrawOptions
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for DrawOptions
impl Debug for DrawOptions
source§impl Default for DrawOptions
impl Default for DrawOptions
source§impl PartialEq for DrawOptions
impl PartialEq for DrawOptions
source§fn eq(&self, other: &DrawOptions) -> bool
fn eq(&self, other: &DrawOptions) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl Copy for DrawOptions
impl StructuralPartialEq for DrawOptions
Auto Trait Implementations§
impl Freeze for DrawOptions
impl RefUnwindSafe for DrawOptions
impl Send for DrawOptions
impl Sync for DrawOptions
impl Unpin for DrawOptions
impl UnwindSafe for DrawOptions
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