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

Reply via email to