mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Auto merge of #15899 - glennw:wr-update-premultiply, r=nox
Update WR (pre-multiplied alpha) <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/15899) <!-- Reviewable:end -->
This commit is contained in:
commit
b97b0fd7cc
7 changed files with 26 additions and 5 deletions
|
@ -1327,7 +1327,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
}
|
||||
|
||||
fn update_page_zoom_for_webrender(&mut self) {
|
||||
let page_zoom = webrender_traits::PageZoomFactor::new(self.page_zoom.get());
|
||||
let page_zoom = webrender_traits::ZoomFactor::new(self.page_zoom.get());
|
||||
self.webrender_api.set_page_zoom(page_zoom);
|
||||
}
|
||||
|
||||
|
|
|
@ -336,6 +336,21 @@ fn get_placeholder_image(webrender_api: &webrender_traits::RenderApi) -> io::Res
|
|||
Ok(Arc::new(image))
|
||||
}
|
||||
|
||||
fn premultiply(data: &mut [u8]) {
|
||||
let length = data.len();
|
||||
|
||||
for i in (0..length).step_by(4) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
impl ImageCache {
|
||||
fn run(webrender_api: webrender_traits::RenderApi,
|
||||
ipc_command_receiver: IpcReceiver<ImageCacheCommand>) {
|
||||
|
@ -484,6 +499,9 @@ impl ImageCache {
|
|||
let format = convert_format(image.format);
|
||||
let mut bytes = Vec::new();
|
||||
bytes.extend_from_slice(&*image.bytes);
|
||||
if format == webrender_traits::ImageFormat::RGBA8 {
|
||||
premultiply(bytes.as_mut_slice());
|
||||
}
|
||||
let descriptor = webrender_traits::ImageDescriptor {
|
||||
width: image.width,
|
||||
height: image.height,
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#![deny(unsafe_code)]
|
||||
#![feature(box_syntax)]
|
||||
#![feature(mpsc_select)]
|
||||
#![feature(step_by)]
|
||||
|
||||
extern crate brotli;
|
||||
extern crate cookie as cookie_rs;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue