static void _RGISNetPanelColorCBK (Widget widget,void *Flags,XmAnyCallbackStruct *callData) { DBObjData *data; XtVaGetValues (widget,XmNuserData, &data, NULL); data->Flags (DBDataFlagDispModeNetColors,DBClear); data->Flags ((DBUnsigned) ((char *) Flags - (char *) NULL),DBSet); }
static void _RGISPanelFlagsToggleCBK (Widget widget,void *Flags,XmToggleButtonCallbackStruct *callData) { DBObjData *data; XtVaGetValues (widget,XmNuserData, &data, NULL); data->Flags ((DBUnsigned) ((char *) Flags - (char *) NULL),callData->set ? DBSet : DBClear); }
void RGISAnalyseLineMSampleGridCBK (Widget widget, RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { DBInt layerID, layerNum; DBCoordinate coord; DBFloat realValue; DBDataset *dataset = UIDataset (); DBObjData *dbData = dataset->Data (); DBObjData *grdData = dbData->LinkedData (); DBObjData *tblData; DBObjTable *table, *itemTable = dbData->Table (DBrNItems); DBObjTableField *lineIDFLD; DBObjTableField *layerIDFLD; DBObjTableField *layerNameFLD; DBObjTableField *fromValueFLD = (DBObjTableField *) NULL; DBObjTableField *toValueFLD = (DBObjTableField *) NULL; DBVLineIF *lineIF = (DBVLineIF *) NULL; DBGridIF *gridIF; DBObjRecord *record, *layerRec, *tblRec; DBObjectLIST<DBObjTableField> *fields; widget = widget; callData = callData; gridIF = new DBGridIF (grdData); for (layerID = 0;layerID < gridIF->LayerNum ();++layerID) { layerRec = gridIF->Layer (layerID); if ((layerRec->Flags () & DBObjectFlagIdle) != DBObjectFlagIdle) ++layerNum; } if (layerNum < 1) { CMmsgPrint (CMmsgAppError, "No Layer to Process in: %s %d",__FILE__,__LINE__); delete gridIF; return; } tblData = new DBObjData ("",DBTypeTable); tblData->Document (DBDocGeoDomain,dbData->Document (DBDocGeoDomain)); tblData->Document (DBDocSubject,grdData->Document (DBDocSubject)); if (UIDataHeaderForm (tblData) == false) { delete gridIF; delete tblData; return; } table = tblData->Table (DBrNItems); lineIF = new DBVLineIF (dbData); table->AddField (lineIDFLD = new DBObjTableField ("GHAASPointID",DBTableFieldInt, "%8d",sizeof (DBInt))); table->AddField (layerIDFLD = new DBObjTableField ("LayerID", DBTableFieldInt, "%4d",sizeof (DBShort))); table->AddField (layerNameFLD = new DBObjTableField ("LayerName", DBTableFieldString,"%s",DBStringLength)); table->AddField (fromValueFLD = new DBObjTableField (RGISLineFromNodeValue,DBTableFieldFloat,gridIF->ValueFormat (),sizeof (DBFloat4))); table->AddField (toValueFLD = new DBObjTableField (RGISLineToNodeValue,DBTableFieldFloat,gridIF->ValueFormat (),sizeof (DBFloat4))); grdData->Flags (DBObjectFlagProcessed,DBSet); UIPauseDialogOpen ((char *) "Sampling Grid(s)"); for (layerID = 0;layerID < gridIF->LayerNum ();++layerID) { layerRec = gridIF->Layer (layerID); if ((layerRec->Flags () & DBObjectFlagIdle) == DBObjectFlagIdle) continue; for (record = itemTable->First ();record != (DBObjRecord *) NULL;record = itemTable->Next ()) { if (UIPause ((layerRec->RowID () * itemTable->ItemNum () + record->RowID ()) * 100 / (itemTable->ItemNum () * gridIF->LayerNum ()))) goto Stop; if ((record->Flags () & DBObjectFlagIdle) == DBObjectFlagIdle) continue; tblRec = table->Add (record->Name ()); lineIDFLD->Int (tblRec,record->RowID () + 1); layerIDFLD->Int (tblRec,layerRec->RowID ()); layerNameFLD->String (tblRec,layerRec->Name ()); coord = lineIF->FromCoord (record); if (gridIF->Value (layerRec,coord,&realValue)) fromValueFLD->Float (tblRec,realValue); coord = lineIF->ToCoord (record); if (gridIF->Value (layerRec,coord,&realValue)) toValueFLD->Float (tblRec,realValue); } } Stop: UIPauseDialogClose (); delete gridIF; delete lineIF; fields = new DBObjectLIST<DBObjTableField> ("Field List"); fields->Add (new DBObjTableField (*lineIDFLD)); fields->Add (new DBObjTableField (*layerIDFLD)); table->ListSort (fields); workspace->CurrentData (tblData); delete fields; }
void _RGISUserFuncionQuery (DBObjData *dbData,UI2DView *view,XEvent *event) { DBInt sX, sY; DBCoordinate coord; DBObjData *data = dbData; UIAttribView *attribView; if (event->type != ButtonPress) return; sX = event->xbutton.x; sY = event->xbutton.y; view->Window2Map (sX,sY, &(coord.X), &(coord.Y)); for (data = dbData; (data != (DBObjData *) NULL) && ((data->Flags () & DBObjectFlagProcessed) != DBObjectFlagProcessed); data = data->LinkedData ()) { data->Flags (DBObjectFlagProcessed,DBSet); if ((data->Flags () & DBDataFlagUserModeFlags) == DBDataFlagUserModeQuery) { if ((attribView = (UIAttribView *) data->Display (UIAttribViewSTR)) == (UIAttribView *) NULL) data->DispAdd (attribView = new UIAttribView (data)); switch (data->Type ()) { case DBTypeVectorPoint: case DBTypeVectorLine: case DBTypeVectorPolygon: { DBVectorIF *vectorIF = new DBVectorIF (data); attribView->Draw (vectorIF->Item (coord)); } break; case DBTypeGridDiscrete: { DBGridIF *gridIF = new DBGridIF (data); attribView->Draw (gridIF->GridItem (coord)); delete gridIF; } break; case DBTypeGridContinuous: { DBPosition pos; DBGridIF *gridIF = new DBGridIF (data); char nameString [DBStringLength * 2]; DBObjRecord *record = new DBObjRecord ("Noname",sizeof (DBCoordinate)); gridIF->Coord2Pos (coord,pos); gridIF->Pos2Coord (pos,coord); sprintf (nameString,"CellCoordinate %10.2f%10.2f",coord.X,coord.Y); record->Name (nameString); memcpy (record->Data (),(void *) &coord,sizeof (coord)); attribView->Draw (record); delete record; delete gridIF; } break; case DBTypeNetwork: { DBNetworkIF *netIF = new DBNetworkIF (data); attribView->Draw (netIF->Cell (coord)); delete netIF; } break; default: CMmsgPrint (CMmsgAppError, "Invalid Data Type in: %s %d",__FILE__,__LINE__); break; } } } for (data = dbData; (data != (DBObjData *) NULL) && ((data->Flags () & DBObjectFlagProcessed) == DBObjectFlagProcessed); data = data->LinkedData ()) data->Flags (DBObjectFlagProcessed,DBClear); }
int main (int argc,char *argv []) { int argPos, argNum = argc, ret, verbose = false; char *title = (char *) NULL, *subject = (char *) NULL; char *domain = (char *) NULL, *version = (char *) NULL; DBInt shadeSet = DBFault; DBObjData *grdData; for (argPos = 1;argPos < argNum; ) { if (CMargTest (argv [argPos],"-t","--title")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing title!"); return (CMfailed); } title = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-u","--subject")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing subject!"); return (CMfailed); } subject = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-d","--domain")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing domain!"); return (CMfailed); } domain = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-v","--version")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing version!"); return (CMfailed); } version = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-s","--shadeset")) { int shadeCodes [] = { DBDataFlagDispModeContStandard, DBDataFlagDispModeContGreyScale, DBDataFlagDispModeContBlueScale, DBDataFlagDispModeContBlueRed, DBDataFlagDispModeContElevation }; const char *shadeSets [] = { "standard","grey","blue","blue-to-red","elevation", (char *) NULL }; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing shadeset!"); return (CMfailed); } if ((shadeSet = CMoptLookup (shadeSets,argv [argPos],true)) == DBFault) { CMmsgPrint (CMmsgUsrError,"Invalid shadeset!"); return (CMfailed); } shadeSet = shadeCodes [shadeSet]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-V","--verbose")) { verbose = true; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-h","--help")) { CMmsgPrint (CMmsgInfo,"%s [options] <input netcdf> <output data>",CMfileName(argv[0])); CMmsgPrint (CMmsgInfo," -t,--title [dataset title]"); CMmsgPrint (CMmsgInfo," -u,--subject [subject]"); CMmsgPrint (CMmsgInfo," -d,--domain [domain]"); CMmsgPrint (CMmsgInfo," -v,--version [version]"); CMmsgPrint (CMmsgInfo," -s,--shadeset [standard|grey|blue|blue-to-red|elevation]"); CMmsgPrint (CMmsgInfo," -V,--verbose"); CMmsgPrint (CMmsgInfo," -h,--help"); return (DBSuccess); } if ((argv [argPos][0] == '-') && (strlen (argv [argPos]) > 1)) { CMmsgPrint (CMmsgUsrError,"Unknown option: %s!",argv [argPos]); return (CMfailed); } argPos++; } if (argNum < 2) { CMmsgPrint (CMmsgUsrError,"Missing input file"); return (CMfailed); } if (argNum > 3) { CMmsgPrint (CMmsgUsrError,"Extra arguments!"); return (CMfailed); } grdData = new DBObjData ("Noname",DBTypeGridContinuous); ret = DBImportNetCDF (grdData,argv[1]); if (title != (char *) NULL) grdData->Name (title); if (subject != (char *) NULL) grdData->Document (DBDocSubject,subject); if (domain != (char *) NULL) grdData->Document (DBDocGeoDomain,domain); if (version != (char *) NULL) grdData->Document (DBDocVersion,version); if (shadeSet != DBFault) { grdData->Flags (DBDataFlagDispModeContShadeSets,DBClear); grdData->Flags (shadeSet,DBSet); } ret = (argNum > 2) && (strcmp (argv [2],"-") != 0) ? grdData->Write (argv [2]) : grdData->Write (stdout); delete grdData; return (ret); }
int main(int argc, char* argv[]) { int argPos, argNum = argc, ret, verbose = false; int layerID; int shadeSet = DBDataFlagDispModeContGreyScale; bool changeShadeSet = false; DBObjData *dbData; DBGridIF *gridIF; class RenameCLS { public: DBInt LayerID; char *LayerName; RenameCLS *Next; RenameCLS (DBInt layerID, char * layerName) { LayerID = layerID; LayerName = layerName; Next = (RenameCLS *) NULL; } void AddLink (RenameCLS *renameCLS) { if (Next == (RenameCLS *) NULL) Next = renameCLS; else Next->AddLink (renameCLS); } void DeleteLink () { if (Next != (RenameCLS *) NULL) { Next->DeleteLink (); delete Next; } } void RenameLayer (DBGridIF *gridIF) { DBObjRecord *layerRec; if ((layerRec = gridIF->Layer (LayerID - 1)) != (DBObjRecord *) NULL) gridIF->RenameLayer (layerRec,LayerName); if (Next != (RenameCLS *) NULL) Next->RenameLayer (gridIF); } } *renameCLS = (RenameCLS *) NULL; for (argPos = 1;argPos < argNum; ) { if (CMargTest (argv [argPos],"-r","--rename")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing layerID!"); return (CMfailed); } if (sscanf (argv[argPos],"%d",&layerID) != 1) { CMmsgPrint (CMmsgUsrError,"Invalid layerID!"); if (renameCLS != (RenameCLS *) NULL) { renameCLS->DeleteLink (); delete renameCLS; } return (CMfailed); } if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing layername!"); if (renameCLS != (RenameCLS *) NULL) { renameCLS->DeleteLink (); delete renameCLS; } return (CMfailed); } if (renameCLS == (RenameCLS *) NULL) renameCLS = new RenameCLS (layerID,argv [argPos]); else renameCLS->AddLink (new RenameCLS (layerID,argv [argPos])); if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-s","--shadeset")) { int shadeCodes [] = { DBDataFlagDispModeContStandard, DBDataFlagDispModeContGreyScale, DBDataFlagDispModeContBlueScale, DBDataFlagDispModeContBlueRed, DBDataFlagDispModeContElevation }; const char *shadeSets [] = { "standard","grey","blue","blue-to-red","elevation", (char *) NULL }; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing shadeset!"); return (CMfailed); } if ((shadeSet = CMoptLookup (shadeSets,argv [argPos],true)) == CMfailed) { CMmsgPrint (CMmsgUsrError,"Invalid shadeset!"); return (CMfailed); } shadeSet = shadeCodes [shadeSet]; changeShadeSet = true; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-V","--verbose")) { verbose = true; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-h","--help")) { CMmsgPrint (CMmsgInfo,"%s [options] <input grid> <output grid>",CMprgName(argv[0])); CMmsgPrint (CMmsgInfo," -r,--rename [layerID layerName]"); CMmsgPrint (CMmsgInfo," -s,--shadeset [standard|grey|blue|blue-to-red|elevation]"); CMmsgPrint (CMmsgInfo," -V,--verbose"); CMmsgPrint (CMmsgInfo," -h,--help"); return (DBSuccess); } if ((argv [argPos][0] == '-') && (strlen (argv [argPos]) > 1)) { CMmsgPrint (CMmsgUsrError,"Unknown option: %s!",argv [argPos]); if (renameCLS != (RenameCLS *) NULL) { renameCLS->DeleteLink (); delete renameCLS; } return (CMfailed); } argPos++; } if (argNum > 3) { CMmsgPrint (CMmsgUsrError,"Extra arguments!"); if (renameCLS != (RenameCLS *) NULL) { renameCLS->DeleteLink (); delete renameCLS; } return (CMfailed); } if (verbose) RGlibPauseOpen (argv[0]); dbData = new DBObjData (); ret = (argNum > 1) && (strcmp (argv [1],"-") != 0) ? dbData->Read (argv [1]) : dbData->Read (stdin); if ((ret == DBFault) || ((dbData->Type () != DBTypeGridContinuous) && (dbData->Type () != DBTypeGridDiscrete))) { delete dbData; if (renameCLS != (RenameCLS *) NULL) { renameCLS->DeleteLink (); delete renameCLS; } return (CMfailed); } gridIF = new DBGridIF (dbData); if (renameCLS != (RenameCLS *) NULL) renameCLS->RenameLayer (gridIF); if (changeShadeSet && (dbData->Type () == DBTypeGridContinuous)) { dbData->Flags (DBDataFlagDispModeContShadeSets,DBClear); dbData->Flags (shadeSet, DBSet); } ret = (argNum > 2) && (strcmp (argv [2],"-") != 0) ? dbData->Write (argv [2]) : dbData->Write (stdout); if (renameCLS != (RenameCLS *) NULL) { renameCLS->DeleteLink (); delete renameCLS; } delete gridIF; delete dbData; if (verbose) RGlibPauseClose (); return (ret); }
int main(int argc, char *argv[]) { int argPos, argNum = argc, ret, verbose = false; char *title = (char *) NULL, *subject = (char *) NULL; char *domain = (char *) NULL, *version = (char *) NULL; DBInt shadeSet = DBFault; DBInt gridType = DBFault; DBObjData *data; for (argPos = 1; argPos < argNum;) { if (CMargTest (argv[argPos], "-t", "--title")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing title!"); return (CMfailed); } title = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-u", "--subject")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing subject!"); return (CMfailed); } subject = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-d", "--domain")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing domain!"); return (CMfailed); } domain = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-v", "--version")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing version!"); return (CMfailed); } version = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-y", "--type")) { int typeCodes[] = {DBTypeGridContinuous, DBTypeGridDiscrete}; const char *types[] = {"continuous", "discrete", (char *) NULL}; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing gridtype!"); return (CMfailed); } if ((gridType = CMoptLookup(types, argv[argPos], true)) == CMfailed) { CMmsgPrint(CMmsgUsrError, "Invalid grid type!"); return (CMfailed); } gridType = typeCodes[gridType]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-s", "--shadeset")) { int shadeCodes[] = {DBDataFlagDispModeContStandard, DBDataFlagDispModeContGreyScale, DBDataFlagDispModeContBlueScale, DBDataFlagDispModeContBlueRed, DBDataFlagDispModeContElevation}; const char *shadeSets[] = {"standard", "grey", "blue", "blue-to-red", "elevation", (char *) NULL}; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing shadeset!"); return (CMfailed); } if ((shadeSet = CMoptLookup(shadeSets, argv[argPos], true)) == CMfailed) { CMmsgPrint(CMmsgUsrError, "Invalid shadeset!"); return (CMfailed); } shadeSet = shadeCodes[shadeSet]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-V", "--verbose")) { verbose = true; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-h", "--help")) { CMmsgPrint(CMmsgInfo, "%s [options] <dm file> <rgis file>", CMfileName(argv[0])); CMmsgPrint(CMmsgInfo, " -t,--title [dataset title]"); CMmsgPrint(CMmsgInfo, " -u,--subject [subject]"); CMmsgPrint(CMmsgInfo, " -d,--domain [domain]"); CMmsgPrint(CMmsgInfo, " -v,--version [version]"); CMmsgPrint(CMmsgInfo, " -y,--type [continuous|discrete]"); CMmsgPrint(CMmsgInfo, " -s,--shadeset [standard|grey|blue|blue-to-red|elevation]"); CMmsgPrint(CMmsgInfo, " -V,--verbose"); CMmsgPrint(CMmsgInfo, " -h,--help"); return (DBSuccess); } if ((argv[argPos][0] == '-') && (strlen(argv[argPos]) > 1)) { CMmsgPrint(CMmsgUsrError, "Unknown option: %s!", argv[argPos]); return (CMfailed); } argPos++; } if (argNum > 3) { CMmsgPrint(CMmsgUsrError, "Extra arguments!"); return (CMfailed); } if (verbose) RGlibPauseOpen(argv[0]); if (title == (char *) NULL) { CMmsgPrint(CMmsgUsrError, "Title is not set!"); return (CMfailed); } if (subject == (char *) NULL) subject = (char *) "Default Subject"; if (domain == (char *) NULL) domain = (char *) "Default Domain"; if (version == (char *) NULL) version = (char *) "0.01pre"; if (gridType == DBFault) gridType = DBTypeGridContinuous; data = new DBObjData(title, gridType); ret = (argNum > 1) && (strcmp(argv[1], "-") != 0) ? DBImportDMGrid(data, argv[1]) : DBImportDMGrid(data, stdin); if (ret == DBFault) { delete data; return (DBFault); } data->Document(DBDocSubject, subject); data->Document(DBDocGeoDomain, domain); data->Document(DBDocVersion, version); if (shadeSet != DBFault) { data->Flags(DBDataFlagDispModeContShadeSets, DBClear); data->Flags(shadeSet, DBSet); } ret = (argNum > 2) && (strcmp(argv[2], "-") != 0) ? data->Write(argv[2]) : data->Write(stdout); delete data; if (verbose) RGlibPauseClose(); return (ret); }
int main(int argc, char *argv[]) { int argPos, argNum = argc, ret, verbose = false; char *expStr = (char *) NULL; char *title = (char *) NULL, *subject = (char *) NULL; char *domain = (char *) NULL, *version = (char *) NULL; int shadeSet = DBDataFlagDispModeContGreyScale; bool shrink = true, flat = false; DBObjData *data; CMDgrdThreadData *threadData = new CMDgrdThreadData(); for (argPos = 1; argPos < argNum;) { if (CMargTest (argv[argPos], "-c", "--calculate")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing expression!"); delete threadData; return (CMfailed); } if (expStr != (char *) NULL) { CMmsgPrint(CMmsgUsrError, "Expression is already specified!"); delete threadData; return (CMfailed); } expStr = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-r", "--variable")) { char *varName; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing variable name!"); delete threadData; return (CMfailed); } varName = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing expression!"); delete threadData; return (CMfailed); } if (threadData->AddExpression(varName, argv[argPos]) == CMfailed) { CMmsgPrint(CMmsgUsrError, "Invalid Expression!"); delete threadData; return (CMfailed); } if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-x", "--extent")) { int codes[] = {true, false}; const char *names[] = {"minimum", "maximum", (char *) NULL}; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing extent mode!"); delete threadData; return (CMfailed); } if ((ret = CMoptLookup(names, argv[argPos], true)) == CMfailed) { CMmsgPrint(CMmsgUsrError, "Invalid extent mode!"); delete threadData; return (CMfailed); } shrink = codes[ret]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-n", "--interpolate")) { int codes[] = {false, true}; const char *names[] = {"surface", "flat", (char *) NULL}; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing interpolation mode!"); delete threadData; return (CMfailed); } if ((ret = CMoptLookup(names, argv[argPos], true)) == CMfailed) { CMmsgPrint(CMmsgUsrError, "Invalid interpolation mode!"); delete threadData; return (CMfailed); } flat = codes[ret]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-t", "--title")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing title!"); delete threadData; return (CMfailed); } title = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-u", "--subject")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing subject!"); delete threadData; return (CMfailed); } subject = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-d", "--domain")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing domain!"); delete threadData; return (CMfailed); } domain = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-v", "--version")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing version!"); delete threadData; return (CMfailed); } version = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-s", "--shadeset")) { int shadeCodes[] = {DBDataFlagDispModeContStandard, DBDataFlagDispModeContGreyScale, DBDataFlagDispModeContBlueScale, DBDataFlagDispModeContBlueRed, DBDataFlagDispModeContElevation}; const char *shadeSets[] = {"standard", "grey", "blue", "blue-to-red", "elevation", (char *) NULL}; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing shadeset!"); delete threadData; return (CMfailed); } if ((shadeSet = CMoptLookup(shadeSets, argv[argPos], true)) == CMfailed) { CMmsgPrint(CMmsgUsrError, "Invalid shadeset!"); delete threadData; return (CMfailed); } shadeSet = shadeCodes[shadeSet]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-V", "--verbose")) { verbose = true; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-h", "--help")) { CMmsgPrint(CMmsgInfo, "%s [options] <output file>", CMfileName(argv[0])); CMmsgPrint(CMmsgInfo, " -c,--calculate [expression]"); CMmsgPrint(CMmsgInfo, " -r,--variable [variable expression]"); CMmsgPrint(CMmsgInfo, " -n,--interpolate [surface|flat]"); CMmsgPrint(CMmsgInfo, " -x,--extent [maximum minimum]"); CMmsgPrint(CMmsgInfo, " -t,--title [dataset title]"); CMmsgPrint(CMmsgInfo, " -u,--subject [subject]"); CMmsgPrint(CMmsgInfo, " -d,--domain [domain]"); CMmsgPrint(CMmsgInfo, " -v,--version [version]"); CMmsgPrint(CMmsgInfo, " -s,--shadeset [standard|grey|blue|blue-to-red|elevation]"); CMmsgPrint(CMmsgInfo, " -V,--verbose"); CMmsgPrint(CMmsgInfo, " -h,--help"); return (DBSuccess); } if ((argv[argPos][0] == '-') && ((int) strlen(argv[argPos]) > 1)) { CMmsgPrint(CMmsgUsrError, "Unknown option: %s!", argv[argPos]); delete threadData; return (CMfailed); } argPos++; } if (expStr == (char *) NULL) { CMmsgPrint(CMmsgUsrError, "Missing expression!"); delete threadData; return (CMfailed); } if (argNum > 2) { CMmsgPrint(CMmsgUsrError, "Extra arguments!"); delete threadData; return (CMfailed); } if (verbose) RGlibPauseOpen(argv[0]); if (threadData->Configure(shrink, flat, expStr) == CMfailed) { delete threadData; return (CMfailed); } if (title == (char *) NULL) title = (char *) "Grid Calculate Result"; if (subject == (char *) NULL) subject = (char *) "GridCalc"; if (domain == (char *) NULL) domain = (char *) "Non-specified"; if (version == (char *) NULL) version = (char *) "0.01pre"; if (shadeSet == DBFault) shadeSet = DBDataFlagDispModeContGreyScale; if ((data = threadData->Compute(title, _CMDgrdCalculateUserFunc)) == (DBObjData *) NULL) { delete threadData; return (CMfailed); } delete threadData; data->Document(DBDocSubject, subject); data->Document(DBDocGeoDomain, domain); data->Document(DBDocVersion, version); data->Flags(DBDataFlagDispModeContShadeSets, DBClear); data->Flags(shadeSet, DBSet); ret = (argNum > 1) && (strcmp(argv[1], "-") != 0) ? data->Write(argv[1]) : data->Write(stdout); if (verbose) RGlibPauseClose(); return (ret); }