[librsvg: 8/36] mask: remove interior mutability
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 8/36] mask: remove interior mutability
- Date: Mon, 1 Jul 2019 01:54:18 +0000 (UTC)
commit 5072ef45236d788739758607e03e7f253ad239e1
Author: Paolo Borelli <pborelli gnome org>
Date: Sun Jun 30 13:30:28 2019 +0200
mask: remove interior mutability
rsvg_internals/src/mask.rs | 60 +++++++++++++++++++++++-----------------------
1 file changed, 30 insertions(+), 30 deletions(-)
---
diff --git a/rsvg_internals/src/mask.rs b/rsvg_internals/src/mask.rs
index a859a15a..e5a50947 100644
--- a/rsvg_internals/src/mask.rs
+++ b/rsvg_internals/src/mask.rs
@@ -1,6 +1,5 @@
use cairo::{self, MatrixTrait};
use markup5ever::local_name;
-use std::cell::Cell;
use crate::bbox::BoundingBox;
use crate::coord_units::CoordUnits;
@@ -24,27 +23,26 @@ coord_units!(MaskUnits, CoordUnits::ObjectBoundingBox);
coord_units!(MaskContentUnits, CoordUnits::UserSpaceOnUse);
pub struct NodeMask {
- x: Cell<LengthHorizontal>,
- y: Cell<LengthVertical>,
- width: Cell<LengthHorizontal>,
- height: Cell<LengthVertical>,
+ x: LengthHorizontal,
+ y: LengthVertical,
+ width: LengthHorizontal,
+ height: LengthVertical,
- units: Cell<MaskUnits>,
- content_units: Cell<MaskContentUnits>,
+ units: MaskUnits,
+ content_units: MaskContentUnits,
}
impl Default for NodeMask {
fn default() -> NodeMask {
NodeMask {
// these values are per the spec
- x: Cell::new(LengthHorizontal::parse_str("-10%").unwrap()),
- y: Cell::new(LengthVertical::parse_str("-10%").unwrap()),
+ x: LengthHorizontal::parse_str("-10%").unwrap(),
+ y: LengthVertical::parse_str("-10%").unwrap(),
+ width: LengthHorizontal::parse_str("120%").unwrap(),
+ height: LengthVertical::parse_str("120%").unwrap(),
- width: Cell::new(LengthHorizontal::parse_str("120%").unwrap()),
- height: Cell::new(LengthVertical::parse_str("120%").unwrap()),
-
- units: Cell::new(MaskUnits::default()),
- content_units: Cell::new(MaskContentUnits::default()),
+ units: MaskUnits::default(),
+ content_units: MaskContentUnits::default(),
}
}
}
@@ -70,8 +68,8 @@ impl NodeMask {
let mask_content_surface = draw_ctx.create_surface_for_toplevel_viewport()?;
- let mask_units = CoordUnits::from(self.units.get());
- let content_units = CoordUnits::from(self.content_units.get());
+ let mask_units = CoordUnits::from(self.units);
+ let content_units = CoordUnits::from(self.content_units);
let (x, y, w, h) = {
let params = if mask_units == CoordUnits::ObjectBoundingBox {
@@ -80,10 +78,10 @@ impl NodeMask {
draw_ctx.get_view_params()
};
- let x = self.x.get().normalize(&values, ¶ms);
- let y = self.y.get().normalize(&values, ¶ms);
- let w = self.width.get().normalize(&values, ¶ms);
- let h = self.height.get().normalize(&values, ¶ms);
+ let x = self.x.normalize(&values, ¶ms);
+ let y = self.y.normalize(&values, ¶ms);
+ let w = self.width.normalize(&values, ¶ms);
+ let h = self.height.normalize(&values, ¶ms);
(x, y, w, h)
};
@@ -191,16 +189,18 @@ impl NodeTrait for NodeMask {
fn set_atts(&mut self, _: Option<&RsvgNode>, pbag: &PropertyBag<'_>) -> NodeResult {
for (attr, value) in pbag.iter() {
match attr {
- local_name!("x") => self.x.set(attr.parse(value)?),
- local_name!("y") => self.y.set(attr.parse(value)?),
- local_name!("width") => self
- .width
- .set(attr.parse_and_validate(value, LengthHorizontal::check_nonnegative)?),
- local_name!("height") => self
- .height
- .set(attr.parse_and_validate(value, LengthVertical::check_nonnegative)?),
- local_name!("maskUnits") => self.units.set(attr.parse(value)?),
- local_name!("maskContentUnits") => self.content_units.set(attr.parse(value)?),
+ local_name!("x") => self.x = attr.parse(value)?,
+ local_name!("y") => self.y = attr.parse(value)?,
+ local_name!("width") => {
+ self.width =
+ attr.parse_and_validate(value, LengthHorizontal::check_nonnegative)?
+ }
+ local_name!("height") => {
+ self.height =
+ attr.parse_and_validate(value, LengthVertical::check_nonnegative)?
+ }
+ local_name!("maskUnits") => self.units = attr.parse(value)?,
+ local_name!("maskContentUnits") => self.content_units = attr.parse(value)?,
_ => (),
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]