PersonalMy homepage is supposedly here, although I never get around to actually making anything worthwhile for it...
- Component Object Graphics
- Document Layout Functions
- Functional Programming
- Program Reasoning
- Other random stuff...
My current research is to do with optimising template documents where the placement of items in the document is defined by nested layout functions. These functions are things like "X-Flows" which place each item in the flow to the right of the previous item and "Tables" where each item is placed in a specified cell in a rectangular grid. By allowing functions to be nested (A Table may contain an X-Flow in a certain cell) arbitrarily complex layouts can be achieved.
What makes my system interesting is the ability to insert unbound or 'placeholder' items into these layouts. These unbound items may not have a width or a height specified, or they might have min/max constraints specified on their dimensions.
It is not possible to fully evaluate a document such as this where items are not yet fully bound, however there may exist invariant parts of the document that can be evaluated. My research is involved in looking at just how much of this invariance it is possible to extract.
My system is implemented as an XSLT program which takes as an input a mixed namespace document containing both SVG and elements in my own 'layout' namespace. It then processes this document, possibly with some extra data, and produces another mixed content document as the output. By successively reevaluating the resultant document with additional data it reaches a stage where there is no more work to be done and the output is a valid SVG document.
Odds and Ends
- InnerQuickCheck: A modified version of Haskell's QuickCheck module that allows for QuickCheck rules to make use of QuickCheck.
- Encapsulating and Manipulating Component Object Graphics (COGs) in SVG: A short paper showing how it is possible to use native SVG operators to achieve the same results as Steven Bagley's PDF COGs. The paper can be downloaded from the Nottingham ePrints server here, and the slides used for the talk can be found here.
- Evaluating Invariances in Document Layout functions: A short paper showing how partial evaluation of document layout functions can be achieved. This is done by locating invariances and re-writing the layout functions so that the invariant sections can be evaluated. The paper can be downloaded from the Nottingham ePrints server here, and the slides used for the talk can be found here.
- Speculative Document Evaluation: A short paper explaining the need to create fast paths in VDP template documents for data that commonly produces the same layout. The paper can be downloaded from the Nottingham ePrints server here, and the slides used for the talk can be found here.
ajm - at - cs.nott.ac.uk
C50 Office telephone: