mirror of
https://github.com/zebrajr/ladybird.git
synced 2025-12-06 12:20:00 +01:00
LibWeb: Ensure drawImage() always uses the first image frame
This commit is contained in:
parent
2c78fd5b89
commit
f1571c4217
|
|
@ -136,10 +136,14 @@ WebIDL::ExceptionOr<void> CanvasRenderingContext2D::draw_image_internal(CanvasIm
|
||||||
|
|
||||||
auto bitmap = image.visit(
|
auto bitmap = image.visit(
|
||||||
[](GC::Root<HTMLImageElement> const& source) -> RefPtr<Gfx::ImmutableBitmap> {
|
[](GC::Root<HTMLImageElement> const& source) -> RefPtr<Gfx::ImmutableBitmap> {
|
||||||
return source->immutable_bitmap();
|
auto width = source->intrinsic_width().value_or({}).to_int();
|
||||||
|
auto height = source->intrinsic_height().value_or({}).to_int();
|
||||||
|
return source->default_image_bitmap_sized({ width, height });
|
||||||
},
|
},
|
||||||
[](GC::Root<SVG::SVGImageElement> const& source) -> RefPtr<Gfx::ImmutableBitmap> {
|
[](GC::Root<SVG::SVGImageElement> const& source) -> RefPtr<Gfx::ImmutableBitmap> {
|
||||||
return source->current_image_bitmap();
|
auto width = source->intrinsic_width().value_or({}).to_int();
|
||||||
|
auto height = source->intrinsic_height().value_or({}).to_int();
|
||||||
|
return source->default_image_bitmap_sized({ width, height });
|
||||||
},
|
},
|
||||||
[](GC::Root<OffscreenCanvas> const& source) -> RefPtr<Gfx::ImmutableBitmap> { return Gfx::ImmutableBitmap::create(*source->bitmap()); },
|
[](GC::Root<OffscreenCanvas> const& source) -> RefPtr<Gfx::ImmutableBitmap> { return Gfx::ImmutableBitmap::create(*source->bitmap()); },
|
||||||
[](GC::Root<HTMLCanvasElement> const& source) -> RefPtr<Gfx::ImmutableBitmap> {
|
[](GC::Root<HTMLCanvasElement> const& source) -> RefPtr<Gfx::ImmutableBitmap> {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
Harness status: OK
|
||||||
|
|
||||||
|
Found 1 tests
|
||||||
|
|
||||||
|
1 Pass
|
||||||
|
Pass drawImage() of an animated GIF draws the first frame
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Canvas test: 2d.drawImage.animated.gif</title>
|
||||||
|
<script src="../../../../resources/testharness.js"></script>
|
||||||
|
<script src="../../../../resources/testharnessreport.js"></script>
|
||||||
|
<script src="../../../../html/canvas/resources/canvas-tests.js"></script>
|
||||||
|
<link rel="stylesheet" href="../../../../html/canvas/resources/canvas-tests.css">
|
||||||
|
<body class="show_output">
|
||||||
|
|
||||||
|
<h1>2d.drawImage.animated.gif</h1>
|
||||||
|
<p class="desc">drawImage() of an animated GIF draws the first frame</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p class="output">Actual output:</p>
|
||||||
|
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
|
||||||
|
<p class="output expectedtext">Expected output:<p><img src="../../../../images/green-100x50.png" class="output expected" id="expected" alt="">
|
||||||
|
<ul id="d"></ul>
|
||||||
|
<script>
|
||||||
|
var t = async_test("drawImage() of an animated GIF draws the first frame");
|
||||||
|
_addTest(function(canvas, ctx) {
|
||||||
|
|
||||||
|
deferTest();
|
||||||
|
step_timeout(t.step_func_done(function () {
|
||||||
|
ctx.drawImage(document.getElementById('anim-gr.gif'), 0, 0);
|
||||||
|
_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2);
|
||||||
|
}), 500);
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<img src="../../../../images/anim-gr.gif" id="anim-gr.gif" class="resource">
|
||||||
|
|
||||||
BIN
Tests/LibWeb/Text/input/wpt-import/images/anim-gr.gif
Normal file
BIN
Tests/LibWeb/Text/input/wpt-import/images/anim-gr.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 241 B |
Loading…
Reference in New Issue
Block a user