Files
ladybird/Tests/LibWeb/Ref/input/wpt-import/css/css-images/object-fit-none-png-002i.html
InvalidUsernameException d76f841994 LibWeb: Do not deform bitmaps partially outside the img-box
Instead of trying to manually determine which parts of a bitmap fall
within the box of the `<img>` element, just draw the whole bitmap and
let Skia clip the draw-area to the correct rectangle.

This fixes a bug where the entire bitmap was squashed into the rectangle
of the image box instead of being clipped.

With this change, image rendering is now correct enough to import some
of the WPT tests for object-fit and object-position. To get some good
coverage I have imported all tests for the `<img>` tag. I also wanted to
import a subset of the tests for the `<object>` tag, since those are
passing as well now. Unfortunately, they are flaky for unknown reasons.

This is the second attempt at this bugfix. The prior one was e055927ead
and broke image rendering whenever the page was scrolled. It has
subsequently been reverted in 16b14273d1. Hopefully this time it is not
horribly broken.
2025-03-10 17:14:13 +01:00

78 lines
2.7 KiB
HTML

<!DOCTYPE html>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<html>
<head>
<meta charset="utf-8">
<title>CSS Test: 'object-fit: none' on img element, with a PNG image and with various 'object-position' values</title>
<link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
<link rel="help" href="http://www.w3.org/TR/css3-images/#sizing">
<link rel="help" href="http://www.w3.org/TR/css3-images/#the-object-fit">
<link rel="help" href="http://www.w3.org/TR/css3-images/#the-object-position">
<link rel="match" href="../../../../expected/wpt-import/css/css-images/object-fit-none-png-002-ref.html">
<style type="text/css">
img {
border: 1px dashed gray;
padding: 1px;
object-fit: none;
image-rendering: crisp-edges;
float: left;
}
.bigWide {
width: 48px;
height: 32px;
}
.bigTall {
width: 32px;
height: 48px;
}
.small {
width: 8px;
height: 8px;
}
br { clear: both; }
.tr { object-position: top right }
.bl { object-position: bottom left }
.tl { object-position: top 25% left 25% }
.br { object-position: bottom 1px right 2px }
.tc { object-position: top 3px left 50% }
.cr { object-position: top 50% right 25% }
</style>
</head>
<body>
<!-- big/wide: -->
<img src="support/colors-8x16.png" class="bigWide tr">
<img src="support/colors-8x16.png" class="bigWide bl">
<img src="support/colors-8x16.png" class="bigWide tl">
<img src="support/colors-8x16.png" class="bigWide br">
<img src="support/colors-8x16.png" class="bigWide tc">
<img src="support/colors-8x16.png" class="bigWide cr">
<img src="support/colors-8x16.png" class="bigWide">
<br>
<!-- big/tall: -->
<img src="support/colors-8x16.png" class="bigTall tr">
<img src="support/colors-8x16.png" class="bigTall bl">
<img src="support/colors-8x16.png" class="bigTall tl">
<img src="support/colors-8x16.png" class="bigTall br">
<img src="support/colors-8x16.png" class="bigTall tc">
<img src="support/colors-8x16.png" class="bigTall cr">
<img src="support/colors-8x16.png" class="bigTall">
<br>
<!-- small: -->
<img src="support/colors-8x16.png" class="small tr">
<img src="support/colors-8x16.png" class="small bl">
<img src="support/colors-8x16.png" class="small tl">
<img src="support/colors-8x16.png" class="small br">
<img src="support/colors-8x16.png" class="small tc">
<img src="support/colors-8x16.png" class="small cr">
<img src="support/colors-8x16.png" class="small">
<br>
</body>
</html>