core: Store winding rule in Drawing
This commit is contained in:
parent
bc9e1d7c14
commit
60a3765be2
|
@ -21,6 +21,7 @@ pub struct Drawing {
|
||||||
pending_lines: Vec<DrawingLine>,
|
pending_lines: Vec<DrawingLine>,
|
||||||
cursor: (Twips, Twips),
|
cursor: (Twips, Twips),
|
||||||
fill_start: (Twips, Twips),
|
fill_start: (Twips, Twips),
|
||||||
|
winding_rule: FillRule,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Drawing {
|
impl Default for Drawing {
|
||||||
|
@ -43,6 +44,7 @@ impl Drawing {
|
||||||
pending_lines: Vec::new(),
|
pending_lines: Vec::new(),
|
||||||
cursor: (Twips::ZERO, Twips::ZERO),
|
cursor: (Twips::ZERO, Twips::ZERO),
|
||||||
fill_start: (Twips::ZERO, Twips::ZERO),
|
fill_start: (Twips::ZERO, Twips::ZERO),
|
||||||
|
winding_rule: FillRule::EvenOdd,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,6 +61,11 @@ impl Drawing {
|
||||||
pending_lines: Vec::new(),
|
pending_lines: Vec::new(),
|
||||||
cursor: (Twips::ZERO, Twips::ZERO),
|
cursor: (Twips::ZERO, Twips::ZERO),
|
||||||
fill_start: (Twips::ZERO, Twips::ZERO),
|
fill_start: (Twips::ZERO, Twips::ZERO),
|
||||||
|
winding_rule: if shape.flags.contains(swf::ShapeFlag::NON_ZERO_WINDING_RULE) {
|
||||||
|
FillRule::NonZero
|
||||||
|
} else {
|
||||||
|
FillRule::EvenOdd
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let shape: DistilledShape = shape.into();
|
let shape: DistilledShape = shape.into();
|
||||||
|
@ -80,8 +87,9 @@ impl Drawing {
|
||||||
DrawPath::Fill {
|
DrawPath::Fill {
|
||||||
style,
|
style,
|
||||||
commands,
|
commands,
|
||||||
winding_rule: _, // TODO: Add winding rule to drawing API :)
|
winding_rule,
|
||||||
} => {
|
} => {
|
||||||
|
this.set_winding_rule(winding_rule);
|
||||||
this.set_fill_style(Some(style.clone()));
|
this.set_fill_style(Some(style.clone()));
|
||||||
|
|
||||||
for command in commands {
|
for command in commands {
|
||||||
|
@ -96,6 +104,10 @@ impl Drawing {
|
||||||
this
|
this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn set_winding_rule(&mut self, rule: FillRule) {
|
||||||
|
self.winding_rule = rule;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn set_fill_style(&mut self, style: Option<FillStyle>) {
|
pub fn set_fill_style(&mut self, style: Option<FillStyle>) {
|
||||||
self.close_path();
|
self.close_path();
|
||||||
if let Some(existing) = self.current_fill.take() {
|
if let Some(existing) = self.current_fill.take() {
|
||||||
|
|
Loading…
Reference in New Issue