Changeset 1475 for trunk/packages/vizservers/nanovis/Command.cpp
- Timestamp:
- May 29, 2009, 1:13:42 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/Command.cpp
r1474 r1475 363 363 /* 364 364 * ---------------------------------------------------------------------- 365 * FUNCTION: GetVolume Index365 * FUNCTION: GetVolumeDataID 366 366 * 367 367 * Used internally to decode a series of volume index values and … … 375 375 */ 376 376 static int 377 GetVolume Index(Tcl_Interp *interp, Tcl_Obj *objPtr, unsigned int *indexPtr)378 { 379 int index;380 if (Tcl_GetIntFromObj(interp, objPtr, & index) != TCL_OK) {377 GetVolumeDataID(Tcl_Interp *interp, Tcl_Obj *objPtr, unsigned int *dataIDPtr) 378 { 379 int volDataID; 380 if (Tcl_GetIntFromObj(interp, objPtr, &volDataID) != TCL_OK) { 381 381 return TCL_ERROR; 382 382 } … … 386 386 return TCL_ERROR; 387 387 } 388 /* 388 389 if (index >= (int)NanoVis::volume.size()) { 389 390 Tcl_AppendResult(interp, "index \"", Tcl_GetString(objPtr), … … 391 392 return TCL_ERROR; 392 393 } 393 *indexPtr = (unsigned int)index; 394 */ 395 396 NanoVis::VolumeMap::iterator iter = NanoVis::volumeMap.find(volDataID); 397 if (iter == NanoVis::volumeMap.end()) 398 { 399 Tcl_AppendResult(interp, "dataID \"", Tcl_GetString(objPtr), 400 "\" is out found", (char*)NULL); 401 return TCL_ERROR; 402 } 403 404 *dataIDPtr = (unsigned int)volDataID; 394 405 return TCL_OK; 395 406 } … … 411 422 GetVolumeFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Volume **volPtrPtr) 412 423 { 413 unsigned int index;414 if (GetVolume Index(interp, objPtr, &index) != TCL_OK) {424 unsigned int volDataID; 425 if (GetVolumeDataID(interp, objPtr, &volDataID) != TCL_OK) { 415 426 return TCL_ERROR; 416 427 } 417 428 Volume *vol; 418 vol = NanoVis::volume [index];429 vol = NanoVis::volumeMap[volDataID]; 419 430 if (vol == NULL) { 420 Tcl_AppendResult(interp, "no volume defined for index\"",431 Tcl_AppendResult(interp, "no volume defined for volDataID \"", 421 432 Tcl_GetString(objPtr), "\"", (char*)NULL); 422 433 return TCL_ERROR; 423 434 } 424 435 *volPtrPtr = vol; 436 //printf("volume [%d] found\n", vol->getDataID()); 425 437 return TCL_OK; 426 438 } … … 428 440 /* 429 441 * ---------------------------------------------------------------------- 430 * FUNCTION: GetVolume Indices()442 * FUNCTION: GetVolumeDataIDs() 431 443 * 432 444 * Used internally to decode a series of volume index values and … … 440 452 */ 441 453 static int 442 GetVolume Indices(Tcl_Interp *interp, int objc, Tcl_Obj *const *objv,454 GetVolumeDataIDs(Tcl_Interp *interp, int objc, Tcl_Obj *const *objv, 443 455 vector<unsigned int>* vectorPtr) 444 456 { 445 457 if (objc == 0) { 446 for (unsigned int n = 0; n < NanoVis::volume.size(); n++) { 447 if (NanoVis::volume[n] != NULL) { 448 vectorPtr->push_back(n); 449 } 458 NanoVis::VolumeMap::iterator iter; 459 for (iter = NanoVis::volumeMap.begin(); iter != NanoVis::volumeMap.end(); ++iter) { 460 if ((*iter).second != NULL) { 461 vectorPtr->push_back((*iter).first); 462 } 450 463 } 451 464 } else { 465 NanoVis::VolumeMap::iterator iter; 452 466 for (int n = 0; n < objc; n++) { 453 unsigned int index;454 455 if (GetVolume Index(interp, objv[n], &index) != TCL_OK) {467 unsigned int volDataID; 468 469 if (GetVolumeDataID(interp, objv[n], &volDataID) != TCL_OK) { 456 470 return TCL_ERROR; 457 471 } 458 if (NanoVis::volume[index] != NULL) { 459 vectorPtr->push_back(index); 472 473 iter = NanoVis::volumeMap.find(volDataID); 474 if ((iter != NanoVis::volumeMap.end()) && ((*iter).second != 0)) { 475 vectorPtr->push_back(volDataID); 460 476 } 461 477 } … … 482 498 { 483 499 if (objc == 0) { 484 for (unsigned int n = 0; n < NanoVis::volume.size(); n++) { 485 if (NanoVis::volume[n] != NULL) { 486 vectorPtr->push_back(NanoVis::volume[n]); 500 NanoVis::VolumeMap::iterator iter; 501 for (iter = NanoVis::volumeMap.begin(); iter != NanoVis::volumeMap.end(); ++iter) { 502 if ((*iter).second != NULL) { 503 vectorPtr->push_back((*iter).second); 487 504 } 488 505 } … … 1185 1202 { 1186 1203 vector<unsigned int> ivol; 1187 if (GetVolume Indices(interp, objc - 3, objv + 3, &ivol) != TCL_OK) {1188 return TCL_ERROR; 1189 } 1190 Trace("parsing volume index\n");1204 if (GetVolumeDataIDs(interp, objc - 3, objv + 3, &ivol) != TCL_OK) { 1205 return TCL_ERROR; 1206 } 1207 Trace("parsing volume data identifier\n"); 1191 1208 vector<unsigned int>::iterator iter; 1192 1209 for (iter = ivol.begin(); iter != ivol.end(); iter++) { 1193 Trace(" index: %d\n", *iter);1194 NanoVis::vol_renderer->addAnimatedVolume(NanoVis::volume [*iter], *iter);1210 Trace("volDataID: %d\n", *iter); 1211 NanoVis::vol_renderer->addAnimatedVolume(NanoVis::volumeMap[*iter], *iter); 1195 1212 } 1196 1213 return TCL_OK; … … 1239 1256 return TCL_ERROR; 1240 1257 } 1241 int n = NanoVis::n_volumes;1242 1258 char header[6]; 1243 1259 memcpy(header, buf.bytes(), sizeof(char) * 5); … … 1260 1276 printf("Checking header[%s]\n", header); 1261 1277 fflush(stdout); 1278 1279 Volume *volPtr = 0; 1280 int volDataID = -1; 1262 1281 if (strcmp(header, "<HDR>") == 0) { 1263 Volume* vol = NULL;1264 1265 1282 printf("ZincBlende stream is in\n"); 1266 1283 fflush(stdout); … … 1270 1287 1271 1288 #if _LOCAL_ZINC_TEST_ 1272 vol = NvZincBlendeReconstructor::getInstance()->loadFromMemory(b);1289 volPtr = NvZincBlendeReconstructor::getInstance()->loadFromMemory(b); 1273 1290 #else 1274 vol = NvZincBlendeReconstructor::getInstance()->loadFromMemory((void*) buf.bytes());1291 volPtr = NvZincBlendeReconstructor::getInstance()->loadFromMemory((void*) buf.bytes()); 1275 1292 #endif /*_LOCAL_ZINC_TEST_*/ 1276 if (vol == NULL) {1293 if (volPtr == NULL) { 1277 1294 Tcl_AppendResult(interp, "can't get volume instance", (char *)NULL); 1278 1295 return TCL_OK; … … 1280 1297 printf("finish loading\n"); 1281 1298 fflush(stdout); 1282 while (NanoVis::n_volumes <= n) { 1283 NanoVis::volume.push_back((Volume*) NULL); 1284 NanoVis::n_volumes++; 1285 } 1286 1287 if (NanoVis::volume[n] != NULL) { 1288 delete NanoVis::volume[n]; 1289 NanoVis::volume[n] = NULL; 1299 1300 // INSOO 1301 // TBD.. 1302 volDataID = NanoVis::generate_data_identifier(); 1303 NanoVis::VolumeMap::iterator iter; 1304 iter = NanoVis::volumeMap.find(volDataID); 1305 if (iter != NanoVis::volumeMap.end()) 1306 { 1307 if (iter->second != NULL) { 1308 iter->second->unref(); 1309 iter->second = 0; 1310 } 1290 1311 } 1291 1312 1292 1313 float dx0 = -0.5; 1293 float dy0 = -0.5*vol ->height/vol->width;1294 float dz0 = -0.5*vol ->depth/vol->width;1295 vol ->move(Vector3(dx0, dy0, dz0));1296 1297 NanoVis::volume [n] = vol;1314 float dy0 = -0.5*volPtr->height/volPtr->width; 1315 float dz0 = -0.5*volPtr->depth/volPtr->width; 1316 volPtr->move(Vector3(dx0, dy0, dz0)); 1317 1318 NanoVis::volumeMap[volDataID] = volPtr; 1298 1319 #if __TEST_CODE__ 1299 1320 } else if (strcmp(header, "<FET>") == 0) { … … 1308 1329 #endif /*__TEST_CODE__*/ 1309 1330 } else if (strcmp(header, "<ODX>") == 0) { 1331 /* 1310 1332 Rappture::Outcome err; 1311 1333 … … 1316 1338 return TCL_ERROR; 1317 1339 } 1340 */ 1318 1341 } else { 1342 volDataID = NanoVis::generate_data_identifier(); 1343 printf("test\n"); 1319 1344 #ifdef notdef 1320 1345 Rappture::Unirect3d *dataPtr; … … 1329 1354 dataPtr->Resample(context, 30); 1330 1355 #endif 1331 Volume *volPtr; 1332 volPtr = NanoVis::load_volume(index, nx, ny, nz, 4, data, vmin, vmax, 1356 volPtr = NanoVis::load_volume(volDataID, nx, ny, nz, 4, data, vmin, vmax, 1333 1357 nzero_min); 1334 1358 … … 1353 1377 Rappture::Outcome context; 1354 1378 #if ISO_TEST 1355 result = load_volume_stream2(context, n, fdata);1379 result = load_volume_stream2(context, volDataID, fdata); 1356 1380 #else 1357 result = load_volume_stream(context, n, fdata);1381 result = load_volume_stream(context, volDataID, fdata); 1358 1382 #endif 1359 1383 if (!result) { … … 1361 1385 return TCL_ERROR; 1362 1386 } 1387 volPtr = NanoVis::volumeMap[volDataID]; 1363 1388 } 1364 1389 … … 1369 1394 // overwrite the first, so the first won't appear at all. 1370 1395 // 1371 if (NanoVis::volume[n] != NULL) { 1372 //NanoVis::volume[n]->set_n_slice(512-n); 1373 NanoVis::volume[n]->set_n_slice(256-n); 1374 NanoVis::volume[n]->disable_cutplane(0); 1375 NanoVis::volume[n]->disable_cutplane(1); 1376 NanoVis::volume[n]->disable_cutplane(2); 1377 1378 NanoVis::vol_renderer->add_volume(NanoVis::volume[n], 1396 if (volPtr != NULL) { 1397 //volPtr->set_n_slice(512-n); 1398 //volPtr->set_n_slice(256-n); 1399 volPtr->set_n_slice(256); 1400 volPtr->disable_cutplane(0); 1401 volPtr->disable_cutplane(1); 1402 volPtr->disable_cutplane(2); 1403 1404 NanoVis::vol_renderer->add_volume(volPtr, 1379 1405 NanoVis::get_transfunc("default")); 1380 } 1381 1382 { 1383 Volume *volPtr; 1406 1384 1407 char info[1024]; 1385 1408 ssize_t nWritten; … … 1388 1411 NanoVis::SetVolumeRanges(); 1389 1412 } 1390 volPtr = NanoVis::volume[n]; 1413 1391 1414 // FIXME: strlen(info) is the return value of sprintf 1392 1415 sprintf(info, "nv>data tag %s id %d min %g max %g vmin %g vmax %g\n", 1393 tag, n, volPtr->wAxis.min(), volPtr->wAxis.max(),1416 tag, volDataID, volPtr->wAxis.min(), volPtr->wAxis.max(), 1394 1417 Volume::valueMin, Volume::valueMax); 1395 1418 nWritten = write(0, info, strlen(info)); … … 1683 1706 Tcl_Obj *const *objv) 1684 1707 { 1685 NanoVis::volume[1]->data(false); 1686 NanoVis::volume[1]->visible(false); 1708 NanoVis::VolumeMap::iterator iter = NanoVis::volumeMap.find(1); 1709 if (iter != NanoVis::volumeMap.end()) 1710 { 1711 NanoVis::volumeMap[1]->data(false); 1712 NanoVis::volumeMap[1]->visible(false); 1713 } 1687 1714 return TCL_OK; 1688 1715 } … … 2413 2440 NanoVis::SetHeightmapRanges(); 2414 2441 } 2442 2415 2443 NanoVis::render_legend(tf, HeightMap::valueMin, HeightMap::valueMax, w, h, 2416 2444 "label"); 2417 2445 return TCL_OK; 2418 2446 }
Note: See TracChangeset
for help on using the changeset viewer.