mirror of
https://github.com/Hopiu/bowser.git
synced 2026-03-16 19:10:24 +00:00
This commit introduces support for loading and rendering images in the Bowser web browser, enhancing the rendering engine to handle various image sources. Key changes include: - Updated README.md to reflect the new milestone status and added features for image support. - Added `ImageLayout` class to manage image layout and loading. - Implemented synchronous and asynchronous image loading in `src/network/images.py`, including caching mechanisms. - Expanded the DOM parsing capabilities in `DocumentLayout` to handle `<img>` tags and manage their layout directives. - Created a new `DrawImage` command in the rendering pipeline, which handles the drawing of both loaded images and placeholders for unloaded images. - Introduced a task queue for managing asynchronous image loads, ensuring UI remains responsive during image fetching. - Added unit tests for image loading, layout management, and the async task queue to ensure robust functionality and prevent regressions.
110 lines
2.8 KiB
HTML
110 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Bowser Start Page</title>
|
|
<style>
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif, "Noto Color Emoji";
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
min-height: 100vh;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.container {
|
|
text-align: center;
|
|
color: white;
|
|
max-width: 600px;
|
|
padding: 40px;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 48px;
|
|
margin-bottom: 20px;
|
|
text-shadow: 0 2px 4px rgba(0,0,0,0.2);
|
|
}
|
|
|
|
.logo {
|
|
font-size: 64px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
p {
|
|
font-size: 18px;
|
|
line-height: 1.6;
|
|
margin-bottom: 30px;
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.features {
|
|
text-align: left;
|
|
background: rgba(255,255,255,0.1);
|
|
padding: 30px;
|
|
border-radius: 8px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.features li {
|
|
list-style: none;
|
|
margin: 10px 0;
|
|
padding-left: 30px;
|
|
position: relative;
|
|
}
|
|
|
|
.features li:before {
|
|
content: "→";
|
|
position: absolute;
|
|
left: 0;
|
|
}
|
|
|
|
input[type="text"] {
|
|
width: 100%;
|
|
padding: 12px;
|
|
font-size: 16px;
|
|
border: none;
|
|
border-radius: 4px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.footer {
|
|
font-size: 12px;
|
|
opacity: 0.7;
|
|
margin-top: 40px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="logo">🌐</div>
|
|
<h1>Welcome to Bowser</h1>
|
|
<p>An educational web browser built from scratch for learning how browsers work.</p>
|
|
|
|
<input type="text" placeholder="Enter a URL to get started...">
|
|
|
|
<div class="features">
|
|
<ul>
|
|
<li>Built with Python and GTK</li>
|
|
<li>Implementing browser.engineering curriculum</li>
|
|
<li>Learning HTTP, HTML parsing, CSS, and JavaScript</li>
|
|
<li>Incremental feature development</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<img src="../WebBowserLogo.jpeg" alt="Bowser Logo" width="200">
|
|
|
|
<div class="footer">
|
|
<p>Bowser v{{ version }}</p>
|
|
<p>Made for educational purposes</p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|