aboutsummaryrefslogtreecommitdiffstats
path: root/components/net
diff options
context:
space:
mode:
Diffstat (limited to 'components/net')
-rw-r--r--components/net/Cargo.toml1
-rw-r--r--components/net/image_cache.rs27
-rw-r--r--components/net/lib.rs1
3 files changed, 4 insertions, 25 deletions
diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml
index ef58b6f018d..402044c1ecd 100644
--- a/components/net/Cargo.toml
+++ b/components/net/Cargo.toml
@@ -34,6 +34,7 @@ mime_guess = "1.8.0"
msg = {path = "../msg"}
net_traits = {path = "../net_traits"}
openssl = "0.9"
+pixels = {path = "../pixels"}
profile_traits = {path = "../profile_traits"}
serde = "1.0"
serde_json = "1.0"
diff --git a/components/net/image_cache.rs b/components/net/image_cache.rs
index 40ef8041ef7..ba0d679b0e3 100644
--- a/components/net/image_cache.rs
+++ b/components/net/image_cache.rs
@@ -9,6 +9,7 @@ use net_traits::image::base::{Image, ImageMetadata, PixelFormat, load_from_memor
use net_traits::image_cache::{CanRequestImages, ImageCache, ImageResponder};
use net_traits::image_cache::{ImageOrMetadataAvailable, ImageResponse, ImageState};
use net_traits::image_cache::{PendingImageId, UsePlaceholder};
+use pixels;
use servo_url::ServoUrl;
use std::collections::HashMap;
use std::collections::hash_map::Entry::{Occupied, Vacant};
@@ -52,7 +53,7 @@ fn set_webrender_image_key(webrender_api: &webrender_api::RenderApi, image: &mut
let is_opaque = match image.format {
PixelFormat::BGRA8 => {
bytes.extend_from_slice(&*image.bytes);
- premultiply(bytes.as_mut_slice())
+ pixels::premultiply_inplace(bytes.as_mut_slice())
}
PixelFormat::RGB8 => {
for bgr in image.bytes.chunks(3) {
@@ -86,30 +87,6 @@ fn set_webrender_image_key(webrender_api: &webrender_api::RenderApi, image: &mut
image.id = Some(image_key);
}
-// Returns true if the image was found to be
-// completely opaque.
-fn premultiply(data: &mut [u8]) -> bool {
- let mut is_opaque = true;
- let length = data.len();
-
- let mut i = 0;
- while i < length {
- let b = data[i + 0] as u32;
- let g = data[i + 1] as u32;
- let r = data[i + 2] as u32;
- let a = data[i + 3] as u32;
-
- data[i + 0] = (b * a / 255) as u8;
- data[i + 1] = (g * a / 255) as u8;
- data[i + 2] = (r * a / 255) as u8;
-
- i += 4;
- is_opaque = is_opaque && a == 255;
- }
-
- is_opaque
-}
-
// ======================================================================
// Aux structs and enums.
// ======================================================================
diff --git a/components/net/lib.rs b/components/net/lib.rs
index ab5c3bc74a2..285a755a9e9 100644
--- a/components/net/lib.rs
+++ b/components/net/lib.rs
@@ -27,6 +27,7 @@ extern crate mime_guess;
extern crate msg;
extern crate net_traits;
extern crate openssl;
+extern crate pixels;
#[macro_use]
extern crate profile_traits;
#[macro_use] extern crate serde;