Ignore:
Timestamp:
Mar 16, 2012 3:29:42 PM (12 years ago)
Author:
ldelgass
Message:

Use NvColorTableShader? in PlaneRenderer?, remove cg context param from ctrs that
don't need it (PlaneRenderer?, NvParticleRenderer?).

Location:
trunk/packages/vizservers/nanovis
Files:
10 edited

Legend:

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

    r2835 r2863  
    132132    _sv.position.flags = RELPOS;
    133133    _sv.color.r = _sv.color.b = _sv.color.g = _sv.color.a = 1.0f;
    134     _rendererPtr = new NvParticleRenderer(NMESH, NMESH,
    135                 /* Global nVidia Cg context */g_context);
     134    _rendererPtr = new NvParticleRenderer(NMESH, NMESH);
    136135}
    137136
  • trunk/packages/vizservers/nanovis/Makefile.in

    r2862 r2863  
    317317NvShader.o: NvShader.cpp NvShader.h
    318318NvStdVertexShader.o: NvStdVertexShader.cpp NvStdVertexShader.h
    319 NvVectorField.o: NvVectorField.cpp NvVectorField.h
     319NvVectorField.o: NvVectorField.cpp NvVectorField.h NvParticleRenderer.h
    320320NvVolumeShader.o: NvVolumeShader.cpp NvVolumeShader.h
    321321NvZincBlendeReconstructor.o: NvZincBlendeReconstructor.cpp NvZincBlendeReconstructor.h ZincBlendeVolume.h Volume.h Vector3.h
     
    351351dxReader.o: dxReader.cpp dxReaderCommon.h nanovis.h Unirect.h ZincBlendeVolume.h NvZincBlendeReconstructor.h
    352352dxReaderCommon.o: dxReaderCommon.cpp dxReaderCommon.h GradientFilter.h Vector3.h
    353 nanovis.o: nanovis.cpp nanovis.h $(AUXSRC)
     353nanovis.o: nanovis.cpp nanovis.h $(AUXSRC) FlowCmd.h Grid.h HeightMap.h NvCamera.h NvColorTableRenderer.h NvEventLog.h NvFlowVisRenderer.h NvLIC.h NvZincBlendeReconstructor.h PerfQuery.h PlaneRenderer.h PointSetRenderer.h PointSet.h RenderContext.h Switch.h Trace.h Unirect.h VelocityArrowsSlice.h VolumeInterpolator.h VolumeRenderer.h ZincBlendeVolume.h
  • trunk/packages/vizservers/nanovis/NvColorTableRenderer.cpp

    r2836 r2863  
    77
    88NvColorTableRenderer::NvColorTableRenderer() :
    9     _fonts(NULL)
     9    _fonts(NULL),
     10    _shader(new NvColorTableShader())
    1011{
    11     _shader = new NvColorTableShader();   
    1212}
    1313
  • trunk/packages/vizservers/nanovis/NvColorTableRenderer.h

    r2836 r2863  
    2525
    2626private:
    27     NvColorTableShader* _shader;
    28     R2Fonts* _fonts;
     27    R2Fonts *_fonts;
     28    NvColorTableShader *_shader;
    2929};
    3030
  • trunk/packages/vizservers/nanovis/NvParticleRenderer.cpp

    r2837 r2863  
    4646NvParticleAdvectionShaderInstance shaderInstance;
    4747
    48 NvParticleRenderer::NvParticleRenderer(int w, int h, CGcontext context) :
     48NvParticleRenderer::NvParticleRenderer(int w, int h) :
    4949    _particleSize(1.2),
    5050    scale(1, 1, 1),
     
    151151    int index;
    152152    bool particle;
    153     float* p = (float*) data;
    154     for (int i=0; i<psys_width; i++) {
    155         for (int j=0; j<psys_height; j++) {
     153    float *p = (float *)data;
     154    for (int i = 0; i < psys_width; i++) {
     155        for (int j = 0; j < psys_height; j++) {
    156156            index = i + psys_height*j;
    157157            particle = (rand() % 256) > 150;
  • trunk/packages/vizservers/nanovis/NvParticleRenderer.h

    r2844 r2863  
    4848{
    4949public:
    50     NvParticleRenderer(int w, int h, CGcontext context);
     50    NvParticleRenderer(int w, int h);
    5151
    5252    ~NvParticleRenderer();
  • trunk/packages/vizservers/nanovis/NvVectorField.cpp

    r2835 r2863  
    102102            renderer = (*iter).second;
    103103        } else {
    104             renderer = (*iter).second = new NvParticleRenderer(NMESH, NMESH, g_context);
     104            renderer = (*iter).second = new NvParticleRenderer(NMESH, NMESH);
    105105        }
    106106    } else {
    107         renderer = new NvParticleRenderer(NMESH, NMESH, g_context);
     107        renderer = new NvParticleRenderer(NMESH, NMESH);
    108108        _particleRendererMap[name] = renderer;
    109109    }
  • trunk/packages/vizservers/nanovis/PlaneRenderer.cpp

    r2857 r2863  
    1919#include "Trace.h"
    2020
    21 PlaneRenderer::PlaneRenderer(CGcontext _context, int _width, int _height) :
     21PlaneRenderer::PlaneRenderer(int width, int height) :
    2222    _active_plane(-1),
    2323    _n_planes(0),
    24     _render_width(_width),
    25     _render_height(_height),
    26     _g_context(_context)
     24    _render_width(width),
     25    _render_height(height),
     26    _shader(new NvColorTableShader())
    2727{
    2828    _plane.clear();
    2929    _tf.clear();
    30     init_shaders();
    3130}
    3231
    3332PlaneRenderer::~PlaneRenderer()
    3433{
    35 }
    36 
    37 //initialize the render shader
    38 void
    39 PlaneRenderer::init_shaders()
    40 {
    41     //plane rendering shader
    42     _fprog = LoadCgSourceProgram(_g_context, "one_plane.cg", CG_PROFILE_FP30,
    43                                  NULL);
    44     _data_param = cgGetNamedParameter(_fprog, "data");
    45     _tf_param = cgGetNamedParameter(_fprog, "tf");
    46     _render_param = cgGetNamedParameter(_fprog, "render_param");
     34    delete _shader;
    4735}
    4836
    4937int
    50 PlaneRenderer::add_plane(Texture2D* _p, TransferFunction* tfPtr)
     38PlaneRenderer::add_plane(Texture2D *p, TransferFunction *tfPtr)
    5139{
    5240    int ret = _n_planes;
    5341
    54     _plane.push_back(_p);
     42    _plane.push_back(p);
    5543    _tf.push_back(tfPtr);
    5644
     
    6351
    6452void
    65 PlaneRenderer::remove_plane(int index) {
    66     std::vector<Texture2D*>::iterator piter = _plane.begin()+index;
    67     std::vector<TransferFunction*>::iterator tfiter = _tf.begin()+index;
     53PlaneRenderer::remove_plane(int index)
     54{
     55    std::vector<Texture2D *>::iterator piter = _plane.begin()+index;
     56    std::vector<TransferFunction *>::iterator tfiter = _tf.begin()+index;
    6857
    6958    _plane.erase(piter);
     
    9584        return;
    9685
    97     activate_shader(_active_plane);
     86    _shader->bind(_plane[_active_plane], _tf[_active_plane]);
    9887    glBegin(GL_QUADS);
    9988    glTexCoord2f(0, 0); glVertex2f(0, 0);
     
    10291    glTexCoord2f(0, 1); glVertex2f(0, _render_height);
    10392    glEnd();
    104     deactivate_shader();
    105 
    106 }
    107 
    108 void
    109 PlaneRenderer::activate_shader(int index)
    110 {
    111     cgGLSetTextureParameter(_data_param, _plane[index]->id());
    112     cgGLSetTextureParameter(_tf_param, _tf[index]->id());
    113     cgGLEnableTextureParameter(_data_param);
    114     cgGLEnableTextureParameter(_tf_param);
    115 
    116     cgGLSetParameter4f(_render_param, 0., 0., 0., 0.);
    117 
    118     cgGLBindProgram(_fprog);
    119     cgGLEnableProfile(CG_PROFILE_FP30);
    120 }
    121 
    122 void
    123 PlaneRenderer::deactivate_shader()
    124 {
    125     cgGLDisableProfile(CG_PROFILE_FP30);
    126     cgGLDisableTextureParameter(_data_param);
    127     cgGLDisableTextureParameter(_tf_param);
     93    _shader->unbind();
    12894}
    12995
  • trunk/packages/vizservers/nanovis/PlaneRenderer.h

    r2834 r2863  
    2828
    2929#include "global.h"
     30#include "NvColorTableShader.h"
    3031#include "TransferFunction.h"
    3132#include "Texture2D.h"
     
    3435{
    3536public:
    36     PlaneRenderer(CGcontext _context, int width, int height);
     37    PlaneRenderer(int width, int height);
    3738
    3839    ~PlaneRenderer();
    3940
    40     int add_plane(Texture2D* _p, TransferFunction* _tf);
     41    int add_plane(Texture2D *p, TransferFunction *tf);
    4142
    4243    // Add a plane and its transfer function. We require a transfer function
     
    5152
    5253private:
    53     void init_shaders();
    54 
    55     void activate_shader(int plane_index);
    56 
    57     void deactivate_shader();
    58 
    5954    std::vector<Texture2D *> _plane;    // Array of volumes
    6055    std::vector<TransferFunction *> _tf; // Array of corresponding transfer functions
     
    6560    int _render_height; 
    6661
    67     //cg related
    68     CGcontext _g_context;       // The Nvidia cg context
    69     CGprogram _fprog;
    70     CGparameter _data_param;
    71     CGparameter _tf_param;
    72     CGparameter _render_param;
     62    NvColorTableShader *_shader;
    7363};
    7464
  • trunk/packages/vizservers/nanovis/nanovis.cpp

    r2856 r2863  
    244244{
    245245    if (flag) {
    246         flags |= flag;
     246        flags |= flag;
    247247    }
    248248    if ((flags & REDRAW_PENDING) == 0) {
    249         glutPostRedisplay();
    250         flags |= REDRAW_PENDING;
     249        glutPostRedisplay();
     250        flags |= REDRAW_PENDING;
    251251    }
    252252}
     
    386386    CGprogram program;
    387387    program = cgCreateProgramFromFile(context, CG_SOURCE, path, profile,
    388                                       entryPoint, NULL);
     388                                      entryPoint, NULL);
    389389    cgGLLoadProgram(program);
    390390    CGerror LastError = cgGetError();
    391391    if (LastError) {
    392         ERROR("Error message: %s\n", cgGetLastListing(context));
     392        ERROR("Error message: %s\n", cgGetLastListing(context));
    393393    }
    394394    TRACE("successfully compiled program: %s\n", path);
     
    462462Volume *
    463463NanoVis::load_volume(const char *name, int width, int height, int depth,
    464                      int n_component, float* data, double vmin, double vmax,
    465                      double nzero_min)
     464                     int n_component, float* data, double vmin, double vmax,
     465                     double nzero_min)
    466466{
    467467    Tcl_HashEntry *hPtr;
    468468    hPtr = Tcl_FindHashEntry(&NanoVis::volumeTable, name);
    469469    if (hPtr != NULL) {
    470         Volume *volPtr;
    471         WARN("volume \"%s\" already exists", name);
    472         volPtr = (Volume *)Tcl_GetHashValue(hPtr);
    473         remove_volume(volPtr);
     470        Volume *volPtr;
     471        WARN("volume \"%s\" already exists", name);
     472        volPtr = (Volume *)Tcl_GetHashValue(hPtr);
     473        remove_volume(volPtr);
    474474    }
    475475    int isNew;
     
    477477    Volume* volPtr;
    478478    volPtr = new Volume(0.f, 0.f, 0.f, width, height, depth, 1., n_component,
    479                 data, vmin, vmax, nzero_min);
     479                data, vmin, vmax, nzero_min);
    480480    Tcl_SetHashValue(hPtr, volPtr);
    481481    volPtr->name(Tcl_GetHashKey(&NanoVis::volumeTable, hPtr));
     
    507507    if (isNew) {
    508508        tfPtr = new TransferFunction(n, data);
    509         tfPtr->name(Tcl_GetHashKey(&tfTable, hPtr));
     509        tfPtr->name(Tcl_GetHashKey(&tfTable, hPtr));
    510510        Tcl_SetHashValue(hPtr, tfPtr);
    511511    } else {
     
    522522int
    523523NanoVis::render_legend(TransferFunction *tf, double min, double max,
    524                        int width, int height, const char* volArg)
     524                       int width, int height, const char* volArg)
    525525{
    526526    TRACE("in render_legend\n");
     
    551551    {
    552552        char prefix[200];
    553         ssize_t nWritten;
     553        ssize_t nWritten;
    554554
    555555        TRACE("ppm legend image");
     
    557557        ppm_write(prefix);
    558558        nWritten = write(1, "\n", 1);
    559         assert(nWritten == 1);
     559        assert(nWritten == 1);
    560560    }
    561561    plane_renderer->remove_plane(index);
     
    591591    glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, _final_depth_rb);
    592592    glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24,
    593                              win_width, win_height);
     593                             win_width, win_height);
    594594    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
    595                               GL_TEXTURE_2D, _final_color_tex, 0);
     595                              GL_TEXTURE_2D, _final_color_tex, 0);
    596596    glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
    597                                 GL_RENDERBUFFER_EXT, _final_depth_rb);
     597                                GL_RENDERBUFFER_EXT, _final_depth_rb);
    598598
    599599    GLenum status;
    600600    if (!CheckFBO(&status)) {
    601601        PrintFBOStatus(status, "final_fbo");
    602         DoExit(3);
     602            DoExit(3);
    603603    }
    604604
     
    664664    glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, _final_depth_rb);
    665665    glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24,
    666                              win_width, win_height);
     666                             win_width, win_height);
    667667    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
    668                               GL_TEXTURE_2D, _final_color_tex, 0);
     668                              GL_TEXTURE_2D, _final_color_tex, 0);
    669669    glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
    670                                 GL_RENDERBUFFER_EXT, _final_depth_rb);
     670                                GL_RENDERBUFFER_EXT, _final_depth_rb);
    671671
    672672    GLenum status;
    673673    if (!CheckFBO(&status)) {
    674674        PrintFBOStatus(status, "final_fbo");
    675         DoExit(3);
     675        DoExit(3);
    676676    }
    677677
     
    767767    color_table_renderer = new NvColorTableRenderer();
    768768    color_table_renderer->setFonts(fonts);
     769
    769770    flowVisRenderer = new NvFlowVisRenderer(NMESH, NMESH);
    770771
     
    772773
    773774    licRenderer = new NvLIC(NMESH, NPIX, NPIX, lic_axis,
    774                             Vector3(lic_slice_x, lic_slice_y, lic_slice_z),
    775                             g_context);
     775                            Vector3(lic_slice_x, lic_slice_y, lic_slice_z),
     776                            g_context);
    776777
    777778    grid = new Grid();
     
    790791    //buffer to store data read from the screen
    791792    if (screen_buffer) {
    792         delete[] screen_buffer;
    793         screen_buffer = NULL;
     793        delete[] screen_buffer;
     794        screen_buffer = NULL;
    794795    }
    795796    screen_buffer = new unsigned char[4*win_width*win_height];
     
    798799    //create the camera with default setting
    799800    cam = new NvCamera(0, 0, win_width, win_height,
    800                        def_eye_x, def_eye_y, def_eye_z,          /* location. */
    801                        def_target_x, def_target_y, def_target_z, /* target. */
    802                        def_rot_x, def_rot_y, def_rot_z);         /* angle. */
     801                       def_eye_x, def_eye_y, def_eye_z,          /* location. */
     802                       def_target_x, def_target_y, def_target_z, /* target. */
     803                       def_rot_x, def_rot_y, def_rot_z);         /* angle. */
    803804
    804805    glEnable(GL_TEXTURE_2D);
     
    828829    //check if performance query is supported
    829830    if(check_query_support()){
    830         //create queries to count number of rendered pixels
    831         perf = new PerfQuery();
     831        //create queries to count number of rendered pixels
     832        perf = new PerfQuery();
    832833    }
    833834
     
    840841    renderContext = new graphics::RenderContext();
    841842
    842     //create an 2D plane renderer
    843     plane_renderer = new PlaneRenderer(g_context, win_width, win_height);
     843    //create n 2D plane renderer
     844    plane_renderer = new PlaneRenderer(win_width, win_height);
    844845#if PROTOTYPE
    845846    make_test_2D_data();
     
    994995    }
    995996    if (fwrite(header, SIZEOF_BMP_HEADER, 1, f) != 1) {
    996         ERROR("can't write header: short write\n");
     997        ERROR("can't write header: short write\n");
    997998    }
    998999    if (fwrite(screen_buffer, (3*win_width+pad)*win_height, 1, f) != 1) {
    999         ERROR("can't write data: short write\n");
     1000        ERROR("can't write data: short write\n");
    10001001    }
    10011002    fclose(f);
     
    11401141    }
    11411142    if (writev(1, iov, nRecs) < 0) {
    1142         ERROR("write failed: %s\n", strerror(errno));
     1143        ERROR("write failed: %s\n", strerror(errno));
    11431144    }
    11441145    free(iov);
     
    11821183    iov[1].iov_len = dlen;
    11831184    if (writev(1, iov, nRecs) < 0) {
    1184         ERROR("write failed: %s\n", strerror(errno));
     1185        ERROR("write failed: %s\n", strerror(errno));
    11851186    }
    11861187    delete [] iov;
     
    12661267                   float(ppass%pstage), float((pstage+pstage)-(ppass%pstage)-1));
    12671268    glUniform3fARB(oddevenMergeSort.getUniformLocation("Param2"),
    1268                    float(psys_width), float(psys_height), float(ppass));
     1269                   float(psys_width), float(psys_height), float(ppass));
    12691270    glUniform1iARB(oddevenMergeSort.getUniformLocation("Data"), 0);
    12701271    staticdebugmsg("sort","stage "<<pstage<<" pass "<<ppass);
     
    14141415
    14151416        TRACE("%lf %lf\n", elapsed_time,
    1416                vol_renderer->_volumeInterpolator->getInterval());
     1417               vol_renderer->_volumeInterpolator->getInterval());
    14171418        float fraction;
    14181419        float f;
     
    14351436
    14361437    TRACE("in SetVolumeRanges\n");
    1437     xMin = yMin = zMin = wMin = FLT_MAX;
    1438     xMax = yMax = zMax = wMax = -FLT_MAX;
     1438    xMin = yMin = zMin = wMin = DBL_MAX;
     1439    xMax = yMax = zMax = wMax = -DBL_MAX;
    14391440    Tcl_HashEntry *hPtr;
    14401441    Tcl_HashSearch iter;
    14411442    for (hPtr = Tcl_FirstHashEntry(&volumeTable, &iter); hPtr != NULL;
    1442          hPtr = Tcl_NextHashEntry(&iter)) {
    1443         Volume *volPtr;
    1444 
    1445         volPtr = (Volume *)Tcl_GetHashValue(hPtr);
     1443         hPtr = Tcl_NextHashEntry(&iter)) {
     1444        Volume *volPtr = (Volume *)Tcl_GetHashValue(hPtr);
    14461445        if (xMin > volPtr->xAxis.min()) {
    14471446            xMin = volPtr->xAxis.min();
     
    14921491
    14931492    TRACE("in SetHeightmapRanges\n");
    1494     xMin = yMin = zMin = wMin = FLT_MAX;
    1495     xMax = yMax = zMax = wMax = -FLT_MAX;
     1493    xMin = yMin = zMin = wMin = DBL_MAX;
     1494    xMax = yMax = zMax = wMax = -DBL_MAX;
    14961495    Tcl_HashEntry *hPtr;
    14971496    Tcl_HashSearch iter;
    14981497    for (hPtr = Tcl_FirstHashEntry(&heightmapTable, &iter); hPtr != NULL;
    1499          hPtr = Tcl_NextHashEntry(&iter)) {
    1500         HeightMap *hmPtr;
    1501         hmPtr = (HeightMap *)Tcl_GetHashValue(hPtr);
     1498         hPtr = Tcl_NextHashEntry(&iter)) {
     1499        HeightMap *hmPtr = (HeightMap *)Tcl_GetHashValue(hPtr);
    15021500        if (xMin > hmPtr->xAxis.min()) {
    15031501            xMin = hmPtr->xAxis.min();
     
    15391537    }
    15401538    for (hPtr = Tcl_FirstHashEntry(&heightmapTable, &iter); hPtr != NULL;
    1541         hPtr = Tcl_NextHashEntry(&iter)) {
     1539        hPtr = Tcl_NextHashEntry(&iter)) {
    15421540        HeightMap *hmPtr;
    1543         hmPtr = (HeightMap *)Tcl_GetHashValue(hPtr);
     1541        hmPtr = (HeightMap *)Tcl_GetHashValue(hPtr);
    15441542        hmPtr->MapToGrid(grid);
    15451543    }
     
    15551553#ifdef notdef
    15561554    if (flags & MAP_FLOWS) {
    1557         xMin = yMin = zMin = wMin = FLT_MAX, magMin = DBL_MAX;
    1558         xMax = yMax = zMax = wMax = -FLT_MAX, magMax = -DBL_MAX;
     1555        xMin = yMin = zMin = wMin = FLT_MAX, magMin = DBL_MAX;
     1556        xMax = yMax = zMax = wMax = -FLT_MAX, magMax = -DBL_MAX;
    15591557    }
    15601558#endif
    15611559    if (flags & MAP_FLOWS) {
    1562         MapFlows();
     1560        MapFlows();
    15631561        grid->xAxis.SetScale(xMin, xMax);
    15641562        grid->yAxis.SetScale(yMin, yMax);
     
    15771575
    15781576    if (volume_mode) {
    1579         TRACE("in display: volume_mode\n");
     1577        TRACE("in display: volume_mode\n");
    15801578        //3D rendering mode
    1581         // TBD..
     1579        // TBD..
    15821580        //glEnable(GL_TEXTURE_2D);
    15831581        glEnable(GL_DEPTH_TEST);
     
    15881586        //set up the orientation of items in the scene.
    15891587        glPushMatrix();
     1588
    15901589        switch (updir) {
    15911590        case X_POS:
     
    15931592            glRotatef(90, 1, 0, 0);
    15941593            break;
    1595 
    15961594        case Y_POS:
    15971595            // this is the default
    15981596            break;
    1599 
    16001597        case Z_POS:
    16011598            glRotatef(-90, 1, 0, 0);
    16021599            glRotatef(-90, 0, 0, 1);
    16031600            break;
    1604 
    16051601        case X_NEG:
    16061602            glRotatef(-90, 0, 0, 1);
    16071603            break;
    1608 
    16091604        case Y_NEG:
    16101605            glRotatef(180, 0, 0, 1);
    16111606            glRotatef(-90, 0, 1, 0);
    16121607            break;
    1613 
    16141608        case Z_NEG:
    16151609            glRotatef(90, 1, 0, 0);
     
    16371631        if ((flowVisRenderer != NULL) && (flowVisRenderer->active())) {
    16381632            flowVisRenderer->render();
    1639         }
    1640 #endif
    1641         if (flowTable.numEntries > 0) {
    1642             RenderFlows();
    1643         }
     1633        }
     1634#endif
     1635        if (flowTable.numEntries > 0) {
     1636            RenderFlows();
     1637        }
    16441638
    16451639        //soft_display_verts();
     
    16961690        //TRACE("right mouse\n");
    16971691
    1698         if (state == GLUT_DOWN){
     1692        if (state == GLUT_DOWN) {
    16991693            //TRACE("right mouse down\n");
    17001694            right_last_x = x;
     
    17411735
    17421736void addVectorField(const char* filename, const char* vf_name,
    1743                     const char* plane_name1, const char* plane_name2,
    1744                     const Vector4& color1, const Vector4& color2)
     1737                    const char* plane_name1, const char* plane_name2,
     1738                    const Vector4& color1, const Vector4& color2)
    17451739{
    17461740    Rappture::Outcome result;
     
    17501744    int n = NanoVis::n_volumes;
    17511745    if (load_vector_stream2(result, n, buf.size(), buf.bytes())) {
    1752         Volume *volPtr = NanoVis::volume[n];
    1753         if (volPtr != NULL) {
    1754             volPtr->set_n_slice(256-n);
    1755             // volPtr->set_n_slice(512-n);
    1756             volPtr->disable_cutplane(0);
    1757             volPtr->disable_cutplane(1);
    1758             volPtr->disable_cutplane(2);
    1759             volPtr->transferFunction(NanoVis::get_transfunc("default"));
    1760 
    1761             float dx0 = -0.5;
    1762             float dy0 = -0.5*volPtr->height/volPtr->width;
    1763             float dz0 = -0.5*volPtr->depth/volPtr->width;
    1764             volPtr->move(Vector3(dx0, dy0, dz0));
    1765             //volPtr->data(true);
    1766             volPtr->data(false);
    1767             NanoVis::flowVisRenderer->addVectorField(vf_name, volPtr,
    1768                 *(volPtr->get_location()),
    1769                 1.0f,
    1770                 volPtr->height / (float)volPtr->width,
    1771                 volPtr->depth  / (float)volPtr->width,
    1772                 1.0f);
    1773             NanoVis::flowVisRenderer->activateVectorField(vf_name);
    1774 
    1775             //////////////////////////////////
    1776             // ADD Particle Injection Plane1
    1777             NanoVis::flowVisRenderer->addPlane(vf_name, plane_name1);
    1778             NanoVis::flowVisRenderer->setPlaneAxis(vf_name, plane_name1, 0);
    1779             NanoVis::flowVisRenderer->setPlanePos(vf_name, plane_name1, 0.9);
    1780             NanoVis::flowVisRenderer->setParticleColor(vf_name, plane_name1, color1);
    1781             // ADD Particle Injection Plane2
    1782             NanoVis::flowVisRenderer->addPlane(vf_name, plane_name2);
    1783             NanoVis::flowVisRenderer->setPlaneAxis(vf_name, plane_name2, 0);
    1784             NanoVis::flowVisRenderer->setPlanePos(vf_name, plane_name2, 0.2);
    1785             NanoVis::flowVisRenderer->setParticleColor(vf_name, plane_name2, color2);
    1786             NanoVis::flowVisRenderer->initialize(vf_name);
    1787 
    1788             NanoVis::flowVisRenderer->activatePlane(vf_name, plane_name1);
    1789             NanoVis::flowVisRenderer->activatePlane(vf_name, plane_name2);
    1790 
    1791             NanoVis::licRenderer->
     1746        Volume *volPtr = NanoVis::volume[n];
     1747        if (volPtr != NULL) {
     1748            volPtr->set_n_slice(256-n);
     1749            // volPtr->set_n_slice(512-n);
     1750            volPtr->disable_cutplane(0);
     1751            volPtr->disable_cutplane(1);
     1752            volPtr->disable_cutplane(2);
     1753            volPtr->transferFunction(NanoVis::get_transfunc("default"));
     1754
     1755            float dx0 = -0.5;
     1756            float dy0 = -0.5*volPtr->height/volPtr->width;
     1757            float dz0 = -0.5*volPtr->depth/volPtr->width;
     1758            volPtr->move(Vector3(dx0, dy0, dz0));
     1759            //volPtr->data(true);
     1760            volPtr->data(false);
     1761            NanoVis::flowVisRenderer->addVectorField(vf_name, volPtr,
     1762                *(volPtr->get_location()),
     1763                1.0f,
     1764                volPtr->height / (float)volPtr->width,
     1765                volPtr->depth  / (float)volPtr->width,
     1766                1.0f);
     1767            NanoVis::flowVisRenderer->activateVectorField(vf_name);
     1768
     1769            //////////////////////////////////
     1770            // ADD Particle Injection Plane1
     1771            NanoVis::flowVisRenderer->addPlane(vf_name, plane_name1);
     1772            NanoVis::flowVisRenderer->setPlaneAxis(vf_name, plane_name1, 0);
     1773            NanoVis::flowVisRenderer->setPlanePos(vf_name, plane_name1, 0.9);
     1774            NanoVis::flowVisRenderer->setParticleColor(vf_name, plane_name1, color1);
     1775            // ADD Particle Injection Plane2
     1776            NanoVis::flowVisRenderer->addPlane(vf_name, plane_name2);
     1777            NanoVis::flowVisRenderer->setPlaneAxis(vf_name, plane_name2, 0);
     1778            NanoVis::flowVisRenderer->setPlanePos(vf_name, plane_name2, 0.2);
     1779            NanoVis::flowVisRenderer->setParticleColor(vf_name, plane_name2, color2);
     1780            NanoVis::flowVisRenderer->initialize(vf_name);
     1781
     1782            NanoVis::flowVisRenderer->activatePlane(vf_name, plane_name1);
     1783            NanoVis::flowVisRenderer->activatePlane(vf_name, plane_name2);
     1784
     1785            NanoVis::licRenderer->
    17921786                setVectorField(volPtr->id,
    17931787                               *(volPtr->get_location()),
     
    17961790                               1.0f / volPtr->aspect_ratio_depth,
    17971791                               volPtr->wAxis.max());
    1798         }
     1792        }
    17991793    }
    18001794    //NanoVis::initParticle();
     
    18061800#ifdef EVENTLOG
    18071801    if(log){
    1808         float param[3];
    1809         param[0] = cam->x();
    1810         param[1] = cam->y();
    1811         param[2] = cam->z();
    1812         Event* tmp = new Event(EVENT_MOVE, param, NvGetTimeInterval());
    1813         tmp->write(event_log);
    1814         delete tmp;
     1802        float param[3];
     1803        param[0] = cam->x();
     1804        param[1] = cam->y();
     1805        param[2] = cam->z();
     1806        Event* tmp = new Event(EVENT_MOVE, param, NvGetTimeInterval());
     1807        tmp->write(event_log);
     1808        delete tmp;
    18151809    }
    18161810#endif
     
    18181812    switch (key) {
    18191813    case 'a' :
    1820         {
    1821             TRACE("flowvis active\n");
    1822             char cmd[] = {
    1823                 "foreach flow [flow names] {\n"
    1824                 "    $flow configure -hide no -slice yes\n"
    1825                 "}\n"
    1826             };
    1827             Tcl_Eval(interp, cmd);
     1814        {
     1815            TRACE("flowvis active\n");
     1816            char cmd[] = {
     1817                "foreach flow [flow names] {\n"
     1818                "    $flow configure -hide no -slice yes\n"
     1819                "}\n"
     1820            };
     1821            Tcl_Eval(interp, cmd);
    18281822#ifdef notdef
    1829             NanoVis::flowVisRenderer->active(true);
    1830             NanoVis::licRenderer->active(true);
    1831 #endif
    1832         }
    1833         break;
     1823            NanoVis::flowVisRenderer->active(true);
     1824            NanoVis::licRenderer->active(true);
     1825#endif
     1826        }
     1827        break;
    18341828    case 'd' :
    1835         {
    1836             TRACE("flowvis deactived\n");
    1837             char cmd[] = {
    1838                 "foreach flow [flow names] {\n"
    1839                 "    $flow configure -hide yes -slice no\n"
    1840                 "}\n"
    1841             };
     1829        {
     1830            TRACE("flowvis deactived\n");
     1831            char cmd[] = {
     1832                "foreach flow [flow names] {\n"
     1833                "    $flow configure -hide yes -slice no\n"
     1834                "}\n"
     1835            };
    18421836#ifdef notdef
    1843             NanoVis::flowVisRenderer->active(false);
    1844             NanoVis::licRenderer->active(false);
    1845 #endif
    1846         }
    1847         break;
     1837            NanoVis::flowVisRenderer->active(false);
     1838            NanoVis::licRenderer->active(false);
     1839#endif
     1840        }
     1841        break;
    18481842    case '1' :
    1849         {
    1850             TRACE("add vector field\n");
    1851             char cmd[] = {
    1852                 "flow create flow1\n"
    1853                 "flow1 data file /home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/jwire/J-wire-vec.dx 3\n"
    1854                 "flow1 particles add plane1 -color { 0 0 1 1 }\n"
    1855                 "flow1 particles add plane2 -color { 0 1 1 1 }\n"
    1856             };
    1857             Tcl_Eval(interp, cmd);
     1843        {
     1844            TRACE("add vector field\n");
     1845            char cmd[] = {
     1846                "flow create flow1\n"
     1847                "flow1 data file /home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/jwire/J-wire-vec.dx 3\n"
     1848                "flow1 particles add plane1 -color { 0 0 1 1 }\n"
     1849                "flow1 particles add plane2 -color { 0 1 1 1 }\n"
     1850            };
     1851            Tcl_Eval(interp, cmd);
    18581852#ifdef notdef
    1859             addVectorField("/home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/jwire/J-wire-vec.dx",
    1860                            "vf_name2", "plane_name1", "plane_name2", Vector4(0, 0, 1, 1), Vector4(0, 1, 1, 1));
    1861 #endif
    1862         }
    1863         break;
     1853            addVectorField("/home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/jwire/J-wire-vec.dx",
     1854                           "vf_name2", "plane_name1", "plane_name2", Vector4(0, 0, 1, 1), Vector4(0, 1, 1, 1));
     1855#endif
     1856        }
     1857        break;
    18641858    case '2' :
    1865         {
    1866             char cmd[] = {
    1867                 "flow create flow2\n"
    1868                 "flow2 data file /home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/3DWireLeakage/SiO2/SiO2.dx 3\n"
    1869                 "flow2 particles add plane1 -color { 1 0 0 1 }\n"
    1870                 "flow2 particles add plane2 -color { 1 1 0 1 }\n"
    1871             };
    1872             Tcl_Eval(interp, cmd);
    1873             TRACE("add vector field\n");
    1874             addVectorField("/home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/3DWireLeakage/SiO2/SiO2.dx",
    1875                            "vf_name1", "plane_name1", "plane_name2", Vector4(1, 0, 0, 1), Vector4(1, 1, 0, 1));
    1876         }
    1877         break;
     1859        {
     1860            char cmd[] = {
     1861                "flow create flow2\n"
     1862                "flow2 data file /home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/3DWireLeakage/SiO2/SiO2.dx 3\n"
     1863                "flow2 particles add plane1 -color { 1 0 0 1 }\n"
     1864                "flow2 particles add plane2 -color { 1 1 0 1 }\n"
     1865            };
     1866            Tcl_Eval(interp, cmd);
     1867            TRACE("add vector field\n");
     1868            addVectorField("/home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/3DWireLeakage/SiO2/SiO2.dx",
     1869                           "vf_name1", "plane_name1", "plane_name2", Vector4(1, 0, 0, 1), Vector4(1, 1, 0, 1));
     1870        }
     1871        break;
    18781872    case '3':
    1879         {
    1880             TRACE("activate\n");
    1881             char cmd[] = {
    1882                 "flow1 particles add plane2 -hide no\n"
    1883             };
    1884             Tcl_Eval(interp, cmd);
     1873        {
     1874            TRACE("activate\n");
     1875            char cmd[] = {
     1876                "flow1 particles add plane2 -hide no\n"
     1877            };
     1878            Tcl_Eval(interp, cmd);
    18851879#ifdef notdef
    1886             NanoVis::flowVisRenderer->activatePlane("vf_name1", "plane_name2");
    1887 #endif
    1888         }
    1889         break;
     1880            NanoVis::flowVisRenderer->activatePlane("vf_name1", "plane_name2");
     1881#endif
     1882        }
     1883        break;
    18901884    case '4' :
    1891         {
    1892             TRACE("deactivate\n");
    1893             char cmd[] = {
    1894                 "flow1 particles add plane2 -hide yes\n"
    1895             };
    1896             Tcl_Eval(interp, cmd);
     1885        {
     1886            TRACE("deactivate\n");
     1887            char cmd[] = {
     1888                "flow1 particles add plane2 -hide yes\n"
     1889            };
     1890            Tcl_Eval(interp, cmd);
    18971891#ifdef notdef
    1898             NanoVis::flowVisRenderer->deactivatePlane("vf_name1", "plane_name2");
    1899 #endif
    1900         }
    1901         break;
     1892            NanoVis::flowVisRenderer->deactivatePlane("vf_name1", "plane_name2");
     1893#endif
     1894        }
     1895        break;
    19021896    case '5' :
    1903         {
    1904             TRACE("vector field deleted (vf_name2)\n");
    1905             char cmd[] = {
    1906                 "flow delete flow2\n"
    1907             };
    1908             Tcl_Eval(interp, cmd);
     1897        {
     1898            TRACE("vector field deleted (vf_name2)\n");
     1899            char cmd[] = {
     1900                "flow delete flow2\n"
     1901            };
     1902            Tcl_Eval(interp, cmd);
    19091903#ifdef notdef
    1910             NanoVis::flowVisRenderer->removeVectorField("vf_name2");
    1911 #endif
    1912         }
    1913         break;
     1904            NanoVis::flowVisRenderer->removeVectorField("vf_name2");
     1905#endif
     1906        }
     1907        break;
    19141908    case '6' :
    1915         {
    1916             TRACE("add device shape\n");
    1917             char cmd[] = {
    1918                 "flow1 box add box1 -corner1 {0 0 0} -corner2 {30 3 3} -color { 1 0 0 1 }\n"
    1919                 "flow1 box add box2 -corner1 {0 -1 -1} -corner2 {30 4 4} -color { 0 1 0 1 }\n"
    1920                 "flow1 box add box3 -corner1 {10 -1.5 -1} -corner2 {20 4.5 4.5} -color { 0 0 1 1 }\n"
    1921             };
    1922             Tcl_Eval(interp, cmd);
     1909        {
     1910            TRACE("add device shape\n");
     1911            char cmd[] = {
     1912                "flow1 box add box1 -corner1 {0 0 0} -corner2 {30 3 3} -color { 1 0 0 1 }\n"
     1913                "flow1 box add box2 -corner1 {0 -1 -1} -corner2 {30 4 4} -color { 0 1 0 1 }\n"
     1914                "flow1 box add box3 -corner1 {10 -1.5 -1} -corner2 {20 4.5 4.5} -color { 0 0 1 1 }\n"
     1915            };
     1916            Tcl_Eval(interp, cmd);
    19231917#ifdef notdef
    1924             NvDeviceShape shape;
    1925             shape.min.set(0, 0, 0);
    1926             shape.max.set(30, 3, 3);
    1927             shape.color.set(1, 0, 0, 1);
    1928             NanoVis::flowVisRenderer->addDeviceShape("vf_name1", "device1", shape);
    1929             shape.min.set(0, -1, -1);
    1930             shape.max.set(30, 4, 4);
    1931             shape.color.set(0, 1, 0, 1);
    1932             NanoVis::flowVisRenderer->addDeviceShape("vf_name1", "device2", shape);
    1933             shape.min.set(10, -1.5, -1);
    1934             shape.max.set(20, 4.5, 4.5);
    1935             shape.color.set(0, 0, 1, 1);
    1936             NanoVis::flowVisRenderer->addDeviceShape("vf_name1", "device3", shape);
    1937             NanoVis::flowVisRenderer->activateDeviceShape("vf_name1");
    1938 #endif
    1939         }
    1940         break;
     1918            NvDeviceShape shape;
     1919            shape.min.set(0, 0, 0);
     1920            shape.max.set(30, 3, 3);
     1921            shape.color.set(1, 0, 0, 1);
     1922            NanoVis::flowVisRenderer->addDeviceShape("vf_name1", "device1", shape);
     1923            shape.min.set(0, -1, -1);
     1924            shape.max.set(30, 4, 4);
     1925            shape.color.set(0, 1, 0, 1);
     1926            NanoVis::flowVisRenderer->addDeviceShape("vf_name1", "device2", shape);
     1927            shape.min.set(10, -1.5, -1);
     1928            shape.max.set(20, 4.5, 4.5);
     1929            shape.color.set(0, 0, 1, 1);
     1930            NanoVis::flowVisRenderer->addDeviceShape("vf_name1", "device3", shape);
     1931            NanoVis::flowVisRenderer->activateDeviceShape("vf_name1");
     1932#endif
     1933        }
     1934        break;
    19411935    case '7' :
    1942         {
    1943             TRACE("hide shape \n");
    1944             char cmd[] = {
    1945                 "flow1 box configure box1 -hide yes\n"
    1946             };
    1947             Tcl_Eval(interp, cmd);
     1936        {
     1937            TRACE("hide shape \n");
     1938            char cmd[] = {
     1939                "flow1 box configure box1 -hide yes\n"
     1940            };
     1941            Tcl_Eval(interp, cmd);
    19481942#ifdef notdef
    1949             NanoVis::flowVisRenderer->deactivateDeviceShape("vf_name1");
    1950 #endif
    1951         }
    1952         break;
     1943            NanoVis::flowVisRenderer->deactivateDeviceShape("vf_name1");
     1944#endif
     1945        }
     1946        break;
    19531947    case '8' :
    1954         {
    1955             TRACE("show shape\n");
    1956             char cmd[] = {
    1957                 "flow1 box configure box1 -hide no\n"
    1958             };
    1959             Tcl_Eval(interp, cmd);
     1948        {
     1949            TRACE("show shape\n");
     1950            char cmd[] = {
     1951                "flow1 box configure box1 -hide no\n"
     1952            };
     1953            Tcl_Eval(interp, cmd);
    19601954#ifdef notdef
    1961             NanoVis::flowVisRenderer->activateDeviceShape("vf_name1");
    1962 #endif
    1963         }
    1964         break;
     1955            NanoVis::flowVisRenderer->activateDeviceShape("vf_name1");
     1956#endif
     1957        }
     1958        break;
    19651959    case '9' :
    1966         {
    1967             TRACE("show a shape \n");
    1968             char cmd[] = {
    1969                 "flow1 box configure box3 -hide no\n"
    1970             };
    1971             Tcl_Eval(interp, cmd);
     1960        {
     1961            TRACE("show a shape \n");
     1962            char cmd[] = {
     1963                "flow1 box configure box3 -hide no\n"
     1964            };
     1965            Tcl_Eval(interp, cmd);
    19721966#ifdef notdef
    1973             NanoVis::flowVisRenderer->activateDeviceShape("vf_name1", "device3");
    1974 #endif
    1975         }
    1976         break;
     1967            NanoVis::flowVisRenderer->activateDeviceShape("vf_name1", "device3");
     1968#endif
     1969        }
     1970        break;
    19771971    case '0' :
    1978         {
    1979             TRACE("delete a shape \n");
    1980             char cmd[] = {
    1981                 "flow1 box delete box3\n"
    1982             };
    1983             Tcl_Eval(interp, cmd);
     1972        {
     1973            TRACE("delete a shape \n");
     1974            char cmd[] = {
     1975                "flow1 box delete box3\n"
     1976            };
     1977            Tcl_Eval(interp, cmd);
    19841978#ifdef notdef
    1985             NanoVis::flowVisRenderer->deactivateDeviceShape("vf_name1", "device3");
    1986 #endif
    1987         }
    1988         break;
     1979            NanoVis::flowVisRenderer->deactivateDeviceShape("vf_name1", "device3");
     1980#endif
     1981        }
     1982        break;
    19891983    case 'r' :
    1990         {
    1991             TRACE("reset \n");
    1992             char cmd[] = {
    1993                 "flow reset\n"
    1994             };
    1995             Tcl_Eval(interp, cmd);
     1984        {
     1985            TRACE("reset \n");
     1986            char cmd[] = {
     1987                "flow reset\n"
     1988            };
     1989            Tcl_Eval(interp, cmd);
    19961990#ifdef notdef
    1997             NanoVis::flowVisRenderer->reset();
    1998             NanoVis::licRenderer->reset();
    1999 #endif
    2000         }
    2001         break;
     1991            NanoVis::flowVisRenderer->reset();
     1992            NanoVis::licRenderer->reset();
     1993#endif
     1994        }
     1995        break;
    20021996    }
    20031997}
     
    20232017    //return;
    20242018
    2025     if(left_down){
     2019    if (left_down) {
    20262020        left_last_x = x;
    20272021        left_last_y = y;
    20282022
    20292023        update_rot(-delta_y, -delta_x);
    2030     } else if (right_down){
     2024    } else if (right_down) {
    20312025        //TRACE("right mouse motion (%d,%d)\n", x, y);
    20322026
     
    20542048#ifdef notdef
    20552049    if ((NanoVis::licRenderer != NULL) && (NanoVis::licRenderer->active())) {
    2056         NanoVis::licRenderer->convolve();
     2050        NanoVis::licRenderer->convolve();
    20572051    }
    20582052#else
    20592053    if (NanoVis::licRenderer != NULL) {
    2060         NanoVis::licRenderer->convolve();
     2054        NanoVis::licRenderer->convolve();
    20612055    }
    20622056#endif
     
    20642058#ifdef notdef
    20652059    if ((NanoVis::flowVisRenderer != NULL) && (NanoVis::flowVisRenderer->active())) {
    2066         NanoVis::flowVisRenderer->advect();
     2060        NanoVis::flowVisRenderer->advect();
    20672061    }
    20682062#endif
     
    21042098        //  here.
    21052099        //
    2106         TRACE("in xinetd_listen: EOF=%d\n", feof(NanoVis::stdin));
     2100        TRACE("in xinetd_listen: EOF=%d\n", feof(NanoVis::stdin));
    21072101        while (!feof(NanoVis::stdin)) {
    21082102            int c = fgetc(NanoVis::stdin);
     
    21122106                    break;
    21132107                }
    2114                 DoExit(100);
     2108                DoExit(100);
    21152109            }
    21162110            ch = (char)c;
     
    21452139
    21462140        string = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY);
    2147         TRACE("errorInfo=(%s)\n", string);
     2141        TRACE("errorInfo=(%s)\n", string);
    21482142        nBytes = strlen(string);
    21492143        struct iovec iov[3];
     
    21552149        iov[2].iov_base = (char *)'\n';
    21562150        if (writev(1, iov, 3) < 0) {
    2157             ERROR("write failed: %s\n", strerror(errno));
    2158         }
    2159         TRACE("Leaving xinetd_listen on ERROR\n");
     2151            ERROR("write failed: %s\n", strerror(errno));
     2152        }
     2153        TRACE("Leaving xinetd_listen on ERROR\n");
    21602154        return;
    21612155    }
     
    21812175
    21822176    if (feof(NanoVis::stdin)) {
    2183         DoExit(90);
     2177        DoExit(90);
    21842178    }
    21852179#if DO_RLE
     
    22382232    while (1) {
    22392233        static struct option long_options[] = {
    2240             {"infile",  required_argument, NULL,          0},
    2241             {"path",    required_argument, NULL,          2},
    2242             {"debug",   no_argument,       NULL,          3},
    2243             {"record",  required_argument, NULL,          4},
     2234            {"infile",  required_argument, NULL, 0},
     2235            {"path",    required_argument, NULL, 2},
     2236            {"debug",   no_argument,       NULL, 3},
     2237            {"record",  required_argument, NULL, 4},
    22442238            {0, 0, 0, 0}
    22452239        };
     
    22582252            if (optopt < 4) {
    22592253                fprintf(stderr, "argument missing for --%s option\n",
    2260                         long_options[optopt].name);
     2254                        long_options[optopt].name);
    22612255            } else {
    22622256                fprintf(stderr, "argument missing for -%c option\n", optopt);
     
    23132307        }
    23142308        if (p == NULL) {
    2315             TRACE("path not specified\n");
     2309            TRACE("path not specified\n");
    23162310            return 1;
    23172311        }
     
    23212315        path = newPath;
    23222316#else
    2323         char buff[256];
    2324         getcwd(buff, 255);
     2317        char buff[256];
     2318        getcwd(buff, 255);
    23252319        p = strrchr(buff, '/');
    23262320        if (p != NULL) {
    23272321            *p = '\0';
    2328         }
     2322        }
    23292323        newPath = new char[(strlen(buff) + 15) * 2 + 1];
    23302324        sprintf(newPath, "%s/lib/shaders:%s/lib/resources", buff, buff);
     
    24332427    hPtr = Tcl_FindHashEntry(&volumeTable, volPtr->name());
    24342428    if (hPtr != NULL) {
    2435         Tcl_DeleteHashEntry(hPtr);
    2436     }
    2437     delete volPtr;                     
    2438 }
     2429        Tcl_DeleteHashEntry(hPtr);
     2430    }
     2431    delete volPtr;
     2432}
Note: See TracChangeset for help on using the changeset viewer.