/* ** $Id: xy03c.c,v 1.14 1995/06/22 21:09:26 haley Exp $ */ /*********************************************************************** * * * Copyright (C) 1995 * * University Corporation for Atmospheric Research * * All Rights Reserved * * * ***********************************************************************/ /* ** File: xy03c.c ** ** Author: Mary Haley ** National Center for Atmospheric Research ** PO 3000, Boulder, Colorado ** ** Date: Fri Jan 27 08:24:42 MST 1995 ** ** Description: This program shows how to create an XyPlot object ** with some of the XyPlot line resources tweaked. A ** resource file is used to changed the resources. ** This program uses the same Y-axis dataset as the ** example "xy02", but this time values for the X ** axis are specified, changing the look of the plot. ** ** The "CoordArrays" object is used to set up the data. ** */ #include #include #include #include #include #include #include #include #include #include /* * Define the number of points in the curve. */ #define NPTS 500 #define PI100 .031415926535898 main() { int appid,xworkid,plotid,dataid; int i, rlist, len[2]; float xdra[NPTS],ydra[NPTS], theta; float cmap[4][3]; int NCGM=0, X11=1, PS=0; /* * Initialize some data for the XyPlot object. */ for( i = 0; i < NPTS; i++ ) { theta = PI100*(float)(i); xdra[i] = 500.+.9*(float)(i)*cos(theta); ydra[i] = 500.+.9*(float)(i)*sin(theta); } /* * Initialize the HLU library and set up resource template. */ NhlInitialize(); rlist = NhlRLCreate(NhlSETRL); /* * Modify the color map. Color indices '0' and '1' are the background * and foreground colors respectively. */ cmap[0][0] = cmap[0][1] = cmap[0][2] = 0.; cmap[1][0] = cmap[1][1] = cmap[1][2] = 1.; cmap[2][0] = 0.; cmap[2][1] = .5; cmap[2][2] = 1.; cmap[3][0] = 0.; cmap[3][1] = 1.; cmap[3][2] = 0.; len[0] = 4; len[1] = 3; /* * Create Application object. The Application object name is used to * determine the name of the resource file, which is "xy03.res" in * this case. */ NhlRLClear(rlist); NhlRLSetString(rlist,NhlNappDefaultParent,"True"); NhlRLSetString(rlist,NhlNappUsrDir,"./"); NhlCreate(&appid,"xy03",NhlappClass,NhlDEFAULT_APP,rlist); if (NCGM) { /* * Create a meta file object. */ NhlRLClear(rlist); NhlRLSetString(rlist,NhlNwkMetaName,"./xy03c.ncgm"); NhlRLSetMDFloatArray(rlist,NhlNwkColorMap,&cmap[0][0],2,len); NhlCreate(&xworkid,"xy03Work",NhlncgmWorkstationClass, NhlDEFAULT_APP,rlist); } else if (X11) { /* * Create an XWorkstation object. */ NhlRLClear(rlist); NhlRLSetInteger(rlist,NhlNwkPause,True); NhlRLSetMDFloatArray(rlist,NhlNwkColorMap,&cmap[0][0],2,len); NhlCreate(&xworkid,"xy03Work",NhlxWorkstationClass, NhlDEFAULT_APP,rlist); } else if (PS) { /* * Create a PS workstation. */ NhlRLClear(rlist); NhlRLSetString(rlist,NhlNwkPSFileName,"./xy03c.ps"); NhlRLSetMDFloatArray(rlist,NhlNwkColorMap,&cmap[0][0],2,len); NhlCreate(&xworkid,"xy03Work",NhlpsWorkstationClass, NhlDEFAULT_APP,rlist); } /* * Define the data object. The id for this object will later be used * as the value for the XyPlot data resource, "xyCoordData". */ NhlRLClear(rlist); NhlRLSetFloatArray(rlist,NhlNcaXArray,xdra,NhlNumber(xdra)); NhlRLSetFloatArray(rlist,NhlNcaYArray,ydra,NhlNumber(ydra)); NhlCreate(&dataid,"xyData",NhlcoordArraysClass, NhlDEFAULT_APP,rlist); /* * Create the XyPlot object which is created as a child of the * Xworkstation object. The resources that are being changed are done * in the "xy03.res" file. */ NhlRLClear(rlist); NhlRLSetInteger(rlist,NhlNxyCoordData,dataid); NhlCreate(&plotid,"xyPlot",NhlxyPlotClass,xworkid,rlist); /* * Draw the plot. */ NhlDraw(plotid); NhlFrame(xworkid); /* * NhlDestroy destroys the given id and all of its children * so destroying "xworkid" will also destroy "plotid". */ NhlRLDestroy(rlist); NhlDestroy(xworkid); NhlDestroy(appid); /* * Restores state. */ NhlClose(); exit(0); }