| 3 | | == v2 internal design == |
| 4 | | |
| 5 | | This is a draft document. |
| 6 | | |
| 7 | | === Framework === |
| 8 | | |
| 9 | | 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. |
| 10 | | |
| 11 | | ==== Engines ==== |
| 12 | | |
| 13 | | The core of Papywizard will be build arround '''engines''', which will be hard-coded. Main engines are: |
| 14 | | |
| 15 | | * pano engines |
| 16 | | * mosaic engine |
| 17 | | * preset engine |
| 18 | | * timelapse engine |
| 19 | | |
| 20 | | Engines can use other engines (ex: a timelapse pano). |
| 21 | | |
| 22 | | ==== Plugins ==== |
| 23 | | |
| 24 | | Engines will use some plugins to be able to achieve their purpose. These plugins will be splitted in categories: |
| 25 | | |
| 26 | | * axis control - axis can be manual |
| 27 | | * camera shutter triggering - through hardware, tethered |
| 28 | | * hardware communication - transport and protocol |
| 29 | | * timer/intervalometer - or is it timelapse? |
| 30 | | * display - shooting area, text area, custom |
| 31 | | * GPS |
| 32 | | * data storage - file, database, server... |
| 33 | | * analysis - picture control for automatic bracketing |
| 34 | | |
| 35 | | A plugin should be able to : |
| 36 | | |
| 37 | | * register itself in the framework according to its interface |
| 38 | | * add GUI features (display, preferences...) |
| 39 | | * be dynamically enabled/disabled |
| 40 | | * check if dependent plugins are available |
| 41 | | |
| 42 | | ==== Services ==== |
| 43 | | |
| 44 | | Services are low-level features, like logging, persistence, configuration... |