Hi all, First, just a word of thanks to all of you who have taken the time to play with the CC framework and for your many questions. Community participation is essential in a project like this.
We've been very busy the past few months trying to make the framework more extensible and easier to use. As we had warned in the 0.95 developer's guide, some breaking changes are coming in our next version of the framework. We must apologize for this, since we know it's frustrating. But we really believe the changes we've made will make plugin writing easier and more flexible in the long run. We'll do everything we can to help you migrate your existing plugins over to the 1.0 framework once we release it for real. If you're interested in seeing and trying out the new API, connect to our SVN repository and get the new code. It hasn't completely stabilized yet, but it's sufficiently "done" to give you an idea of what it'll be like. We'll be including a detailed section in the next release of the developer's guide that will list and explain all the changes that we've made. In the meantime, here are some of the major areas which have changed since 0.95: 1) Rendering. Much of the rendering architecture has been refactored. Previously, the entire workspace was a single Winforms UserControl; now, each tile is actually it's own UserControl. There are a number of advantages of doing it this way, but most importantly, it allows non-GDI rendering mechanisms (e.g. OpenGL, DirectX, etc.) to completely take over the tile. This will be very important when trying to plug in 3D functionality. It will thus be possible to render one tile using say, OpenGL and the adjacent tile using DirectX. It will even be possible to say, embed a video control in the tile, which might be useful for example, if you wanted to show a live ultrasound feed. 2) ImageViewerComponent. This class has been refactored so that it's much easier to use. You can now write code like: imageViewerComponent.LoadStudy(studyUID) imageViewerComponent.LoadImage(filename) 3) Graphics. We've refactored what was previously the "layer" subsystem into a more general "graphics" subsystem. A number of classes have been renamed so that they are more intuitive to use. We also now properly implement the Composite design pattern in our scene graph. Interactive graphics are also now simpler and better designed for extensibility. 4) Presentation images. All tools now interact with PresentationImage objects through interfaces, and not with the object itself. This allows a tool to be unaware of any particular subclass of PresentationImage, and thus can be used and reused with any PresentationImage subclass that supports the interface the tool uses. If you 5) Settings. An API has been added that supports the saving of both user and application scoped settings. 6) Text annotations. The annotation overlay text subsystem has been refactored using generics and delegates thus resulting in a far fewer classes and a simpler architecture. 7) Input management. Mouse input has been generalized to accommodate different input schemes (e.g., mouse tools: click-drag-release vs. click-release-move-click-release). Keyboard shortcuts are also now supported. I'll hold off on describing the scenarios in which these changes may have an impact, as this is just an overview. I know that's a lot of stuff. But I hope you'll hang in there with us. We'll be beefing up the developer's guide significantly for 1.0 with architectural diagrams, best practices and tutorials for common use cases to help you out. We'll also be starting a wiki page where you can download/upload sample projects that can be shared by the community. If you have any feedback on anything here, please feel free to post here and let us know. Norman _______________________________________________ dev mailing list [email protected] http://clearcanvas.ca/mailman/listinfo/dev_clearcanvas.ca
