Gitweb links:
...log
http://git.netsurf-browser.org/libnslayout.git/shortlog/0797c998d5ec270df69745150d15608b4e5da9ac
...commit
http://git.netsurf-browser.org/libnslayout.git/commit/0797c998d5ec270df69745150d15608b4e5da9ac
...tree
http://git.netsurf-browser.org/libnslayout.git/tree/0797c998d5ec270df69745150d15608b4e5da9ac
The branch, master has been updated
via 0797c998d5ec270df69745150d15608b4e5da9ac (commit)
from 617c559accc02deb3e956b592dc22d7891e28369 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/libnslayout.git/commit/?id=0797c998d5ec270df69745150d15608b4e5da9ac
commit 0797c998d5ec270df69745150d15608b4e5da9ac
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>
Documentation: Start documenting library architecture.
diff --git a/docs/architecture.md b/docs/architecture.md
new file mode 100644
index 0000000..c45d355
--- /dev/null
+++ b/docs/architecture.md
@@ -0,0 +1,60 @@
+LibNSLayout Architecture
+========================
+
+`LibNSLayout` is a library for performing layout on a Document Object Model
+for HTML. Its purpose is to allow client applications to provide DOM
+information and convert that into a render list, which can be displayed
+by the client.
+
+Dependencies
+------------
+
+Clients of `LibNSLayout` must use the following additional libraries, because
+their types are used in the `LibNSLayout` interface:
+
+* `LibDOM` is used to provide the DOM interface.
+* `LibCSS` is used to provide the CSS handling.
+* `LibWapcaplet` is used for interned strings.
+
+Interface
+---------
+
+The devision of responsibilities between `LibNSLayout` and its clients are
+as follows:
+
+### Client
+
+* Fetching the document to be displayed.
+* Creating a CSS selection context (with default user-agent, and user CSS).
+* Generating DOM.
+* Creating a `LibNSLayout` layout for the document, passing the DOM document,
+ CSS selection context, and appropriate CSS media descriptor.
+* Listening to DOM changes.
+ * Fetching resources needed by DOM.
+ * CSS (STYLE elements, and LINK elements):
+ * Parsing the CSS.
+ * Updating CSS selection context as stylesheets are fetched,
+ and notifying `LibNSLayout`.
+ * JavaScript (SCRIPT elements, and LINK elements)
+ * Executing JavaScript.
+ * Favicons (LINK elements.)
+ * Images, Frames, Iframes.
+ * Notifying `LibNSLayout` of DOM changes.
+* Performing resource fetches on behalf of LibNSLayout.
+ * (Such as when LibNSLayout requires a background image or web font for
+ an element due to CSS.)
+* Asking `LibNSLayout` to perform layout.
+ * Displaying the returned render list.
+* Asking `LibNSLayout` for layout info (e.g. due to JavaScript.)
+* Passing mouse actions to `LibNSLayout`.
+* Passing keyboard input to `LibNSLayout`.
+* Measuring text???
+
+### `LibNSlayout`
+
+* Creates a layout object that's opaque to the client, and returns its
+ handle.
+* Performs CSS selection as appropriate when DOM changes.
+* Asking client to fetch a resource that's needed for a computed style.
+* Performs layout (if required) when asked by client and returns render list.
+* Performs layout (if required) when asked by client for layout info.
-----------------------------------------------------------------------
Summary of changes:
docs/architecture.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 docs/architecture.md
diff --git a/docs/architecture.md b/docs/architecture.md
new file mode 100644
index 0000000..c45d355
--- /dev/null
+++ b/docs/architecture.md
@@ -0,0 +1,60 @@
+LibNSLayout Architecture
+========================
+
+`LibNSLayout` is a library for performing layout on a Document Object Model
+for HTML. Its purpose is to allow client applications to provide DOM
+information and convert that into a render list, which can be displayed
+by the client.
+
+Dependencies
+------------
+
+Clients of `LibNSLayout` must use the following additional libraries, because
+their types are used in the `LibNSLayout` interface:
+
+* `LibDOM` is used to provide the DOM interface.
+* `LibCSS` is used to provide the CSS handling.
+* `LibWapcaplet` is used for interned strings.
+
+Interface
+---------
+
+The devision of responsibilities between `LibNSLayout` and its clients are
+as follows:
+
+### Client
+
+* Fetching the document to be displayed.
+* Creating a CSS selection context (with default user-agent, and user CSS).
+* Generating DOM.
+* Creating a `LibNSLayout` layout for the document, passing the DOM document,
+ CSS selection context, and appropriate CSS media descriptor.
+* Listening to DOM changes.
+ * Fetching resources needed by DOM.
+ * CSS (STYLE elements, and LINK elements):
+ * Parsing the CSS.
+ * Updating CSS selection context as stylesheets are fetched,
+ and notifying `LibNSLayout`.
+ * JavaScript (SCRIPT elements, and LINK elements)
+ * Executing JavaScript.
+ * Favicons (LINK elements.)
+ * Images, Frames, Iframes.
+ * Notifying `LibNSLayout` of DOM changes.
+* Performing resource fetches on behalf of LibNSLayout.
+ * (Such as when LibNSLayout requires a background image or web font for
+ an element due to CSS.)
+* Asking `LibNSLayout` to perform layout.
+ * Displaying the returned render list.
+* Asking `LibNSLayout` for layout info (e.g. due to JavaScript.)
+* Passing mouse actions to `LibNSLayout`.
+* Passing keyboard input to `LibNSLayout`.
+* Measuring text???
+
+### `LibNSlayout`
+
+* Creates a layout object that's opaque to the client, and returns its
+ handle.
+* Performs CSS selection as appropriate when DOM changes.
+* Asking client to fetch a resource that's needed for a computed style.
+* Performs layout (if required) when asked by client and returns render list.
+* Performs layout (if required) when asked by client for layout info.
--
NetSurf Layout Engine
_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org