THE CTK LAYER STRUCTURE – A PROPOSAL FOR DISCUSSION
Ivo Wolf
CTK Workshop Chicago, November 29, 2009
Goals of CTK
Some of the Goals of CTK (taken from the website): provide a unified set of basic features for use in medical imaging continuously extend to new tasks within the scope of the toolkit
(medical imaging) without burdening existing tasks modular design with loose coupling: Small core
Collected from existing toolkits Extended with new features
Optional modules around the core Available separately (like in a package system of a linux distribution)
CTK Workshop Chicago, November 29, 2009
The CTK Layer Structure
Common core Optional modules
When a layer is on top of another, this is meant as “is using” (NOT necessarily “is inheriting”)
CTK core
Optional CTK Module I
Optional CTK Module II …
Optional CTK Module using Module I+II (+core)
CTK Workshop Chicago, November 29, 2009
The CTK Layer Structure
More concretely:(but just as an example!)
qCTKWidgets Module
CTK core
CTK-XDOM ModuleCTK-DICOM Module
qDICOM Module
CTK Workshop Chicago, November 29, 2009
qDICOM Module
The CTK Layer Structure
What is part of the core? Is it Qt-dependent?
qCTK core
CTK-DICOM Module
CTK core
Some other
TK
Some TK
Again anothe
r TK
CTK-XDOM Module
qCTKWidgets Module
Yet anothe
r TK
CTK Workshop Chicago, November 29, 2009
The CTK Layer Structure
Another example: Do we want to have a separate, common data / processing layer? And if so, where?
CTK Data/Processing
CTK core
qCTK core
CTK core
CTK Data/Processing
qCTK core
CTK core
CTK Data/Processing
qCTK core
CTK Workshop Chicago, November 29, 2009
The CTK Layer Structure
Suggestion: When we discuss a specific idea for CTK, we should
note, where we would prefer to put it: into the core into some other basic layer into an optional module
CTK Workshop Chicago, November 29, 2009
My Dream: A Package System
Dreaming … a package system … from which you can take what you need (and ignore, what you do not
want)
qDICOM Module
qCTK core
CTK-DICOM Module
Some other
TK
Again anothe
r TK
CTK-XDOM Module
qCTKWidgets Module
CTK core
Some TK
CTK core
Some TK
CTK Workshop Chicago, November 29, 2009
My Dream: A Package System
Dreaming … a package system … from which you can take what you need (and ignore, what you do not
want)
qDICOM Module
qCTK core
CTK-DICOM Module
Some other
TK
Again anothe
r TK
CTK-XDOM Module
qCTKWidgets Module
CTK core
Some TK
CTK Workshop Chicago, November 29, 2009
Questions
Do we agree on a layer structure for CTK? Yes.
Do we agree that CTK can grow over time by adding additional, optional layers? Yes, but there should be only a few of them.
Do we agree already whether we want to have the core:
Qt-GUI-free (I guess, we do agree …) or completely Qt-free (and a qCTK layer on top of it) or a Qt-dependent core with (or w/o) inheritance from QObject (and w/o otherwise
exposing the dependency of Qt)? Advantages: signal/slots, QtScripting, QThreads, reflections, … LGPL license issues will have to be addressed properly (e.g.: for building Qt
the Qt build system will be used)
CTK Workshop Chicago, November 29, 2009
CTK – getting started with coding …
Suggestion: Hacker Meeting (~ 1 week, Feb 22nd or Mar 1st, 1-2 per group) … hacking a small, initial prototype of a core
assemble a proposal for a list of features of the core collect pros and cons regarding Qt as base of CTK in advance: prepare some classes as basis for discussion (try to use it as base for ITK and VTK)
… and at least one optional module … preferably doing it this way: