Some of the utilities of Version 3.2 have not yet been converted to HLUs (missing are histograms, 3-D wireframe surfaces and isosurfaces, weather maps, and polypack). Moreover, the wide range of flexibility available at the low level can never be fully implemented in a high level interface.
Thus, there may be situations for some time in which you will want to directly call routines in the low level libraries. Consequently, it is important to learn how to mix LLU calls with HLUs in an HLU program.
Some major considerations are:
#include <ncarg/gks.h> #include <ncarg/ncargC.h>
These libraries are automatically loaded for Fortran programs.
To accomplish this, you must retrieve the workstation id used by the
HLU program and assign it to the LLU workstation. In Fortran, the
calls would look like this:
C C Activate the GKS workstation using the HLU workstation id, gkswid. C call NhlFRLClear(grlist) call NhlFRLGetinteger(grlist,'wkGksWorkId',gkswid,ierr) call NhlFGetValues(wid,grlist,ierr) call gacwk(gkswid)
Then issue the LLU calls you want to make. Then deactivate the GKS workstation with the call:
In a C program, these calls would look like:
/* * Activate the GKS workstation using the HLU workstation id, gkswid. */ NhlRLClear(grlist); NhlRLGetInteger(grlist,NhlNwkGksWorkId,&gkswid); NhlGetValues(wid,grlist); gactivate_ws(gkswid); /* * Add your LLU codes here. */ gdeactivate_ws(gkswid);
In example cn11f.f (which you can copy into your local directory and execute using ng4ex), a call is made to the LLU contouring utility Conpack. The viewport and transformation are set with a call to the LLU set routine. The code is:
C C The following are calls to the low level ncar graphics library to C draw labeled contour lines C call gacwk(gkswid) call cpseti('set',0) call cpsetr('xc1',-90.0) call cpsetr('xcm',90.0) call cpsetr('yc1',0.0) call cpsetr('ycn',9.0) call cpsetr('cis',5.0) call cpsetr('dps',.02) call cpseti('lis',2) C C Note that y axis user coordinates are set to grid coordinates C rather than data coordinates. this is done because the input C data is irregularly spaced in the y direction. This 'tricks' C Conpack into thinking the grid points are evenly spaced. C call set(0.2,0.8,0.2,0.8,-90.0,90.0,0.0,9.0,1) call cprect(t,73,73,10,rwrk,5000,iwrk,1000) call cpcldr(t,rwrk,iwrk) call gdawk(gkswid) C C End of NCAR Graphics section. Note deactivation of gks workstation C
You can retrieve and execute the equivalent C example by issuing the
Some LLU codes automatically advance the frame before returning. In such cases, you will want to issue an HLU draw before the LLU call.
NG4.1 Home, Index, Examples, Glossary, Feedback, UG Contents, UG WhereAmI?