Regarding native win32 support, I have prototyped a native win32 executive
(FYI OpenDX consists of two processes at runtime - a UI, that includes the
visual programming environment, the interactors, the Image window etc, and
the exec, which does the real work), and an ActiveX component wrapper that
I call ActiveDX.  You can use any number of ActiveDX components in an
application, each customized by running its own OpenDX network, which is
actually a macro.  The ActiveDX infrastructure batches invokations of each
control's macro into a single main macro (there's a  sequence property of
the control that allows you to order the macro calls in the main macro).
The ActiveDX control has a property that allows you to specify a template
of its macro call, and another that allows you to substitute values for
names in the template.  There are two special parameter names that get
substituted by the ActiveDX infrastructure automatically: HWND, which
receivesthe hWnd of the control, allowing OpenDX to render into it, and
SIZE, which clues OpenDX in to how big an image to render.

So, for example, you can do a little isosurface viewer with a single
ActiveDX control, with an appropriate macro and the template (in
pseudo-Visual Basic):

adxCntl.template = "IsoControl(HWND, SIZE, FILENAME, ISOVALUE);"

Then you have another control allow the user to enter the name of the file
containing the volumetric data, and then set:

adxCntl.parameter = "FILENAME=whatever".

The network will run and show you an isosurface at the default value, since
we haven't specified a isovalue.  But we can:

adxCntl.parameter = "ISOVALUE=9.876543"

You can share data between controls; for example with three controls:

adxCntl1.sequence = 0
adxCntl1.template = "data = ImportControl(FILENAME);"

adxCntl2.sequence = 1
adxCntl2.template = "IsoControl(HWND, SIZE, data, ISOVALUE);"

adx.Cntl3.sequence = 2
adx.Cntl3.template = "SliceControl(HWND, SIZE, data, AXIS, WHICH):"

There's more about ActiveDX in the OpenDX mailing list archives.

Porting the standard OpenDX UI would be difficult; there's a lot of X in
there, much of which is pretty low-level, including a bunch of custom
widgets.  There is, however, rumors of interest in doing so, possibly
supported by Microsoft itself.  More about that, too, in the OpenDX mailing
list archives, I think.

Greg





Porting the OpenDX UI

Reply via email to