Snap to screen pixels instead of px

This commit is contained in:
Paul Rouget 2015-10-07 16:42:17 +02:00
parent 26dd123310
commit 99cccb2193
4 changed files with 46 additions and 4 deletions

View file

@ -279,6 +279,8 @@ impl DisplayList {
layer_kind: paint_context.layer_kind, layer_kind: paint_context.layer_kind,
}; };
let pixels_per_px = paint_subcontext.screen_pixels_per_px();
if opts::get().dump_display_list_optimized { if opts::get().dump_display_list_optimized {
self.print(format!("Optimized display list. Tile bounds: {:?}", self.print(format!("Optimized display list. Tile bounds: {:?}",
paint_context.page_rect)); paint_context.page_rect));
@ -306,11 +308,11 @@ impl DisplayList {
transform.translate(positioned_kid.bounds transform.translate(positioned_kid.bounds
.origin .origin
.x .x
.to_nearest_px() as AzFloat, .to_nearest_pixel(pixels_per_px) as AzFloat,
positioned_kid.bounds positioned_kid.bounds
.origin .origin
.y .y
.to_nearest_px() as AzFloat, .to_nearest_pixel(pixels_per_px) as AzFloat,
0.0); 0.0);
positioned_kid.optimize_and_draw_into_context(&mut paint_subcontext, positioned_kid.optimize_and_draw_into_context(&mut paint_subcontext,
&new_transform, &new_transform,
@ -348,11 +350,11 @@ impl DisplayList {
transform.translate(positioned_kid.bounds transform.translate(positioned_kid.bounds
.origin .origin
.x .x
.to_nearest_px() as AzFloat, .to_nearest_pixel(pixels_per_px) as AzFloat,
positioned_kid.bounds positioned_kid.bounds
.origin .origin
.y .y
.to_nearest_px() as AzFloat, .to_nearest_pixel(pixels_per_px) as AzFloat,
0.0); 0.0);
positioned_kid.optimize_and_draw_into_context(&mut paint_subcontext, positioned_kid.optimize_and_draw_into_context(&mut paint_subcontext,
&new_transform, &new_transform,

View file

@ -292,6 +292,7 @@ flaky_cpu == linebreak_simple_a.html linebreak_simple_b.html
== percentage_height_root.html percentage_height_root_ref.html == percentage_height_root.html percentage_height_root_ref.html
== percentage_width_inline_block_a.html percentage_width_inline_block_ref.html == percentage_width_inline_block_a.html percentage_width_inline_block_ref.html
resolution=300x300,device-pixel-ratio=2 != pixel_snapping_border_a.html pixel_snapping_border_ref.html resolution=300x300,device-pixel-ratio=2 != pixel_snapping_border_a.html pixel_snapping_border_ref.html
resolution=300x300,device-pixel-ratio=2 != pixel_snapping_position_a.html pixel_snapping_position_ref.html
== png_rgba_colorspace_a.html png_rgba_colorspace_b.html == png_rgba_colorspace_a.html png_rgba_colorspace_b.html
== position_abs_cb_with_non_cb_kid_a.html position_abs_cb_with_non_cb_kid_b.html == position_abs_cb_with_non_cb_kid_a.html position_abs_cb_with_non_cb_kid_b.html
== position_abs_height_width_a.html position_abs_height_width_b.html == position_abs_height_width_a.html position_abs_height_width_b.html

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Pixel snapping position test</title>
<style>
div {
position: absolute;
height: 100px;
width: 100px;
top: 11.5px;
background: red;
transform: scale(1);
}
</style>
</head>
<body>
<div></div>
</body>
</html>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Pixel snapping position reference</title>
<style>
div {
position: absolute;
height: 100px;
width: 100px;
top: 12px;
background: red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>