mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Allow individual layers to render their own background color
Instead of relying on a scene-wide background color, all layers can now have their own background color.
This commit is contained in:
parent
d168501555
commit
fbd0b6f9d0
4 changed files with 57 additions and 55 deletions
|
@ -952,10 +952,6 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
// Render the scene.
|
||||
match self.scene.root {
|
||||
Some(ref layer) => {
|
||||
self.scene.background_color.r = layer.extra_data.borrow().background_color.r;
|
||||
self.scene.background_color.g = layer.extra_data.borrow().background_color.g;
|
||||
self.scene.background_color.b = layer.extra_data.borrow().background_color.b;
|
||||
self.scene.background_color.a = layer.extra_data.borrow().background_color.a;
|
||||
rendergl::render_scene(layer.clone(), self.context, &self.scene);
|
||||
}
|
||||
None => {}
|
||||
|
|
|
@ -6,11 +6,12 @@ use compositor_task::LayerProperties;
|
|||
use events;
|
||||
use pipeline::CompositionPipeline;
|
||||
|
||||
use azure::azure_hl::Color;
|
||||
use azure::azure_hl;
|
||||
use geom::point::TypedPoint2D;
|
||||
use geom::size::Size2D;
|
||||
use geom::rect::Rect;
|
||||
use gfx::render_task::UnusedBufferMsg;
|
||||
use layers::color::Color;
|
||||
use layers::geometry::LayerPixel;
|
||||
use layers::layers::{Layer, LayerBufferSet};
|
||||
use layers::platform::surface::NativeSurfaceMethods;
|
||||
|
@ -32,9 +33,6 @@ pub struct CompositorData {
|
|||
/// Whether an ancestor layer that receives scroll events moves this layer.
|
||||
pub scroll_policy: ScrollPolicy,
|
||||
|
||||
/// The color to use for the unrendered-content void
|
||||
pub background_color: Color,
|
||||
|
||||
/// A monotonically increasing counter that keeps track of the current epoch.
|
||||
/// add_buffer() calls that don't match the current epoch will be ignored.
|
||||
pub epoch: Epoch,
|
||||
|
@ -50,6 +48,10 @@ pub enum WantsScrollEventsFlag {
|
|||
DoesntWantScrollEvents,
|
||||
}
|
||||
|
||||
fn to_layers_color(color: &azure_hl::Color) -> Color {
|
||||
Color { r: color.r, g: color.g, b: color.b, a: color.a }
|
||||
}
|
||||
|
||||
impl CompositorData {
|
||||
pub fn new_layer(pipeline: CompositionPipeline,
|
||||
layer_properties: LayerProperties,
|
||||
|
@ -61,20 +63,23 @@ impl CompositorData {
|
|||
id: layer_properties.id,
|
||||
wants_scroll_events: wants_scroll_events,
|
||||
scroll_policy: layer_properties.scroll_policy,
|
||||
background_color: layer_properties.background_color,
|
||||
epoch: layer_properties.epoch,
|
||||
scroll_offset: TypedPoint2D(0., 0.),
|
||||
};
|
||||
|
||||
Rc::new(Layer::new(Rect::from_untyped(&layer_properties.rect),
|
||||
tile_size, new_compositor_data))
|
||||
tile_size,
|
||||
to_layers_color(&layer_properties.background_color),
|
||||
new_compositor_data))
|
||||
}
|
||||
|
||||
pub fn update_layer_except_size(layer: Rc<Layer<CompositorData>>,
|
||||
layer_properties: LayerProperties) {
|
||||
layer.extra_data.borrow_mut().epoch = layer_properties.epoch;
|
||||
layer.extra_data.borrow_mut().scroll_policy = layer_properties.scroll_policy;
|
||||
layer.extra_data.borrow_mut().background_color = layer_properties.background_color;
|
||||
|
||||
*layer.background_color.borrow_mut() = to_layers_color(&layer_properties.background_color);
|
||||
|
||||
layer.contents_changed();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue