Re: Vector based printing

Hi Rob,

I think the method you've described is about as good as
possible - its difficult in any case. I'm encouraged to
hear that you've already had some success. You may be
able to borrow some code from the render() method of

If you willing to contribute your code back to VisAD,
that would be great. Please let us know if you have any
other questions or problems.


On Thu, 8 Jul 2004, Rob Hackett wrote:

> Hi
>       I have a requirement to produce hardcopy charts from a visad 
> application.
> Due to the complexity of the data, the charts will likely be on A1 paper at
> a resolution way beyond what is possible using a simple raster based screen
> dump of a visad display. The only solution is to plot the components of the
> display via a vector based printing system such as postscript or CGM.
>       First of all, has anybody else done this already? I'd hate to reinvent 
> the
> weel.
>       If not, I have worked out a simple prototype of a system of doing this
> which appears to work. It goes as follows:
>       Prepare your data as normal and visualise using a DisplayImplJ3D.
>       When the chart is ready to plot, create a DisplayImplJ2D off-screen.
>       Use getMapVector() method of DisplayImplJ3D to get all the ScalarMaps 
> used
> in the on-screen display
>       Clone each of these ScalarMaps and add them to the off-screen display
>       Use getRenderers() method of DisplayImplJ3D to get the DataRenderers 
> from
> the on-screen display
>       From each of the DataRenderers, use getLink().getData() to get the data
> rendered on-screen
>       Create a DataReferenceImpl for each of these data items, and add to the
> off-screen display
>       Tweak the off-screen ScalarMaps and Controls so that they have suitable
> scales for an A1 image (or A4, etc)
>       Get the DisplayRendererJ2D from the off-screen display using
> getDisplayRenderer()
>       Get the root VisADGroup from the display renderer using getRoot()
>       Recursively parse this group to access its VisADAppearance children
>       From these, extract the VisADGeometryArray objects and plot them to a
> postscript file, PDF file, etc
>       Send the postscript file, PDF file, etc to the A1 printer
>       Does anybody have any comments on this way of printing? I have tested it
> with some success, but before I invest more time in implementing it I would
> be interested to know if anybody has any better ideas.
> Thanks,
> Rob