diff options
Diffstat (limited to 'components/layout_2020/display_list.rs')
-rw-r--r-- | components/layout_2020/display_list.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/components/layout_2020/display_list.rs b/components/layout_2020/display_list.rs index 5dc5ecb96ad..16592a8a5d0 100644 --- a/components/layout_2020/display_list.rs +++ b/components/layout_2020/display_list.rs @@ -78,6 +78,34 @@ impl Fragment { .wr .push_text(&common, rect.into(), &glyphs, t.font_key, rgba(color), None); }, + Fragment::Image(i) => { + use style::computed_values::image_rendering::T as ImageRendering; + is_contentful.0 = true; + let rect = i + .content_rect + .to_physical(i.style.writing_mode(), containing_block) + .translate(&containing_block.top_left); + let common = CommonItemProperties { + clip_rect: rect.clone().into(), + clip_id: wr::ClipId::root(builder.pipeline_id), + spatial_id: wr::SpatialId::root_scroll_node(builder.pipeline_id), + hit_info: None, + // TODO(gw): Make use of the WR backface visibility functionality. + flags: PrimitiveFlags::default(), + }; + builder.wr.push_image( + &common, + rect.into(), + match i.style.get_inherited_box().image_rendering { + ImageRendering::Auto => wr::ImageRendering::Auto, + ImageRendering::CrispEdges => wr::ImageRendering::CrispEdges, + ImageRendering::Pixelated => wr::ImageRendering::Pixelated, + }, + wr::AlphaType::PremultipliedAlpha, + i.image_key, + wr::ColorF::WHITE, + ); + }, } } } |