= 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 services, 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...