pyushkevich/itksnap

Hello, How can I get familiar with the project design and source code more quickly?

Closed this issue · 1 comments

I tried to improve some of the features in the software (slow bubble diffusion, etc.), but I found it difficult to read the source code without project documentation. Well, I must admit that I am not experienced enough.
I really appreciate the contributions of all the developers, it's hard enough to write such beautiful code.

I would recommend to start from https://github.com/pyushkevich/itksnap/blob/master/GUI/Qt/main.cxx , which is the entry of the application. Pay attention to some important classes including IRISApplication, GenericImageData, ImageWrappers and AbstractModel.

SNAP is generally following the Model-View UI design pattern, where the Model layer is generic UI logic, and the View layer is currently implemented in Qt. There's a coupling framework in between to glue the Model and the View layer. Beneath the UI logic, there's an Application backend layer, where all the data structures and algorithms are implemented. Gaining some familiarity with ITK and VTK would help greatly in understanding the logic.

Hope this will get you started! And feel free let us know if you have encountered specific problem in understanding the code.