summaryrefslogtreecommitdiff
path: root/Docs
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2003-05-31 18:39:35 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2003-05-31 18:39:35 +0000
commitdc9e7e9cdcff8006f71d7ef0c796e2637248f05f (patch)
treeeebb5c290356b469a0ef57a0490080e11621fe08 /Docs
parent080a735bcfecef89cfc4e5707ffad6d98d295102 (diff)
downloadnetsurf-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-CSS10
-rw-r--r--Docs/TODO-General15
-rw-r--r--Docs/TODO-HTML43
-rw-r--r--Docs/developer109
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/
+
+________________________________________________________________________________