TPP design decisions: 1. Visualizers The visualization of a slide is done by a visualizer. Visualization in the context of TPP means outputting it to an output device, e.g. a terminal via ncurses, a LaTeX source file, a Docbook source file, you name it. The generic TppVisualizer is the base for all visualizers. Look at the source which methods you need to implement if you want to write your own visualizer. The visualizer is also responsible for encapsulating the output device, e.g. interactive visualizers (like the NcursesVisualizer) also return the user's key presses. 2. Controllers The controller controls the correct program flow, utilizing the parser and a visualizer. The generic TppVisualizer is the base for all visualizers. All controllers must implement a constructor, and the two methods run and close. So far, three types of controllers have been implemented. 2.1 InteractiveController The InteractiveController feeds the content of the page to the visualizer until it is told to stop. It then reads the next key press from the visualizer, and runs the appropriate action. 2.2 AutoplayController The AutoplayController works like the InteractiveController, with the only difference that it ignores any information to stop and wait for a key press. It can be used for unattended presentations. 2.3 ConversionController The ConversionController is used for non-interactive, non-visual processing, like converting TPP source into another file format. The "visualizer" is responsible for producing the appropriate output format. Currently, it is used for the TextVisualizer and the LatexVisualizer, which generate text/LaTeX-beamer representations of the presentations they're fed with.