mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-28 20:55:39 +00:00
9dbd03da1c
I've done a bit of job to get this done. Right now readback is still used, but we have a `LayerId` -> `CanvasRenderer` map on the paint task, that we can use to get rid of that. I'd want review, to see if this is a good approach (I know it's not the initial `CanvasId` -> renderer approach, but it's pretty similar, since a canvas involves a `PaintLayer`). I had to do a bit of refactoring to avoid cyclic dependencies between canvas and gfx. I'd want you to review them too. It's mergeable and doesn't break any tests :P Some of my main concerns: * Does the canvas render really need to be behind an `Arc<Mutex<T>>`? * I can't clone a `NativeSurface` right now (that's why the `SendNativeSurface()` msg is unimplemented in the WebGL task). It should be easy to add that to rust-layers, supposing the caller is responsible to mark it as non-leaking, any reason to not do it? cc @jdm @pcwalton Source-Repo: https://github.com/servo/servo Source-Revision: ad53e95080144485e74cd9b9d48ce75e20de4e36 --HG-- rename : servo/components/gfx/color.rs => servo/components/gfx_traits/color.rs
86 lines
1.9 KiB
Rust
86 lines
1.9 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#![feature(alloc)]
|
|
#![feature(box_syntax)]
|
|
#![feature(collections)]
|
|
#![feature(core)]
|
|
#![feature(plugin)]
|
|
#![feature(rustc_private)]
|
|
#![feature(std_misc)]
|
|
#![feature(str_char)]
|
|
|
|
#![plugin(plugins)]
|
|
|
|
#[macro_use]
|
|
extern crate log;
|
|
|
|
extern crate azure;
|
|
#[macro_use] extern crate bitflags;
|
|
extern crate collections;
|
|
extern crate geom;
|
|
extern crate layers;
|
|
extern crate libc;
|
|
extern crate stb_image;
|
|
extern crate png;
|
|
extern crate profile_traits;
|
|
extern crate script_traits;
|
|
extern crate rustc_serialize;
|
|
extern crate net_traits;
|
|
#[macro_use]
|
|
extern crate util;
|
|
extern crate msg;
|
|
extern crate rand;
|
|
extern crate string_cache;
|
|
extern crate style;
|
|
extern crate skia;
|
|
extern crate time;
|
|
extern crate url;
|
|
|
|
extern crate gfx_traits;
|
|
extern crate canvas_traits;
|
|
|
|
// Eventually we would like the shaper to be pluggable, as many operating systems have their own
|
|
// shapers. For now, however, this is a hard dependency.
|
|
extern crate harfbuzz;
|
|
|
|
// Linux and Android-specific library dependencies
|
|
#[cfg(any(target_os="linux", target_os = "android"))]
|
|
extern crate fontconfig;
|
|
|
|
#[cfg(any(target_os="linux", target_os = "android"))]
|
|
extern crate freetype;
|
|
|
|
// Mac OS-specific library dependencies
|
|
#[cfg(target_os="macos")] extern crate core_foundation;
|
|
#[cfg(target_os="macos")] extern crate core_graphics;
|
|
#[cfg(target_os="macos")] extern crate core_text;
|
|
|
|
pub use paint_context::PaintContext;
|
|
|
|
// Private painting modules
|
|
mod paint_context;
|
|
|
|
#[path="display_list/mod.rs"]
|
|
pub mod display_list;
|
|
pub mod paint_task;
|
|
|
|
// Fonts
|
|
pub mod font;
|
|
pub mod font_context;
|
|
pub mod font_cache_task;
|
|
pub mod font_template;
|
|
|
|
// Misc.
|
|
mod buffer_map;
|
|
mod filters;
|
|
|
|
// Platform-specific implementations.
|
|
#[path="platform/mod.rs"]
|
|
pub mod platform;
|
|
|
|
// Text
|
|
#[path = "text/mod.rs"]
|
|
pub mod text;
|