diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2003-05-31 18:39:35 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2003-05-31 18:39:35 +0000 |
commit | dc9e7e9cdcff8006f71d7ef0c796e2637248f05f (patch) | |
tree | eebb5c290356b469a0ef57a0490080e11621fe08 /Docs | |
parent | 080a735bcfecef89cfc4e5707ffad6d98d295102 (diff) | |
download | netsurf-dc9e7e9cdcff8006f71d7ef0c796e2637248f05f.tar.gz netsurf-dc9e7e9cdcff8006f71d7ef0c796e2637248f05f.tar.bz2 |
[project @ 2003-05-31 18:39:35 by jmb]
Create Docs directory. Create TODO files. Move developer into Docs
svn path=/import/netsurf/; revision=135
Diffstat (limited to 'Docs')
-rw-r--r-- | Docs/TODO-CSS | 10 | ||||
-rw-r--r-- | Docs/TODO-General | 15 | ||||
-rw-r--r-- | Docs/TODO-HTML | 43 | ||||
-rw-r--r-- | Docs/developer | 109 |
4 files changed, 177 insertions, 0 deletions
diff --git a/Docs/TODO-CSS b/Docs/TODO-CSS new file mode 100644 index 000000000..24911d12e --- /dev/null +++ b/Docs/TODO-CSS @@ -0,0 +1,10 @@ +$Id: TODO-CSS,v 1.1 2003/05/31 18:39:35 jmb Exp $ + +TODO-CSS file for NetSurf. + +This file lists the result of running NetSurf through the +w3.org CSS compliance testsuite. + +See TODO-HTML for HTML related TODOs. + +Lots.
\ No newline at end of file diff --git a/Docs/TODO-General b/Docs/TODO-General new file mode 100644 index 000000000..3a9df58c3 --- /dev/null +++ b/Docs/TODO-General @@ -0,0 +1,15 @@ +$Id: TODO-General,v 1.1 2003/05/31 18:39:35 jmb Exp $ + +TODO-General for NetSurf. + +This file documents general things which need doing. + + +Browser Redirect +Disk Cache +Saving +Printing +View Source +Global Clipboard Support +More Image file formats +JavaScript?
\ No newline at end of file diff --git a/Docs/TODO-HTML b/Docs/TODO-HTML new file mode 100644 index 000000000..5c05a3616 --- /dev/null +++ b/Docs/TODO-HTML @@ -0,0 +1,43 @@ +$Id: TODO-HTML,v 1.1 2003/05/31 18:39:35 jmb Exp $ + +TODO-HTML file for NetSurf. + +This list is the result of running NetSurf through the +w3.org HTML 4.01 compliance test-suite and therefore +only cover deficiencies in the HTML rendering implementation. + +See TODO-CSS for CSS related TODOs. + +Text Formatting: + + <PRE> tag + <CITE>, <DFN>, <CODE>, <SAMP>, <KBD>, + <VAR>, <ABBR> and <ACRONYM> tags + <Q> tag + +Lists + <LI> + <OL>,<UL> + +Tables: + Borders, + cell widths?, - Can't tell if we do these + row/column spanning? - without borders displayed + +Images: + display ALT text, + MAP, + AREA + +<OBJECT>, <EMBED> and <APPLET> tags + +Forms: + <SELECT> - size attribute, multiple selections + <TEXTAREA> - implement it properly (use nested wimp?) + Tabbing between input values + "disabled" attribute + POST method support + +Frames: + Actually support them. NetSurf passes the test suite's + single test for non-frames-supporting browsers.
\ No newline at end of file diff --git a/Docs/developer b/Docs/developer new file mode 100644 index 000000000..a8c443cec --- /dev/null +++ b/Docs/developer @@ -0,0 +1,109 @@ +Documentation for Developers + +This document contains an overview of the code for NetSurf, and any other +information useful to developers. + +________________________________________________________________________________ + +Source Code Overview + +The source is split at top level as follows: + +content -- fetching, caching, and converting content +css -- CSS parser and interfaces +desktop -- non-platform specific front-end +render -- HTML processing and layout +riscos -- RISC OS specific code +utils -- misc. useful functions + +________________________________________________________________________________ + +content -- fetching, caching, and converting content + +Each URL is stored in a struct content. This structure contains a union with +fields for each type of data (HTML, CSS, images). + +The content_* functions provide a general interface for handling these +structures. A content of a specified type is created using content_create(), +data is fed to it using content_process_data(), terminated by a call to +content_convert(), which converts the content into a structure which can be +displayed easily. + +The cache stores this converted content. When content is retrieved from the +cache, content_revive() should result in content which can be displayed (eg. by +loading any images and styles required and updating pointers to them). + +Code should not usually use the fetch_* and cache_* functions directly, except +for cache_free(). Instead use fetchcache(), which checks the cache for a url and +fetches, converts, and caches it if not present. + +________________________________________________________________________________ + +css -- CSS parser and interfaces + +CSS is tokenised by a flex-generated scanner (scanner.l), and then parsed into a +memory representation by a lemon-generated parser (parser.y, ruleset.c). + +Styles are retrieved using css_get_style(). They can be cascaded by +css_cascade(). + +http://lex.sourceforge.net/ +http://www.hwaci.com/sw/lemon/ + +________________________________________________________________________________ + +render -- HTML processing and layout + +This is the process to render an HTML document: + +First the HTML is parsed to a tree of xmlNodes using the HTML parser in libxml. +This happens simultaneously with the fetch [html_process_data()]. + +Any stylesheets which the document depends on are fetched and parsed. + +The tree is converted to a 'box tree' by xml_to_box(). The box tree contains a +node for each block, inline element, table, etc. The aim of this stage is to +determine the 'display' or 'float' CSS property of each element, and create the +corresponding node in the box tree. At this stage the style for each element is +also calculated (from CSS rules and element attributes). The tree is normalised +so that each node only has children of permitted types (eg. TABLE_CELLs must be +within TABLE_ROWs) by adding missing boxes. + +The box tree is passed to the layout engine [layout_document()], which finds the +space required by each element and assigns coordinates to the boxes, based on +the style of each element and the available width. This includes formatting +inline elements into lines, laying out tables, and positioning floats. The +layout engine can be invoked again on a already laid out box tree to reformat it +to a new width. Coordinates in the box tree are relative to the position of the +parent node. + +The box tree can then be rendered using each node's coordinates. + +box.[ch] -- definition of the box tree, conversion from xml tree, normalising +html.[ch] -- interface to HTML processing +layout.[ch] -- layout engine + +________________________________________________________________________________ + +Specifications + +HTML 4.01 http://www.w3.org/TR/html401/ +XHTML 1.0 http://www.w3.org/TR/xhtml1/ +CSS2 http://www.w3.org/TR/REC-CSS2/ +HTTP/1.1 http://www.w3.org/Protocols/rfc2616/rfc2616.html +PNG http://www.w3.org/Graphics/PNG/ + +________________________________________________________________________________ + +Libraries + +Get these compiled for RISC OS with headers from +http://netsurf.strcprstskrzkrk.co.uk/developer/ + +libxml (XML and HTML parser) http://xmlsoft.org/ +libcurl (HTTP, FTP, etc) http://curl.haxx.se/libcurl/ +OSLib (C interface to RISC OS SWIs) http://ro-oslib.sourceforge.net/ +libpng (PNG support) http://www.libpng.org/pub/png/libpng.html +zlib http://www.gzip.org/zlib/ + +________________________________________________________________________________ |