mainpage.doxygen   mainpage.doxygen 
skipping to change at line 33 skipping to change at line 33
@section intro_sec Introduction @section intro_sec Introduction
This documentation concerns the inner workings of Stellarium. This documen tation This documentation concerns the inner workings of Stellarium. This documen tation
is targetted at developers of scripts, plugins and the core program. is targetted at developers of scripts, plugins and the core program.
@section architecture_sec Program Architecture @section architecture_sec Program Architecture
The code of Stellarium is split into several main blocks: The code of Stellarium is split into several main blocks:
<ul> <ul>
<li>the main loop and main widget classes @em StelMainWindow and @em StelMa inGraphicsView. Those classes have a single instance which is created at st artup by the main() function. They perform various tasks such as the creati on of the main program window and openGL context, the creation of the stell arium core, the creation of the GUI. After initialization, they manage user 's input event propagation and event loop. There are heavily based on %Qt f eatures.</li> <li>the main loop and main window class StelMainView. This single-instance class is created at startup by the main() function. It hosts the main OpenG L viewport (based upon QGraphicsView) and manages StelApp and StelGui as su bobjects. After initialization, it manages user's input event propagation a nd event loop.</li>
<li>the core which provides a number of generic services and features to th e other components. The main class is the StelApp singleton class which is used everywhere in the code to access other elements. It is the StelApp ins tance which creates all the main core services and modules at initializatio n. Example services are OpenGL textures management with the StelTextureMgr, font management with the StelFontMgr, sky images management (images which have a fixed position in the sky) with the StelSkyImageMgr etc.. Two especi ally important manager classes (the ones with the "Mgr" suffix) are the Ste lModuleMgr and StelCore classes: the first one manages the collection of St elModule instances which are registered in the program (see next point for more info on what a StelModule is). The second one provides performance cri tical features for rendering various elements using openGL, or for computin g coordinate transformation and other mathematical services.</li> <li>the core which provides a number of generic services and features to th e other components. The main class is the StelApp singleton class which is used everywhere in the code to access other elements. It is the StelApp ins tance which creates all the main core services and modules at initializatio n. Example services are OpenGL textures management with the StelTextureMgr, font management with the StelFontMgr, sky images management (images which have a fixed position in the sky) with the StelSkyImageMgr etc.. Two especi ally important manager classes (the ones with the "Mgr" suffix) are the Ste lModuleMgr and StelCore classes: the first one manages the collection of St elModule instances which are registered in the program (see next point for more info on what a StelModule is). The second one provides performance cri tical features for rendering various elements using openGL, or for computin g coordinate transformation and other mathematical services.</li>
<li>a collection of StelModule instances which display the main elements of the program such as planets and stars. Each StelModule should be registere d to the StelModuleMgr. Because many components of Stellarium derive from t he StelModule class, it is possible for the main loop to treat them generic ally by calling their standard methods such StelModule::update() and StelMo dule::draw() at each program iteration. It also allows other program compon ents to access them by name. StelProperty can be used to access all defined static properties (see the [Qt property system](https://doc.qt.io/qt-5/pro perties.html) for more information) of all registered StelModule instances. StelModule can also be loaded dynamically by Stellarium, which is the stan dard way of creating @ref plugins. StelAction instances can be used to defi ne actions that can be triggered by the user through UI controls or key com binations.</li> <li>a collection of StelModule instances which display the main elements of the program such as planets and stars. Each StelModule should be registere d to the StelModuleMgr. Because many components of Stellarium derive from t he StelModule class, it is possible for the main loop to treat them generic ally by calling their standard methods such StelModule::update() and StelMo dule::draw() at each program iteration. It also allows other program compon ents to access them by name. StelProperty can be used to access all defined static properties (see the [Qt property system](https://doc.qt.io/qt-5/pro perties.html) for more information) of all registered StelModule instances. StelModule can also be loaded dynamically by Stellarium, which is the stan dard way of creating @ref plugins. StelAction instances can be used to defi ne actions that can be triggered by the user through UI controls or key com binations.</li>
<li>the Graphical User Interface (StelGui). It is based on styled %Qt widge ts which are rendered directly in the openGL window. Users actions can trig ger signals which are connected to core and StelModules slots. Many UI cont rols can also be directly connected to StelAction and/or StelProperty insta nces to reduce the amount of boilerplate code required to link UI changes t o the back-end modules and vice-versa.</li> <li>the Graphical User Interface (StelGui). It is based on styled %Qt widge ts which are rendered directly in the OpenGL window. Windows can be created using StelDialog subclasses. Users actions can trigger signals which are c onnected to core and StelModules slots. Many UI controls can also be direct ly connected to StelAction and/or StelProperty instances to reduce the amou nt of boilerplate code required to link UI changes to the back-end modules and vice-versa.</li>
<li>the script engine (StelScriptMgr) allows user scripts based on QtScript (a JavaScript dialect) to access properties and calls slots from the core and StelModule instances.</li> <li>the script engine (StelScriptMgr) allows user scripts based on QtScript (a JavaScript dialect) to access properties and calls slots from the core and StelModule instances.</li>
</ul> </ul>
@image html stellarium-architecture.png @htmlonly[block]
<div class="image">
@image html stellarium-logo.png <!-- allow SVG display for browsers that allow it -->
<object data="stellarium-architecture.svg" type="image/svg+xml">
<img src="stellarium-architecture.png" alt="Stellarium architecture" />
</object>
</div>
@endhtmlonly
*/ */
 End of changes. 3 change blocks. 
5 lines changed or deleted 10 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/