Ignore:
Timestamp:
May 27, 2009, 6:16:36 PM (15 years ago)
Author:
gah
Message:

change unirect?d parsing for flows to not call Tcl command

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/nanovis/FlowCmd.cpp

    r1468 r1469  
    115115}
    116116
     117FlowParticles::~FlowParticles(void)
     118{
     119    if (_rendererPtr != NULL) {
     120        delete _rendererPtr;
     121    }
     122    if (_hashPtr != NULL) {
     123        Tcl_DeleteHashEntry(_hashPtr);
     124    }
     125    Rappture::FreeSwitches(_switches, &_sv, 0);
     126}
     127
    117128void
    118129FlowParticles::Render(void)
     
    187198    float x0, y0, z0, x1, y1, z1;
    188199    x0 = y0 = z0 = 0.0f;
    189     x1 = y1 = z1 = 1.0f;
     200    x1 = y1 = z1 = 0.0f;
    190201    if (max.y  > min.y) {
    191202        y0 = (_sv.corner1.y - min.y) / (max.y - min.y);
     
    661672}
    662673
     674
    663675static int
    664676FlowDataFileOp(ClientData clientData, Tcl_Interp *interp, int objc,
     
    692704    if ((length > 4) && (strncmp(bytes, "<DX>", 4) == 0)) {
    693705        Rappture::Unirect3d *dataPtr;
    694 
    695706        dataPtr = new Rappture::Unirect3d(nComponents);
    696707        if (!dataPtr->ImportDx(result, nComponents, length-4, bytes+4)) {
     
    702713    } else if ((length > 10) && (strncmp(bytes, "unirect3d ", 10) == 0)) {
    703714        Rappture::Unirect3d *dataPtr;
    704         Tcl_CmdInfo cmdInfo;
    705 
    706         /* Set the clientdata field of the unirect3d command to contain
    707          * the local data structure. */
    708715        dataPtr = new Rappture::Unirect3d(nComponents);
    709         if (!Tcl_GetCommandInfo(interp, "unirect3d", &cmdInfo)) {
    710             return TCL_ERROR;
    711         }
    712         cmdInfo.objClientData = (ClientData)dataPtr;   
    713         Tcl_SetCommandInfo(interp, "unirect3d", &cmdInfo);
    714         Tcl_Obj *objPtr;
    715         objPtr = Tcl_NewStringObj(buf.bytes(), buf.size());
    716         int result;
    717         Tcl_IncrRefCount(objPtr);
    718         result = Tcl_GlobalEvalObj(interp, objPtr);
    719         Tcl_DecrRefCount(objPtr);
    720         if (result != TCL_OK) {
     716        if (dataPtr->ParseBuffer(interp, buf) != TCL_OK) {
    721717            delete dataPtr;
    722718            return TCL_ERROR;
    723719        }
    724         if (!dataPtr->isInitialized()) {
    725             delete dataPtr;
    726             return TCL_ERROR;
    727         }
    728720        flowPtr->SetData(dataPtr);
    729721    } else if ((length > 10) && (strncmp(bytes, "unirect2d ", 10) == 0)) {
    730         Rappture::Unirect2d *dataPtr;
    731         Tcl_CmdInfo cmdInfo;
    732 
    733         /* Set the clientdata field of the unirect3d command to contain
    734          * the local data structure. */
    735         dataPtr = new Rappture::Unirect2d();
    736         if (!Tcl_GetCommandInfo(interp, "unirect2d", &cmdInfo)) {
     722        Rappture::Unirect2d *u2dPtr;
     723        u2dPtr = new Rappture::Unirect2d(nComponents);
     724        if (u2dPtr->ParseBuffer(interp, buf) != TCL_OK) {
     725            delete u2dPtr;
    737726            return TCL_ERROR;
    738727        }
    739         cmdInfo.objClientData = (ClientData)dataPtr;   
    740         Tcl_SetCommandInfo(interp, "unirect2d", &cmdInfo);
    741         Tcl_Obj *objPtr;
    742         objPtr = Tcl_NewStringObj(buf.bytes(), buf.size());
    743         int result;
    744         Tcl_IncrRefCount(objPtr);
    745         result = Tcl_EvalObjEx(interp, objPtr, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT);
    746         Tcl_DecrRefCount(objPtr);
    747         if (result != TCL_OK) {
    748             delete dataPtr;
    749             return TCL_ERROR;
    750         }
    751         if (!dataPtr->isInitialized()) {
    752             delete dataPtr;
    753             return TCL_ERROR;
    754         }
    755         Rappture::Unirect3d *d3Ptr = new Rappture::Unirect3d(nComponents);
    756         d3Ptr->Convert(dataPtr);
    757         flowPtr->SetData(d3Ptr);
    758         delete dataPtr;
     728        Rappture::Unirect3d *dataPtr;
     729        dataPtr = new Rappture::Unirect3d(nComponents);
     730        dataPtr->Convert(u2dPtr);
     731        flowPtr->SetData(dataPtr);
     732        delete u2dPtr;
    759733    } else {
     734        fprintf(stderr, "header is %.14s\n", buf.bytes());
    760735        Rappture::Unirect3d *dataPtr;
    761 
    762         fprintf(stderr, "header is %.14s\n", buf.bytes());
    763736        dataPtr = new Rappture::Unirect3d(nComponents);
    764737        if (!dataPtr->ImportDx(result, nComponents, length, bytes)) {
     
    816789    if ((length > 4) && (strncmp(bytes, "<DX>", 4) == 0)) {
    817790        Rappture::Unirect3d *dataPtr;
    818 
    819791        dataPtr = new Rappture::Unirect3d(nComponents);
    820792        if (!dataPtr->ImportDx(result, nComponents, length - 4, bytes + 4)) {
     
    826798    } else if ((length > 10) && (strncmp(bytes, "unirect3d ", 10) == 0)) {
    827799        Rappture::Unirect3d *dataPtr;
    828         Tcl_CmdInfo cmdInfo;
    829 
    830         /* Set the clientdata field of the unirect3d command to contain
    831          * the local data structure. */
    832800        dataPtr = new Rappture::Unirect3d(nComponents);
    833         if (!Tcl_GetCommandInfo(interp, "unirect3d", &cmdInfo)) {
    834             return TCL_ERROR;
    835         }
    836         cmdInfo.objClientData = (ClientData)dataPtr;   
    837         Tcl_SetCommandInfo(interp, "unirect3d", &cmdInfo);
    838         Tcl_Obj *objPtr;
    839         objPtr = Tcl_NewStringObj(buf.bytes(), buf.size());
    840         int result;
    841         Tcl_IncrRefCount(objPtr);
    842         result = Tcl_EvalObjEx(interp, objPtr, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT);
    843         Tcl_DecrRefCount(objPtr);
    844         if (result != TCL_OK) {
     801        if (dataPtr->ParseBuffer(interp, buf) != TCL_OK) {
    845802            delete dataPtr;
    846803            return TCL_ERROR;
    847804        }
    848         if (!dataPtr->isInitialized()) {
    849             delete dataPtr;
    850             return TCL_ERROR;
    851         }
    852805        flowPtr->SetData(dataPtr);
    853806    } else if ((length > 10) && (strncmp(bytes, "unirect2d ", 10) == 0)) {
    854         Rappture::Unirect2d *dataPtr;
    855         Tcl_CmdInfo cmdInfo;
    856 
    857         /* Set the clientdata field of the unirect3d command to contain
    858          * the local data structure. */
    859         dataPtr = new Rappture::Unirect2d();
    860         if (!Tcl_GetCommandInfo(interp, "unirect2d", &cmdInfo)) {
     807        Rappture::Unirect2d *u2dPtr;
     808        u2dPtr = new Rappture::Unirect2d(nComponents);
     809        if (u2dPtr->ParseBuffer(interp, buf) != TCL_OK) {
     810            delete u2dPtr;
    861811            return TCL_ERROR;
    862812        }
    863         cmdInfo.objClientData = (ClientData)dataPtr;   
    864         Tcl_SetCommandInfo(interp, "unirect2d", &cmdInfo);
    865         Tcl_Obj *objPtr;
    866         objPtr = Tcl_NewStringObj(buf.bytes(), buf.size());
    867         int result;
    868         Tcl_IncrRefCount(objPtr);
    869         result = Tcl_EvalObjEx(interp, objPtr, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT);
    870         Tcl_DecrRefCount(objPtr);
    871         if (result != TCL_OK) {
    872             delete dataPtr;
    873             return TCL_ERROR;
    874         }
    875         if (!dataPtr->isInitialized()) {
    876             delete dataPtr;
    877             return TCL_ERROR;
    878         }
    879         Rappture::Unirect3d *d3Ptr = new Rappture::Unirect3d(nComponents);
    880         d3Ptr->Convert(dataPtr);
    881         flowPtr->SetData(d3Ptr);
    882         delete dataPtr;
     813        Rappture::Unirect3d *dataPtr;
     814        dataPtr = new Rappture::Unirect3d(nComponents);
     815        dataPtr->Convert(u2dPtr);
     816        flowPtr->SetData(dataPtr);
     817        delete u2dPtr;
    883818    } else {
     819        fprintf(stderr, "header is %.14s\n", buf.bytes());
    884820        Rappture::Unirect3d *dataPtr;
    885 
    886         fprintf(stderr, "header is %.14s\n", buf.bytes());
    887821        dataPtr = new Rappture::Unirect3d(nComponents);
    888822        if (!dataPtr->ImportDx(result, nComponents, length, bytes)) {
     
    1029963    }
    1030964    Tcl_SetHashValue(hPtr, flowPtr);
    1031     EventuallyRedraw(MAP_FLOWS);
    1032965    return TCL_OK;
    1033966}
     
    14171350        return TCL_ERROR;
    14181351    }
    1419     NanoVis::EventuallyRedraw(NanoVis::MAP_FLOWS);
     1352    NanoVis::EventuallyRedraw();
    14201353    return TCL_OK;
    14211354}
     
    14391372    }
    14401373    particlesPtr->Configure();
    1441     NanoVis::EventuallyRedraw(NanoVis::MAP_FLOWS);
     1374    NanoVis::EventuallyRedraw();
    14421375    Tcl_SetObjResult(interp, objv[3]);
    14431376    return TCL_OK;
     
    14751408        }
    14761409    }
    1477     NanoVis::EventuallyRedraw(NanoVis::MAP_FLOWS);
     1410    NanoVis::EventuallyRedraw();
    14781411    return TCL_OK;
    14791412}
     
    15601493        return TCL_ERROR;
    15611494    }
    1562     NanoVis::EventuallyRedraw(NanoVis::MAP_FLOWS);
     1495    NanoVis::EventuallyRedraw();
    15631496    Tcl_SetObjResult(interp, objv[3]);
    15641497    return TCL_OK;
     
    17491682    }
    17501683    Tcl_SetObjResult(interp, objv[2]);
    1751     NanoVis::EventuallyRedraw(NanoVis::MAP_FLOWS);
     1684    NanoVis::EventuallyRedraw();
    17521685    return TCL_OK;
    17531686}
     
    18311764    }
    18321765    int i;
     1766    NanoVis::AdvectFlows();
    18331767    for (i = 0; i < nSteps; i++) {
     1768        Trace("advect step=%d\n", i);
    18341769        NanoVis::licRenderer->convolve();
    18351770        NanoVis::AdvectFlows();
Note: See TracChangeset for help on using the changeset viewer.