mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
platform: Render all layers
This commit is contained in:
parent
9135fbdd4a
commit
b0ad3089d1
2 changed files with 28 additions and 11 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit f46557d3b3dfcb66965a73f8a00bc0be21b8d625
|
Subproject commit 988d66fa977ada783013e13187a3adfc3aa20132
|
|
@ -97,13 +97,14 @@ fn mainloop(mode: Mode, po: comm::Port<Msg>, dom_event_chan: pipes::SharedChan<E
|
||||||
let image_data = @layers::layers::BasicImageData::new(
|
let image_data = @layers::layers::BasicImageData::new(
|
||||||
Size2D(0u, 0u), 0, layers::layers::RGB24Format, ~[]);
|
Size2D(0u, 0u), 0, layers::layers::RGB24Format, ~[]);
|
||||||
let image = @layers::layers::Image::new(image_data as @layers::layers::ImageData);
|
let image = @layers::layers::Image::new(image_data as @layers::layers::ImageData);
|
||||||
let layers = @dvec::DVec();
|
|
||||||
let image_layer = @layers::layers::ImageLayer(image);
|
let image_layer = @layers::layers::ImageLayer(image);
|
||||||
let original_layer_transform = image_layer.common.transform;
|
let original_layer_transform = image_layer.common.transform;
|
||||||
image_layer.common.set_transform(original_layer_transform.scale(&800.0f32, &600.0f32, &1f32));
|
image_layer.common.set_transform(original_layer_transform.scale(&800.0f32, &600.0f32, &1f32));
|
||||||
layers.push(image_layer);
|
|
||||||
|
|
||||||
let scene = @layers::scene::Scene(layers::layers::ImageLayerKind(image_layer),
|
let root_layer = @layers::layers::ContainerLayer();
|
||||||
|
root_layer.add_child(layers::layers::ImageLayerKind(image_layer));
|
||||||
|
|
||||||
|
let scene = @layers::scene::Scene(layers::layers::ContainerLayerKind(root_layer),
|
||||||
Size2D(800.0f32, 600.0f32),
|
Size2D(800.0f32, 600.0f32),
|
||||||
identity(0.0f32));
|
identity(0.0f32));
|
||||||
|
|
||||||
|
@ -125,9 +126,12 @@ fn mainloop(mode: Mode, po: comm::Port<Msg>, dom_event_chan: pipes::SharedChan<E
|
||||||
return_surface(surfaces, move dt);
|
return_surface(surfaces, move dt);
|
||||||
lend_surface(surfaces, move sender);
|
lend_surface(surfaces, move sender);
|
||||||
|
|
||||||
|
// Iterate over the children of the container layer.
|
||||||
|
let mut current_layer_child = root_layer.first_child;
|
||||||
|
|
||||||
// Replace the image layer data with the buffer data.
|
// Replace the image layer data with the buffer data.
|
||||||
let buffers = replace(&mut surfaces.front.layer_buffer_set.buffers, ~[]);
|
let buffers = replace(&mut surfaces.front.layer_buffer_set.buffers, ~[]);
|
||||||
for buffers.eachi |i, buffer| {
|
for buffers.each |buffer| {
|
||||||
let width = buffer.rect.size.width as uint;
|
let width = buffer.rect.size.width as uint;
|
||||||
let height = buffer.rect.size.height as uint;
|
let height = buffer.rect.size.height as uint;
|
||||||
|
|
||||||
|
@ -140,12 +144,25 @@ fn mainloop(mode: Mode, po: comm::Port<Msg>, dom_event_chan: pipes::SharedChan<E
|
||||||
|
|
||||||
// Find or create an image layer.
|
// Find or create an image layer.
|
||||||
let image_layer;
|
let image_layer;
|
||||||
if i < layers.len() {
|
current_layer_child = match current_layer_child {
|
||||||
image_layer = layers[i];
|
None => {
|
||||||
image_layer.set_image(image);
|
image_layer = @layers::layers::ImageLayer(image);
|
||||||
} else {
|
root_layer.add_child(layers::layers::ImageLayerKind(image_layer));
|
||||||
image_layer = @layers::layers::ImageLayer(image);
|
None
|
||||||
}
|
}
|
||||||
|
Some(layers::layers::ImageLayerKind(existing_image_layer)) => {
|
||||||
|
image_layer = existing_image_layer;
|
||||||
|
image_layer.set_image(image);
|
||||||
|
|
||||||
|
// Move on to the next sibling.
|
||||||
|
do current_layer_child.get().with_common |common| {
|
||||||
|
common.next_sibling
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Some(_) => {
|
||||||
|
fail ~"found unexpected layer kind"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Set the layer's transform.
|
// Set the layer's transform.
|
||||||
let x = buffer.rect.origin.x as f32;
|
let x = buffer.rect.origin.x as f32;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue