mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Implement StrokeOptions
This commit is contained in:
parent
4aad4ff858
commit
4179f91f93
2 changed files with 44 additions and 6 deletions
|
@ -366,7 +366,7 @@ pub enum StrokeOptions<'a> {
|
||||||
#[cfg(feature = "canvas2d-azure")]
|
#[cfg(feature = "canvas2d-azure")]
|
||||||
Azure(azure::azure_hl::StrokeOptions<'a>),
|
Azure(azure::azure_hl::StrokeOptions<'a>),
|
||||||
#[cfg(feature = "canvas2d-raqote")]
|
#[cfg(feature = "canvas2d-raqote")]
|
||||||
Raqote(PhantomData<&'a ()>),
|
Raqote(raqote::StrokeStyle, PhantomData<&'a ()>),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy)]
|
#[derive(Clone, Copy)]
|
||||||
|
|
|
@ -76,7 +76,7 @@ impl<'a> CanvasPaintState<'a> {
|
||||||
draw_options: DrawOptions::Raqote(raqote::DrawOptions::new()),
|
draw_options: DrawOptions::Raqote(raqote::DrawOptions::new()),
|
||||||
fill_style: Pattern::Raqote(()),
|
fill_style: Pattern::Raqote(()),
|
||||||
stroke_style: Pattern::Raqote(()),
|
stroke_style: Pattern::Raqote(()),
|
||||||
stroke_opts: StrokeOptions::Raqote(PhantomData),
|
stroke_opts: StrokeOptions::Raqote(Default::default(), PhantomData),
|
||||||
transform: Transform2D::identity(),
|
transform: Transform2D::identity(),
|
||||||
shadow_offset_x: 0.0,
|
shadow_offset_x: 0.0,
|
||||||
shadow_offset_y: 0.0,
|
shadow_offset_y: 0.0,
|
||||||
|
@ -96,16 +96,24 @@ impl Pattern {
|
||||||
|
|
||||||
impl<'a> StrokeOptions<'a> {
|
impl<'a> StrokeOptions<'a> {
|
||||||
pub fn set_line_width(&mut self, _val: f32) {
|
pub fn set_line_width(&mut self, _val: f32) {
|
||||||
unimplemented!()
|
match self {
|
||||||
|
StrokeOptions::Raqote(options, _) => options.width = _val,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
pub fn set_miter_limit(&mut self, _val: f32) {
|
pub fn set_miter_limit(&mut self, _val: f32) {
|
||||||
unimplemented!()
|
match self {
|
||||||
|
StrokeOptions::Raqote(options, _) => options.miter_limit = _val,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
pub fn set_line_join(&mut self, _val: LineJoinStyle) {
|
pub fn set_line_join(&mut self, _val: LineJoinStyle) {
|
||||||
unimplemented!()
|
match self {
|
||||||
|
StrokeOptions::Raqote(options, _) => options.join = _val.to_raqote_style(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
pub fn set_line_cap(&mut self, _val: LineCapStyle) {
|
pub fn set_line_cap(&mut self, _val: LineCapStyle) {
|
||||||
unimplemented!()
|
match self {
|
||||||
|
StrokeOptions::Raqote(options, _) => options.cap = _val.to_raqote_style(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,3 +268,33 @@ impl GenericDrawTarget for raqote::DrawTarget {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait ToRaqoteStyle {
|
||||||
|
type Target;
|
||||||
|
|
||||||
|
fn to_raqote_style(self) -> Self::Target;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToRaqoteStyle for LineJoinStyle {
|
||||||
|
type Target = raqote::LineJoin;
|
||||||
|
|
||||||
|
fn to_raqote_style(self) -> raqote::LineJoin {
|
||||||
|
match self {
|
||||||
|
LineJoinStyle::Round => raqote::LineJoin::Round,
|
||||||
|
LineJoinStyle::Bevel => raqote::LineJoin::Bevel,
|
||||||
|
LineJoinStyle::Miter => raqote::LineJoin::Miter,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToRaqoteStyle for LineCapStyle {
|
||||||
|
type Target = raqote::LineCap;
|
||||||
|
|
||||||
|
fn to_raqote_style(self) -> raqote::LineCap {
|
||||||
|
match self {
|
||||||
|
LineCapStyle::Butt => raqote::LineCap::Butt,
|
||||||
|
LineCapStyle::Round => raqote::LineCap::Round,
|
||||||
|
LineCapStyle::Square => raqote::LineCap::Square,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue