[librsvg: 28/43] drawing_ctx: pass colors and opacity by value
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 28/43] drawing_ctx: pass colors and opacity by value
- Date: Tue, 15 Oct 2019 00:07:50 +0000 (UTC)
commit b74ade8a51fe3a3c6e8366df8d4d3fb2ec851b8f
Author: Paolo Borelli <pborelli gnome org>
Date: Sun Oct 13 12:44:58 2019 +0200
drawing_ctx: pass colors and opacity by value
This commit also changes all the callers.
rsvg_internals/src/drawing_ctx.rs | 37 ++++++++++++++++++-----------------
rsvg_internals/src/filters/context.rs | 4 ++--
rsvg_internals/src/gradient.rs | 8 ++++----
rsvg_internals/src/paint_server.rs | 4 ++--
rsvg_internals/src/pattern.rs | 2 +-
rsvg_internals/src/text.rs | 31 +++++++++++++++--------------
6 files changed, 44 insertions(+), 42 deletions(-)
---
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 732427fd..b477153d 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -600,16 +600,16 @@ impl DrawingCtx {
fn set_color(
&self,
- color: &cssparser::Color,
- opacity: &UnitInterval,
- current_color: &cssparser::RGBA,
+ color: cssparser::Color,
+ opacity: UnitInterval,
+ current_color: cssparser::RGBA,
) {
- let rgba = match *color {
- cssparser::Color::RGBA(ref rgba) => rgba,
+ let rgba = match color {
+ cssparser::Color::RGBA(rgba) => rgba,
cssparser::Color::CurrentColor => current_color,
};
- let &UnitInterval(o) = opacity;
+ let UnitInterval(o) = opacity;
self.get_cairo_context().set_source_rgba(
f64::from(rgba.red_f32()),
f64::from(rgba.green_f32()),
@@ -632,9 +632,9 @@ impl DrawingCtx {
pub fn set_source_paint_server(
&mut self,
ps: &PaintServer,
- opacity: &UnitInterval,
+ opacity: UnitInterval,
bbox: &BoundingBox,
- current_color: &cssparser::RGBA,
+ current_color: cssparser::RGBA,
) -> Result<bool, RenderingError> {
match *ps {
PaintServer::Iri {
@@ -672,7 +672,7 @@ impl DrawingCtx {
}
if !had_paint_server && alternate.is_some() {
- self.set_color(alternate.as_ref().unwrap(), opacity, current_color);
+ self.set_color(alternate.unwrap(), opacity, current_color);
had_paint_server = true;
} else {
rsvg_log!(
@@ -685,7 +685,7 @@ impl DrawingCtx {
}
PaintServer::SolidColor(color) => {
- self.set_color(&color, opacity, current_color);
+ self.set_color(color, opacity, current_color);
Ok(true)
}
@@ -733,12 +733,15 @@ impl DrawingCtx {
// coordinate system in patterns.
let bbox = compute_stroke_and_fill_box(cr, values);
- let current_color = &values.color.0;
-
- let fill_opacity = &values.fill_opacity.0;
+ let current_color = values.color.0;
let res = self
- .set_source_paint_server(&values.fill.0, fill_opacity, &bbox, current_color)
+ .set_source_paint_server(
+ &values.fill.0,
+ values.fill_opacity.0,
+ &bbox,
+ current_color
+ )
.and_then(|had_paint_server| {
if had_paint_server {
if values.stroke.0 == PaintServer::None {
@@ -751,13 +754,11 @@ impl DrawingCtx {
Ok(())
})
.and_then(|_| {
- let stroke_opacity = values.stroke_opacity.0;
-
self.set_source_paint_server(
&values.stroke.0,
- &stroke_opacity,
+ values.stroke_opacity.0,
&bbox,
- ¤t_color,
+ current_color,
)
.and_then(|had_paint_server| {
if had_paint_server {
diff --git a/rsvg_internals/src/filters/context.rs b/rsvg_internals/src/filters/context.rs
index 6ac196c1..47733774 100644
--- a/rsvg_internals/src/filters/context.rs
+++ b/rsvg_internals/src/filters/context.rs
@@ -338,9 +338,9 @@ impl FilterContext {
let _ = draw_ctx
.set_source_paint_server(
paint_server,
- &opacity,
+ opacity,
&self.node_bbox,
- &self.computed_from_node_being_filtered.color.0,
+ self.computed_from_node_being_filtered.color.0,
)
.and_then(|had_paint_server| {
if had_paint_server {
diff --git a/rsvg_internals/src/gradient.rs b/rsvg_internals/src/gradient.rs
index 6b5a3540..6e87138f 100644
--- a/rsvg_internals/src/gradient.rs
+++ b/rsvg_internals/src/gradient.rs
@@ -695,7 +695,7 @@ impl AsPaintSource for Gradient {
self,
values: &ComputedValues,
draw_ctx: &mut DrawingCtx,
- opacity: &UnitInterval,
+ opacity: UnitInterval,
bbox: &BoundingBox,
) -> Result<bool, RenderingError> {
let params = if self.units == GradientUnits(CoordUnits::ObjectBoundingBox) {
@@ -735,7 +735,7 @@ impl Gradient {
&self,
pattern: &cairo::Gradient,
bbox: &BoundingBox,
- opacity: &UnitInterval,
+ opacity: UnitInterval,
) {
let mut affine = self.affine;
@@ -759,10 +759,10 @@ impl Gradient {
self.add_color_stops_to_pattern(pattern, opacity);
}
- fn add_color_stops_to_pattern(&self, pattern: &cairo::Gradient, opacity: &UnitInterval) {
+ fn add_color_stops_to_pattern(&self, pattern: &cairo::Gradient, opacity: UnitInterval) {
for stop in &self.stops {
let UnitInterval(stop_offset) = stop.offset;
- let &UnitInterval(o) = opacity;
+ let UnitInterval(o) = opacity;
let UnitInterval(stop_opacity) = stop.opacity;
pattern.add_color_stop_rgba(
diff --git a/rsvg_internals/src/paint_server.rs b/rsvg_internals/src/paint_server.rs
index d7c104fa..357d3506 100644
--- a/rsvg_internals/src/paint_server.rs
+++ b/rsvg_internals/src/paint_server.rs
@@ -67,7 +67,7 @@ pub trait PaintSource {
&self,
node: &RsvgNode,
draw_ctx: &mut DrawingCtx,
- opacity: &UnitInterval,
+ opacity: UnitInterval,
bbox: &BoundingBox,
) -> Result<bool, RenderingError> {
match self.resolve(&node, draw_ctx) {
@@ -103,7 +103,7 @@ pub trait AsPaintSource {
self,
values: &ComputedValues,
draw_ctx: &mut DrawingCtx,
- opacity: &UnitInterval,
+ opacity: UnitInterval,
bbox: &BoundingBox,
) -> Result<bool, RenderingError>;
}
diff --git a/rsvg_internals/src/pattern.rs b/rsvg_internals/src/pattern.rs
index a38e14a9..8edf4fe7 100644
--- a/rsvg_internals/src/pattern.rs
+++ b/rsvg_internals/src/pattern.rs
@@ -222,7 +222,7 @@ impl AsPaintSource for Pattern {
self,
values: &ComputedValues,
draw_ctx: &mut DrawingCtx,
- _opacity: &UnitInterval,
+ _opacity: UnitInterval,
bbox: &BoundingBox,
) -> Result<bool, RenderingError> {
let node_with_children = if let Some(n) = self.children.node_with_children() {
diff --git a/rsvg_internals/src/text.rs b/rsvg_internals/src/text.rs
index a3aaabbd..dd076377 100644
--- a/rsvg_internals/src/text.rs
+++ b/rsvg_internals/src/text.rs
@@ -305,34 +305,35 @@ impl PositionedSpan {
cr.rotate(-rotation);
}
- let current_color = &self.values.color.0;
-
- let fill_opacity = &self.values.fill_opacity.0;
+ let current_color = self.values.color.0;
let res = if !clipping {
- dc.set_source_paint_server(&self.values.fill.0, fill_opacity, &bbox, current_color)
- .and_then(|had_paint_server| {
- if had_paint_server {
- pangocairo::functions::update_layout(&cr, &self.layout);
- pangocairo::functions::show_layout(&cr, &self.layout);
- };
- Ok(())
- })
+ dc.set_source_paint_server(
+ &self.values.fill.0,
+ self.values.fill_opacity.0,
+ &bbox,
+ current_color,
+ )
+ .and_then(|had_paint_server| {
+ if had_paint_server {
+ pangocairo::functions::update_layout(&cr, &self.layout);
+ pangocairo::functions::show_layout(&cr, &self.layout);
+ };
+ Ok(())
+ })
} else {
Ok(())
};
if res.is_ok() {
- let stroke_opacity = &self.values.stroke_opacity.0;
-
let mut need_layout_path = clipping;
let res = if !clipping {
dc.set_source_paint_server(
&self.values.stroke.0,
- stroke_opacity,
+ self.values.stroke_opacity.0,
&bbox,
- ¤t_color,
+ current_color,
)
.and_then(|had_paint_server| {
if had_paint_server {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]