| 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... |