aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-10-06 00:40:48 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2018-10-06 01:11:55 +0200
commit784fbb2bc17d311fe3322cc48d2dca8a902161ca (patch)
tree2194d8d1bb0fbb7d7c50f3fbcc83b40bb28b3ea8 /components/script/dom/webglrenderingcontext.rs
parenta2e3dd4e8636b7125140850dc4bc95433e801e77 (diff)
downloadservo-784fbb2bc17d311fe3322cc48d2dca8a902161ca.tar.gz
servo-784fbb2bc17d311fe3322cc48d2dca8a902161ca.zip
Merge some byte swap/premultiply functions in their own crate
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r--components/script/dom/webglrenderingcontext.rs20
1 files changed, 8 insertions, 12 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 7972201b9ce..a2862831f73 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -5,7 +5,6 @@
#[cfg(feature = "webgl_backtrace")]
use backtrace::Backtrace;
use byteorder::{ByteOrder, NativeEndian, WriteBytesExt};
-use canvas_traits::canvas::{byte_swap, multiply_u8_pixel};
use canvas_traits::webgl::{DOMToTextureCommand, Parameter, WebGLCommandBacktrace};
use canvas_traits::webgl::{TexParameter, WebGLCommand, WebGLContextShareMode, WebGLError};
use canvas_traits::webgl::{WebGLFramebufferBindingRequest, WebGLMsg, WebGLMsgSender};
@@ -65,6 +64,7 @@ use js::typedarray::{TypedArray, TypedArrayElementCreator};
use net_traits::image::base::PixelFormat;
use net_traits::image_cache::ImageResponse;
use offscreen_gl_context::{GLContextAttributes, GLLimits};
+use pixels;
use script_layout_interface::HTMLCanvasDataSource;
use serde::{Deserialize, Serialize};
use servo_config::prefs::PREFS;
@@ -550,7 +550,7 @@ impl WebGLRenderingContext {
_ => unimplemented!(),
};
- byte_swap(&mut data);
+ pixels::byte_swap_colors_inplace(&mut data);
(data, size, false)
},
@@ -563,7 +563,7 @@ impl WebGLRenderingContext {
}
if let Some((mut data, size)) = canvas.fetch_all_data() {
// Pixels got from Canvas have already alpha premultiplied
- byte_swap(&mut data);
+ pixels::byte_swap_colors_inplace(&mut data);
(data, size, true)
} else {
return Ok(None);
@@ -679,15 +679,11 @@ impl WebGLRenderingContext {
match (format, data_type) {
(TexFormat::RGBA, TexDataType::UnsignedByte) => {
- for rgba in pixels.chunks_mut(4) {
- rgba[0] = multiply_u8_pixel(rgba[0], rgba[3]);
- rgba[1] = multiply_u8_pixel(rgba[1], rgba[3]);
- rgba[2] = multiply_u8_pixel(rgba[2], rgba[3]);
- }
+ pixels::premultiply_inplace(pixels);
},
(TexFormat::LuminanceAlpha, TexDataType::UnsignedByte) => {
for la in pixels.chunks_mut(2) {
- la[0] = multiply_u8_pixel(la[0], la[1]);
+ la[0] = pixels::multiply_u8_color(la[0], la[1]);
}
},
(TexFormat::RGBA, TexDataType::UnsignedShort5551) => {
@@ -707,9 +703,9 @@ impl WebGLRenderingContext {
let a = extend_to_8_bits(pix & 0x0f);
NativeEndian::write_u16(
rgba,
- ((multiply_u8_pixel(r, a) & 0xf0) as u16) << 8 |
- ((multiply_u8_pixel(g, a) & 0xf0) as u16) << 4 |
- ((multiply_u8_pixel(b, a) & 0xf0) as u16) |
+ ((pixels::multiply_u8_color(r, a) & 0xf0) as u16) << 8 |
+ ((pixels::multiply_u8_color(g, a) & 0xf0) as u16) << 4 |
+ ((pixels::multiply_u8_color(b, a) & 0xf0) as u16) |
((a & 0x0f) as u16),
);
}