Files
ladybird/Tests/LibWeb/Screenshot/input/object-fit-position.html
Jelle Raaijmakers 3f6cbeb87e LibGfx+LibWeb: Use mipmaps for downscaling images
This changes Gfx::ScalingMode to reflect the three modes of scaling we
support using Skia, which makes it a bit easier to reason about the mode
to select. New is ::BilinearMipmap, which uses linear interpolation
between mipmap levels to produce higher quality downscaled images.

The cubic resampling options Mitchell and its sibling CatmullRom both
produced weird artifacts or resulted in a worse quality than
BilinearMipmap when downscaling. We might not have been using these
correctly, but the new ::BilinearMipmap method seems to mirror what
Chrome uses for downscaled images.
2025-11-12 15:59:01 +01:00

299 lines
7.9 KiB
HTML

<!DOCTYPE html>
<link rel="match" href="../expected/object-fit-position-ref.html"/>
<meta name="fuzzy" content="maxDifference=0-1;totalPixels=0-465">
<style>
.images img {
border: 1px solid black;
}
.img-wrapper {
margin-left: 20px;
}
.fit-cover .images img {
object-fit: cover;
}
.fit-contain .images img {
object-fit: contain;
}
.fit-fill .images img {
object-fit: fill;
}
.fit-none .images img {
object-fit: none;
}
.wider img {
width: 100px;
height: 50px;
}
.taller img {
width: 50px;
height: 100px;
}
img.pos-left {
object-position: left;
}
img.pos-right {
object-position: right;
}
img.pos-top {
object-position: top;
}
img.pos-bottom {
object-position: bottom;
}
img.pos-center {
object-position: bottom;
}
img.pos-absolute {
object-position: 20px 30%;
}
</style>
<h2>Object-Fit: Cover</h2>
<div class="fit-cover">
<h3>Box wider</h3>
<div class="wider images">
<div class="img-wrapper">
<h6>Object-Position: Left</h6>
<img class="pos-left" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Right</h6>
<img class="pos-right" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Top</h6>
<img class="pos-top" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Bottom</h6>
<img class="pos-bottom" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Center</h6>
<img class="pos-center" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: 20px 30%</h6>
<img class="pos-absolute" src="../data/car.png">
</div>
</div>
<h3>Box taller</h3>
<div class="taller images">
<div class="img-wrapper">
<h6>Object-Position: Left</h6>
<img class="pos-left" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Right</h6>
<img class="pos-right" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Top</h6>
<img class="pos-top" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Bottom</h6>
<img class="pos-bottom" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Center</h6>
<img class="pos-center" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: 20px 30%</h6>
<img class="pos-absolute" src="../data/car.png">
</div>
</div>
</div>
<h2>Object-Fit: contain</h2>
<div class="fit-contain">
<h3>Box wider</h3>
<div class="wider images">
<div class="img-wrapper">
<h6>Object-Position: Left</h6>
<img class="pos-left" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Right</h6>
<img class="pos-right" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Top</h6>
<img class="pos-top" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Bottom</h6>
<img class="pos-bottom" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Center</h6>
<img class="pos-center" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: 20px 30%</h6>
<img class="pos-absolute" src="../data/car.png">
</div>
</div>
<h3>Box taller</h3>
<div class="taller images">
<div class="img-wrapper">
<h6>Object-Position: Left</h6>
<img class="pos-left" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Right</h6>
<img class="pos-right" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Top</h6>
<img class="pos-top" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Bottom</h6>
<img class="pos-bottom" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Center</h6>
<img class="pos-center" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: 20px 30%</h6>
<img class="pos-absolute" src="../data/car.png">
</div>
</div>
</div>
<h2>Object-Fit: fill</h2>
<div class="fit-fill">
<h3>Box wider</h3>
<div class="wider images">
<div class="img-wrapper">
<h6>Object-Position: Left</h6>
<img class="pos-left" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Right</h6>
<img class="pos-right" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Top</h6>
<img class="pos-top" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Bottom</h6>
<img class="pos-bottom" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Center</h6>
<img class="pos-center" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: 20px 30%</h6>
<img class="pos-absolute" src="../data/car.png">
</div>
</div>
<h3>Box taller</h3>
<div class="taller images">
<div class="img-wrapper">
<h6>Object-Position: Left</h6>
<img class="pos-left" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Right</h6>
<img class="pos-right" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Top</h6>
<img class="pos-top" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Bottom</h6>
<img class="pos-bottom" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Center</h6>
<img class="pos-center" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: 20px 30%</h6>
<img class="pos-absolute" src="../data/car.png">
</div>
</div>
</div>
<h2>Object-Fit: none</h2>
<div class="fit-none">
<h3>Box wider</h3>
<div class="wider images">
<div class="img-wrapper">
<h6>Object-Position: Left</h6>
<img class="pos-left" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Right</h6>
<img class="pos-right" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Top</h6>
<img class="pos-top" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Bottom</h6>
<img class="pos-bottom" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Center</h6>
<img class="pos-center" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: 20px 30%</h6>
<img class="pos-absolute" src="../data/car.png">
</div>
</div>
<h3>Box taller</h3>
<div class="taller images">
<div class="img-wrapper">
<h6>Object-Position: Left</h6>
<img class="pos-left" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Right</h6>
<img class="pos-right" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Top</h6>
<img class="pos-top" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Bottom</h6>
<img class="pos-bottom" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: Center</h6>
<img class="pos-center" src="../data/car.png">
</div>
<div class="img-wrapper">
<h6>Object-Position: 20px 30%</h6>
<img class="pos-absolute" src="../data/car.png">
</div>
</div>
</div>