1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:18:12 +00:00

LibWeb: Add <canvas> element and start fleshing out CRC2D

This patch adds HTMLCanvasElement along with a LayoutCanvas object.
The DOM and layout parts are very similar to <img> elements.

The <canvas> element holds a Gfx::Bitmap which is sized according to
the "width" and "height" attributes on the element.

Calling .getContext("2d") on a <canvas> element gives you a context
object that draws into the underlying Gfx::Bitmap of the <canvas>.
The context weakly points to the <canvas> which allows it to outlive
the canvas element if needed.

This is really quite cool. :^)
This commit is contained in:
Andreas Kling 2020-03-19 19:07:56 +01:00
parent 73d28a0551
commit a37c29e353
19 changed files with 649 additions and 1 deletions

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<head>
<title>Canvas 2D test!</title>
<style type="text/css">
body {
background-color: #000;
color: #fff; /* another css comment */
}
canvas {
border-width: 1px;
border-style: solid;
border-color: #fff;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function() {
ctx = document.getElementById("foo").getContext("2d");
ctx.fillStyle = 'red';
ctx.fillRect(10, 10, 200, 100);
});
</script>
</head>
<body link="#44f" vlink="#c4c" background="90s-bg.png">
<canvas id="foo" width="300" height="200"></canvas>
</body>
</html>