-
Notifications
You must be signed in to change notification settings - Fork 16
Development
Here you can find information on developing in the open_iA framework.
The easiest way to start developing with open_iA is to write your own module. First, make sure you have a working build environment set up for open_iA.
It might also help to familiarize yourself with our Coding Guidelines and our Branching Strategy.
For starting module development, we have the following tutorials available at the moment:
We use doxygen for documenting the code we write; we provide an API documentation of code in the core libraries (residing in the subfolders of the libs folder) as well as the include-only stuff (in the Toolkit folder) in our API documentation.
We are still in the process of setting up more automated testing:
-
We use unit tests to ensure the workings of some of our basic helper classes, see the CMakeLists.txt in the
test
folder. -
A simple GUI test for whether open_iA can open a file without crashing is specified in the CMakeLists.txt in the
gui
folder. -
For testing specific filters, we have set up a few tests via command line, see the
if (openiA_TESTING_ENABLED)
block inmodules/CommonImageFilters/enabled.cmake
.
We are always looking to extend our automated tests, this is a great way to learn open_iA's structure!
At the core of open_iA are several libraries providing basic functionality (located in the libs
subfolder):
"Public" connections mean that the library exposes this dependency, i.e. all implementations from a dependency are also available for consumers of the connected library. A "private" link means that the library does not expose this dependency to its consumers.
As noted above, open_iA can be extended through modules; these modules (located in the modules
subfolder),
as well as the graphical user interface executable (in the gui
subfolder) and the command line executable
(in the cmd
subfolder) build upon the functionality provided by the core libraries:
At this point, the open_iA_cmd
executable still links to the guibase
lib. We are in the process of refactoring code so that in the future it will only need to link to the base
lib.
Note: What's described here has been changed in the past, and is subject to change in the future; we describe the structure of the current develop
branch here. Other branches and old versions deviate from this structure; for example, before version 2021.08, there was only a single core library.
open_iA Documentation, licensed under CC BY-NC-SA 4.0