mirror of
https://github.com/servo/servo.git
synced 2025-06-21 23:59:00 +01:00
added CompositorLayer::from_frame_tree
This commit is contained in:
parent
2e166fb7ca
commit
e4d44fb8d2
2 changed files with 24 additions and 22 deletions
|
@ -15,6 +15,7 @@ use windowing::{MouseWindowEvent, MouseWindowClickEvent, MouseWindowMouseDownEve
|
||||||
use compositing::quadtree::{Quadtree, Invalid};
|
use compositing::quadtree::{Quadtree, Invalid};
|
||||||
use layers::layers::{ContainerLayerKind, ContainerLayer, TextureLayerKind, TextureLayer, TextureManager};
|
use layers::layers::{ContainerLayerKind, ContainerLayer, TextureLayerKind, TextureLayer, TextureManager};
|
||||||
use pipeline::Pipeline;
|
use pipeline::Pipeline;
|
||||||
|
use constellation::{SendableChildFrameTree, SendableFrameTree};
|
||||||
|
|
||||||
/// The CompositorLayer represents an element on a page that has a unique scroll
|
/// The CompositorLayer represents an element on a page that has a unique scroll
|
||||||
/// or animation behavior. This can include absolute positioned elements, iframes, etc.
|
/// or animation behavior. This can include absolute positioned elements, iframes, etc.
|
||||||
|
@ -81,6 +82,27 @@ impl CompositorLayer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn from_frame_tree(frame_tree: SendableFrameTree, tile_size: uint, max_mem: Option<uint>) -> CompositorLayer {
|
||||||
|
let SendableFrameTree { pipeline, children } = frame_tree;
|
||||||
|
CompositorLayer {
|
||||||
|
pipeline: pipeline,
|
||||||
|
page_size: None,
|
||||||
|
scroll_offset: Point2D(0f32, 0f32),
|
||||||
|
children: (do children.consume_iter().transform |child| {
|
||||||
|
let SendableChildFrameTree { frame_tree, rect } = child;
|
||||||
|
let container = @mut ContainerLayer();
|
||||||
|
container.scissor = rect;
|
||||||
|
CompositorLayerChild {
|
||||||
|
child: ~CompositorLayer::from_frame_tree(frame_tree, tile_size, max_mem),
|
||||||
|
container: container,
|
||||||
|
}
|
||||||
|
}).collect(),
|
||||||
|
quadtree: NoTree(tile_size, max_mem),
|
||||||
|
root_layer: @mut ContainerLayer(),
|
||||||
|
hidden: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Move the layer by as relative specified amount in page coordinates. Does not change
|
// Move the layer by as relative specified amount in page coordinates. Does not change
|
||||||
// the position of the layer relative to its parent. This also takes in a cursor position
|
// the position of the layer relative to its parent. This also takes in a cursor position
|
||||||
// to see if the mouse is over child layers first. If a layer successfully scrolled, returns
|
// to see if the mouse is over child layers first. If a layer successfully scrolled, returns
|
||||||
|
|
|
@ -22,7 +22,7 @@ use servo_net::image_cache_task::{ImageCacheTask, ImageCacheTaskClient};
|
||||||
use servo_net::resource_task::ResourceTask;
|
use servo_net::resource_task::ResourceTask;
|
||||||
use servo_net::resource_task;
|
use servo_net::resource_task;
|
||||||
use servo_util::time::ProfilerChan;
|
use servo_util::time::ProfilerChan;
|
||||||
use std::hashmap::{HashMap, HashSet};
|
use std::hashmap::HashMap;
|
||||||
use std::util::replace;
|
use std::util::replace;
|
||||||
use extra::future::from_value;
|
use extra::future::from_value;
|
||||||
|
|
||||||
|
@ -361,26 +361,6 @@ impl Constellation {
|
||||||
self.pipelines.insert(pipeline.id, pipeline);
|
self.pipelines.insert(pipeline.id, pipeline);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
FrameRectMsg(pipeline_id, subpage_id, rect) => {
|
|
||||||
let frame_trees: ~[@mut FrameTree] = {
|
|
||||||
let matching_navi_frames = self.navigation_context.find_all(pipeline_id);
|
|
||||||
let matching_pending_frames = do self.pending_frames.iter().filter_map |frame_change| {
|
|
||||||
frame_change.after.find_mut(pipeline_id)
|
|
||||||
};
|
|
||||||
matching_navi_frames.consume_iter().chain_(matching_pending_frames).collect()
|
|
||||||
};
|
|
||||||
let mut subframes = HashSet::new();
|
|
||||||
for self.current_frame().find(pipeline_id).iter().advance |subframe| {
|
|
||||||
self.compositor_chan.send(ResizeLayerMsg(
|
|
||||||
}
|
|
||||||
if self.current_frame().contains(pipeline_id) {
|
|
||||||
self.compositor_chan.send(ResizeLayerMsg(pipeline_
|
|
||||||
}
|
|
||||||
let frame_trees = self.navigation_context.find_all(pipeline_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
LoadIframeUrlMsg(url, source_pipeline_id, subpage_id, size_future) => {
|
LoadIframeUrlMsg(url, source_pipeline_id, subpage_id, size_future) => {
|
||||||
// A message from the script associated with pipeline_id that it has
|
// A message from the script associated with pipeline_id that it has
|
||||||
// parsed an iframe during html parsing. This iframe will result in a
|
// parsed an iframe during html parsing. This iframe will result in a
|
||||||
|
@ -446,7 +426,7 @@ impl Constellation {
|
||||||
} else {
|
} else {
|
||||||
pipeline.load(url, None);
|
pipeline.load(url, None);
|
||||||
}
|
}
|
||||||
let rect = self.pending_sizes.pop((source_pipeline_id, subpage_id));
|
let rect = self.pending_sizes.pop(&(source_pipeline_id, subpage_id));
|
||||||
for frame_tree in frame_trees.iter() {
|
for frame_tree in frame_trees.iter() {
|
||||||
frame_tree.children.push(ChildFrameTree {
|
frame_tree.children.push(ChildFrameTree {
|
||||||
frame_tree: @mut FrameTree {
|
frame_tree: @mut FrameTree {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue