The design of IRIS was based on an already existing segmentation tool in use by the client. Our goal was to create a new segmentation tool whose interface mimicked the older program, but one that offered enhanced features our client found desirable. With this objective in mind, we designed a system consisting of six primary modules which do the bulk of the computing and one "support" module that keeps track of a set of global variables necessary for the program.
Due to the nature of the project, we felt it necessary to make two of the six primary modules global, the GUI and the VoxelData class. The VoxelData class is responsible for storing and maintaining all voxel information, and the five remaining classes all need access to the same set of data stored by a single instance of this class. The GUI must be global because it uses FLTK callback functions. The global support module, GlobalState, was not included in the GUI because its function is conceptually different from that of the GUI.