[librsvg: 4/14] Return SharedImageSurface from unpremultiply()



commit c0bec8e1ece882fc0eccca2078d9142e6b3b56ac
Author: Ivan Molodetskikh <yalterz gmail com>
Date:   Sun Jul 15 13:23:26 2018 +0300

    Return SharedImageSurface from unpremultiply()

 rsvg_internals/src/filters/convolve_matrix.rs      | 3 +--
 rsvg_internals/src/filters/displacement_map.rs     | 1 -
 rsvg_internals/src/surface_utils/shared_surface.rs | 4 ++--
 3 files changed, 3 insertions(+), 5 deletions(-)
---
diff --git a/rsvg_internals/src/filters/convolve_matrix.rs b/rsvg_internals/src/filters/convolve_matrix.rs
index b63fafd6..fae97a8b 100644
--- a/rsvg_internals/src/filters/convolve_matrix.rs
+++ b/rsvg_internals/src/filters/convolve_matrix.rs
@@ -227,8 +227,7 @@ impl Filter for ConvolveMatrix {
 
         let mut input_surface = if self.preserve_alpha.get() {
             // preserve_alpha means we need to premultiply and unpremultiply the values.
-            let unpremultiplied_surface = input.surface().unpremultiply(bounds)?;
-            SharedImageSurface::new(unpremultiplied_surface)?
+            input.surface().unpremultiply(bounds)?
         } else {
             input.surface().clone()
         };
diff --git a/rsvg_internals/src/filters/displacement_map.rs b/rsvg_internals/src/filters/displacement_map.rs
index 4830cdea..e34d9de5 100644
--- a/rsvg_internals/src/filters/displacement_map.rs
+++ b/rsvg_internals/src/filters/displacement_map.rs
@@ -95,7 +95,6 @@ impl Filter for DisplacementMap {
 
         // Displacement map's values need to be non-premultiplied.
         let displacement_surface = displacement_input.surface().unpremultiply(bounds)?;
-        let displacement_surface = SharedImageSurface::new(displacement_surface)?;
 
         let scale = self.scale.get();
         let (sx, sy) = ctx.paffine().transform_distance(scale, scale);
diff --git a/rsvg_internals/src/surface_utils/shared_surface.rs 
b/rsvg_internals/src/surface_utils/shared_surface.rs
index 297e18e6..fc74b511 100644
--- a/rsvg_internals/src/surface_utils/shared_surface.rs
+++ b/rsvg_internals/src/surface_utils/shared_surface.rs
@@ -233,7 +233,7 @@ impl SharedImageSurface {
     ///
     /// HACK: this is storing unpremultiplied pixels in an ARGB32 image surface (which is supposed
     /// to be premultiplied pixels).
-    pub fn unpremultiply(&self, bounds: IRect) -> Result<ImageSurface, cairo::Status> {
+    pub fn unpremultiply(&self, bounds: IRect) -> Result<SharedImageSurface, cairo::Status> {
         let mut output_surface =
             ImageSurface::create(cairo::Format::ARgb32, self.width, self.height)?;
 
@@ -246,7 +246,7 @@ impl SharedImageSurface {
             }
         }
 
-        Ok(output_surface)
+        SharedImageSurface::new(output_surface)
     }
 
     /// Performs a convolution.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]