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