mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01:00
Create a solid rectangle display list entry for the page background.
This commit is contained in:
parent
e57e2121b2
commit
10ab466e5d
4 changed files with 37 additions and 11 deletions
|
@ -6,6 +6,7 @@
|
|||
|
||||
use crate::context::LayoutContext;
|
||||
use crate::display_list::{DisplayListBuildState, StackingContextCollectionState};
|
||||
use crate::display_list::items::{self, CommonDisplayItem, DisplayItem, DisplayListSection};
|
||||
use crate::floats::SpeculatedFloatPlacement;
|
||||
use crate::flow::{Flow, FlowFlags, GetBaseFlow, ImmutableFlowUtils};
|
||||
use crate::fragment::{CoordinateSystem, FragmentBorderBoxIterator};
|
||||
|
@ -14,7 +15,7 @@ use crate::incremental::RelayoutMode;
|
|||
use crate::traversal::{AssignBSizes, AssignISizes, BubbleISizes, BuildDisplayList};
|
||||
use crate::traversal::{InorderFlowTraversal, PostorderFlowTraversal, PreorderFlowTraversal};
|
||||
use app_units::Au;
|
||||
use euclid::{Point2D, Vector2D};
|
||||
use euclid::{Point2D, Rect, Size2D, Vector2D};
|
||||
use servo_config::opts;
|
||||
use style::servo::restyle_damage::ServoRestyleDamage;
|
||||
use webrender_api::units::LayoutPoint;
|
||||
|
@ -72,11 +73,31 @@ pub fn reflow(root: &mut dyn Flow, layout_context: &LayoutContext, relayout_mode
|
|||
pub fn build_display_list_for_subtree<'a>(
|
||||
flow_root: &mut dyn Flow,
|
||||
layout_context: &'a LayoutContext,
|
||||
background_color: webrender_api::ColorF,
|
||||
client_size: Size2D<Au>,
|
||||
) -> DisplayListBuildState<'a> {
|
||||
let mut state = StackingContextCollectionState::new(layout_context.id);
|
||||
flow_root.collect_stacking_contexts(&mut state);
|
||||
|
||||
let state = DisplayListBuildState::new(layout_context, state);
|
||||
let mut state = DisplayListBuildState::new(layout_context, state);
|
||||
|
||||
// Create a base rectangle for the page background based on the root
|
||||
// background color.
|
||||
let base = state.create_base_display_item(
|
||||
Rect::new(Point2D::new(Au::new(0), Au::new(0)), client_size),
|
||||
Rect::new(Point2D::new(Au::new(0), Au::new(0)), client_size),
|
||||
flow_root.as_block().fragment.node,
|
||||
None,
|
||||
DisplayListSection::BackgroundAndBorders,
|
||||
);
|
||||
state.add_display_item(DisplayItem::Rectangle(CommonDisplayItem::new(
|
||||
base,
|
||||
webrender_api::RectangleDisplayItem {
|
||||
color: background_color,
|
||||
common: items::empty_common_item_properties(),
|
||||
},
|
||||
)));
|
||||
|
||||
let mut build_display_list = BuildDisplayList { state: state };
|
||||
build_display_list.traverse(flow_root);
|
||||
build_display_list.state
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue