HtmlRenderer

C# HTML Layout and HTML Rendering Engine

View the Project on GitHub LayoutFarm/HtmlRenderer

Hello !

nearly acid1

pic 1: HtmlRenderer, Gdi+, see test file

seems promising ?, NEARLY pass ACID1 test :)


Work In Progrss … : Cross Platform HtmlRenderer

The HtmlRenderer example!

gles_html pic 2: HtmlRenderer on GLES2 surface, text are renderered with the Typography

gles_html pic 3: HtmlRenderer on GLES2 surface

also, please note the text selection on the Html Surface.

(HtmlRender => https://github.com/LayoutFarm/HtmlRenderer,

Typography => https://github.com/LayoutFarm/Typography)


How to build it

see https://github.com/LayoutFarm/HtmlRenderer.Build


Work In Progrss … : Html-input

Html input elements are built with ‘html-fragment (sub dom)’

see more at https://github.com/LayoutFarm/HtmlRenderer/issues/18

2019-03-31_21-55-37

pic3 : HtmlRenderer on GLES2 surface,developing Html-input, click to view full size img


The classic image. html_renderer_s01

pic 4: HtmlRenderer’s Classic, Gdi+

MORE info / screen capture imgs -> see wiki

Build Note -> see wiki


I forked this project from https://github.com/ArthurHub/HTML-Renderer (thank you so much)

I added some features

such as

1) dynamic html dom

2) decoupling, dependency analysis

3) optimizing the html,css parser. see: HtmlKit v1.0(https://github.com/jstedfast/HtmlKit)

4) add svg/canvas support (not complete)

5) abstract canvas backend (GDI+, OpenGL) also not complete for Linux (for the canvas backend, I used it from another project ->https://github.com/prepare/PixelFarm-dev)

6) Javascript (v8) binding (https://github.com/prepare/Espresso)

7) debug view

8) more layout support eg. inline-block,relative, absolute ,fixed, flex etc

9) added custom controls eg. text editer control, scrollbar, gridbox etc.

10) some events (eg. mouse /keyboard events)

.. BUT not complete :(

feel free to fork/ comment/ suggest /pull request


Plan

1) always permissive license (MIT,BSD, Apache2)

2) bind some features from Blink engine

3) add more html5/css3/js support

4) convert to C++ code with some transpiler tools so users can build a final native code web browser

5) to make this runs on .NetCore


Licenses

The project is based on multiple open-sourced projects (listed below) all using permissive licenses.

A license for a whole project is MIT.

but if you use some part of the code please check each source file’s header for the licensing info.

Html Engine

BSD, 2009, José Manuel Menéndez Poo, https://www.codeproject.com/Articles/32376/A-Professional-HTML-Renderer-You-Will-Use

BSD, 2013-2014, Arthur Teplitzki, from https://github.com/ArthurHub/HTML-Renderer

MIT, 2015, Jeffrey Stedfastm, from HtmlKit https://github.com/jstedfast/HtmlKit

Javascript Engine

MIT, 2013, Federico Di Gregorio, from https://github.com/Daniel15/vroomjs

MIT, 2015-present, WinterDev, from https://github.com/prepare/Espresso

Geometry

BSD, 2002-2005, Maxim Shemanarev, from http://www.antigrain.com , Anti-Grain Geometry - Version 2.4,

BSD, 2007-2014, Lars Brubaker, agg-sharp, from https://github.com/MatterHackers/agg-sharp

ZLIB, 2015, burningmine, CurveUtils.

Boost, 2010-2014, Angus Johnson, Clipper.

BSD, 2009-2010, Poly2Tri Contributors, from https://github.com/PaintLab/poly2tri-cs

SGI, 2000, Eric Veach, Tesselate.

Image Processing

BSD, 2002-2005, Maxim Shemanarev, from http://www.antigrain.com , Anti-Grain Geometry - Version 2.4,

MIT, 2009-2015, Bill Reiss, Rene Schulte and WriteableBitmapEx Contributors, https://github.com/teichgraf/WriteableBitmapEx

MIT, 2008, dotPDN LLC, Rick Brewster, Chris Crosetto, Tom Jackson, Michael Kelsey, Brandon Ortiz, Craig Taylor, Chris Trevino, and Luke Walker., from OpenPDN v 3.36 (Paint.NET), https://github.com/rivy/OpenPDN

Font

MIT, 2016-present, WinterDev, Samuel Carlsson, Sam Hocevar and others, from https://github.com/LayoutFarm/Typography

Apache2, 2014-2016, Samuel Carlsson, from https://github.com/vidstige/NRasterizer

MIT, 2015, Michael Popoloski, from https://github.com/MikePopoloski/SharpFont

The FreeType Project LICENSE (3-clauses BSD style),2003-2016, David Turner, Robert Wilhelm, and Werner Lemberg and others, from https://www.freetype.org/

MIT, 2016, Viktor Chlumsky, from https://github.com/Chlumsky/msdfgen

Platforms

MIT, 2015-2015, Xamarin, Inc., from https://github.com/mono/SkiaSharp

MIT, 2006-2009, Stefanos Apostolopoulos and other Open Tool Kit Contributors, from https://github.com/opentk/opentk

MIT, 2013, Antonie Blom, from https://github.com/andykorth/Pencil.Gaming

MIT, 2004,2007, Novell Inc., for System.Drawing


Long Live Our Beloved C#

WinterDev :)