The output process is run by templates. A standard template is included in Abcd. This template generates a tree of HTML web pages, including a page for each Folder in the tree and for each Reference in each Folder. The templates read the data associated with each Album, Folder, and Reference to customize the contents and look of each page- for instance, the background color or image can be set in the Project Options.
Template definitions are written in a combination of HTML and the IC scripting language. IC is an interpreted scripting language which is very similar to C with added OO extensions. In particular it can access and interact with native java Objects, which makes it very handy for designing mappings like Templates do.
A template definition consists of regular HTML code, along with special commands. These commands are enclosed in double tag quotes (<<...>>). Commands can be special template commands (example: <<_TEMPLATE ...>>...<</_TEMPLATE>> or <<_LOOP ...>>...<</_LOOP>>), or standard IC code (example: <<i = "filename";>>).
When a template is executed it starts filling in an output buffer based on its input. HTML code is copied as-is from the input buffer to the output buffer. IC code is executed in-line and the results of the command(s) is inserted into the output buffer. Special commands are interpreted according to their definitions: _TEMPLATE defines a new template, _LOOP loops back to its start, and so on. For more information see the documentation.
If the standard template does not do what you want, template files can be changed or written fairly easily. Because they can access the attributes for all Object types, customization is fairly easy - for instance, the background of all the pages can be changed by changing the "Background" option for the Project.
For examples of output generation see the following files:
And, the sample project generated by this template is here