Papywizard v2 internal design
This is a draft document.
Framework
The idea is to entirely build Papywizard as a framework, where different parts are just plugins, so new features can be added by users, at least to prototype them. It is also better for upgrading only a few parts of the code.
Engines
The core of Papywizard will be build arround engines, which will be hard-coded. Main engines are:
- pano engines
- mosaic engine
- preset engine
- timelapse engine
Engines can use other engines (ex: a timelapse pano).
Plugins
Engines will use some plugins to be able to achieve their purpose. These plugins will be splitted in categories:
- axis control - axis can be manual
- camera shutter triggering - through hardware, tethered
- hardware communication - transport and protocol
- timer/intervalometer - or is it timelapse?
- display - shooting area, text area, custom
- GPS
- data storage - file, database, server...
- analysis - picture control for automatic bracketing
A plugin should be able to :
- register itself in the framework according to its interface
- add GUI features (display, preferences...)
- be dynamically enabled/disabled
- check if dependent plugins are available
Services
Services are low-level features, like logging, persistence, configuration...