All Projects → reesmichael1 → Webwhir

reesmichael1 / Webwhir

Licence: mit
A simple HTML rendering engine.

Projects that are alternatives of or similar to Webwhir

turbo
⚡ Turbo - the browser for developers
Stars: ✭ 36 (-63.64%)
Mutual labels:  web-browser
voce-browser
Voice Controlled Chromium Web Browser
Stars: ✭ 34 (-65.66%)
Mutual labels:  web-browser
Nyxt
Nyxt - the hacker's power-browser.
Stars: ✭ 7,038 (+7009.09%)
Mutual labels:  web-browser
web-voice-processor
A library for real-time voice processing in web browsers
Stars: ✭ 69 (-30.3%)
Mutual labels:  web-browser
Waterfox
The official Waterfox 💧 source code repository
Stars: ✭ 2,444 (+2368.69%)
Mutual labels:  web-browser
sweb
Android Simple Web Browser
Stars: ✭ 30 (-69.7%)
Mutual labels:  web-browser
Endless
iOS web browser with a focus on security and privacy
Stars: ✭ 237 (+139.39%)
Mutual labels:  web-browser
Jumpgo
JumpGo Web Browser for Android
Stars: ✭ 54 (-45.45%)
Mutual labels:  web-browser
Crusta
Fast, modern and minimal desktop web browser with rich features
Stars: ✭ 53 (-46.46%)
Mutual labels:  web-browser
Xr3player
🎧 🎼 Advanced JavaFX Media Player
Stars: ✭ 472 (+376.77%)
Mutual labels:  web-browser
facile
Stupidly Simple Audio Streaming Library
Stars: ✭ 17 (-82.83%)
Mutual labels:  web-browser
WebExpress
Web browser in C# and WPF
Stars: ✭ 71 (-28.28%)
Mutual labels:  web-browser
jseval
Evaluate JavaScript on a URL through headless Chrome browser.
Stars: ✭ 19 (-80.81%)
Mutual labels:  web-browser
Webicity
Webicity: The perpetually unfinished web browser. The Ribbon branch is the last working version. The Thready branch is the current work on a complete rewrite.
Stars: ✭ 24 (-75.76%)
Mutual labels:  web-browser
Stealth
🚀 Stealth - Secure, Peer-to-Peer, Private and Automateable Web Browser/Scraper/Proxy
Stars: ✭ 659 (+565.66%)
Mutual labels:  web-browser
Thdwb
🌭 The hotdog web browser and browser engine 🌭
Stars: ✭ 247 (+149.49%)
Mutual labels:  web-browser
floaty
A minimalist, float on top web browser for macOS
Stars: ✭ 26 (-73.74%)
Mutual labels:  web-browser
Cyberfox
cyberfox code repository
Stars: ✭ 66 (-33.33%)
Mutual labels:  web-browser
Scamper
A Smalltalk Web Browser for Squeak/Smalltalk
Stars: ✭ 10 (-89.9%)
Mutual labels:  web-browser
Thorium
Chromium fork for linux named after radioactive element No. 90. Windows and Special builds are in different repositories, links are towards the top of the README.md.
Stars: ✭ 45 (-54.55%)
Mutual labels:  web-browser

WebWhir

Welcome to WebWhir!

Project Overview

WebWhir is designed to become a simple HTML rendering engine (and, perhaps eventually, a fully-fledged web browser). That is, WebWhir will accept HTML files and turn them into rendered "web" pages.

You may very well be wondering just why another rendering engine is necessary (on top of Gecko, EdgeHTML, Trident, Presto, Blink, WebKit, Servo, and others). The short answer is that WebWhir is not necessary--rendering engines are simply a personal fascination of mine, and I wanted to write one.

On the other hand, WebWhir is designed to be very easy to link into any application, so it should be possible to eventually use WebWhir as a library to render HTML in a general purpose OpenGL program, which could serve some use.

Building

After cloning this repository, follow a standard CMake build process.

mkdir build
cd build
cmake ..
make

Dependencies

WebWhir uses Boost sparingly and SFML for graphics.

Demo

WebWhir renders the following HTML as shown in the image below.

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <p>Hello world!</p>
        <p>This is a simple test HTML string that demonstrates WebWhir's rendering capabilities.</p>
        <p>Although work is still in the early stages, this example shows the foundation of the progress to come.</p>
    </body>
</html>

Demo rendering

Project History

I began working on WebWhir in early 2013. Although the early versions of WebWhir were able to render basic HTML documents, for most of the time since then, development has been stagnant. Furthermore, when I first began the project, I was in high school, and had no real sense of how to design a large program such as an HTML rendering engine.

Therefore, with several more years of experience, I am beginning a complete rewrite of WebWhir, which is what you will find on the master branch. Of course, if you are interested in seeing the legacy versions of WebWhir, the 0.1.0 and 0.2.0 tags and releases are still accessible.

Rewrite Roadmap

The philosophy of the rewrite is to get the necessary skeletal structure into place to demonstrate how other cases will be handled. For example, in the HTML tokenizer, there are well over 30 possible states that the tokenizer state machine can enter (as defined in the specification). The current implementation of the tokenizer only handles the few of these that were necessary to parse simple and well-formatted strings. This choice was made to allow development of as many pieces of the final program as quickly as possible, rather than spending significant amounts of time handling countless edge cases. Of course, as time goes on, more and more of these edge cases will be implemented.

In this sense, the foundation of WebWhir is in place. Now, work will shift to implementing more and more features.

Contributing

Additional contributors would be appreciated! Please see the contributing guide for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].