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