Changeset 2863 for trunk/packages/vizservers/nanovis/nanovis.cpp
- Timestamp:
- Mar 16, 2012, 3:29:42 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/nanovis.cpp
r2856 r2863 244 244 { 245 245 if (flag) { 246 246 flags |= flag; 247 247 } 248 248 if ((flags & REDRAW_PENDING) == 0) { 249 250 249 glutPostRedisplay(); 250 flags |= REDRAW_PENDING; 251 251 } 252 252 } … … 386 386 CGprogram program; 387 387 program = cgCreateProgramFromFile(context, CG_SOURCE, path, profile, 388 388 entryPoint, NULL); 389 389 cgGLLoadProgram(program); 390 390 CGerror LastError = cgGetError(); 391 391 if (LastError) { 392 392 ERROR("Error message: %s\n", cgGetLastListing(context)); 393 393 } 394 394 TRACE("successfully compiled program: %s\n", path); … … 462 462 Volume * 463 463 NanoVis::load_volume(const char *name, int width, int height, int depth, 464 465 464 int n_component, float* data, double vmin, double vmax, 465 double nzero_min) 466 466 { 467 467 Tcl_HashEntry *hPtr; 468 468 hPtr = Tcl_FindHashEntry(&NanoVis::volumeTable, name); 469 469 if (hPtr != NULL) { 470 471 472 473 470 Volume *volPtr; 471 WARN("volume \"%s\" already exists", name); 472 volPtr = (Volume *)Tcl_GetHashValue(hPtr); 473 remove_volume(volPtr); 474 474 } 475 475 int isNew; … … 477 477 Volume* volPtr; 478 478 volPtr = new Volume(0.f, 0.f, 0.f, width, height, depth, 1., n_component, 479 479 data, vmin, vmax, nzero_min); 480 480 Tcl_SetHashValue(hPtr, volPtr); 481 481 volPtr->name(Tcl_GetHashKey(&NanoVis::volumeTable, hPtr)); … … 507 507 if (isNew) { 508 508 tfPtr = new TransferFunction(n, data); 509 509 tfPtr->name(Tcl_GetHashKey(&tfTable, hPtr)); 510 510 Tcl_SetHashValue(hPtr, tfPtr); 511 511 } else { … … 522 522 int 523 523 NanoVis::render_legend(TransferFunction *tf, double min, double max, 524 524 int width, int height, const char* volArg) 525 525 { 526 526 TRACE("in render_legend\n"); … … 551 551 { 552 552 char prefix[200]; 553 553 ssize_t nWritten; 554 554 555 555 TRACE("ppm legend image"); … … 557 557 ppm_write(prefix); 558 558 nWritten = write(1, "\n", 1); 559 559 assert(nWritten == 1); 560 560 } 561 561 plane_renderer->remove_plane(index); … … 591 591 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, _final_depth_rb); 592 592 glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, 593 593 win_width, win_height); 594 594 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, 595 595 GL_TEXTURE_2D, _final_color_tex, 0); 596 596 glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, 597 597 GL_RENDERBUFFER_EXT, _final_depth_rb); 598 598 599 599 GLenum status; 600 600 if (!CheckFBO(&status)) { 601 601 PrintFBOStatus(status, "final_fbo"); 602 602 DoExit(3); 603 603 } 604 604 … … 664 664 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, _final_depth_rb); 665 665 glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, 666 666 win_width, win_height); 667 667 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, 668 668 GL_TEXTURE_2D, _final_color_tex, 0); 669 669 glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, 670 670 GL_RENDERBUFFER_EXT, _final_depth_rb); 671 671 672 672 GLenum status; 673 673 if (!CheckFBO(&status)) { 674 674 PrintFBOStatus(status, "final_fbo"); 675 675 DoExit(3); 676 676 } 677 677 … … 767 767 color_table_renderer = new NvColorTableRenderer(); 768 768 color_table_renderer->setFonts(fonts); 769 769 770 flowVisRenderer = new NvFlowVisRenderer(NMESH, NMESH); 770 771 … … 772 773 773 774 licRenderer = new NvLIC(NMESH, NPIX, NPIX, lic_axis, 774 775 775 Vector3(lic_slice_x, lic_slice_y, lic_slice_z), 776 g_context); 776 777 777 778 grid = new Grid(); … … 790 791 //buffer to store data read from the screen 791 792 if (screen_buffer) { 792 793 793 delete[] screen_buffer; 794 screen_buffer = NULL; 794 795 } 795 796 screen_buffer = new unsigned char[4*win_width*win_height]; … … 798 799 //create the camera with default setting 799 800 cam = new NvCamera(0, 0, win_width, win_height, 800 801 802 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. */ 803 804 804 805 glEnable(GL_TEXTURE_2D); … … 828 829 //check if performance query is supported 829 830 if(check_query_support()){ 830 831 831 //create queries to count number of rendered pixels 832 perf = new PerfQuery(); 832 833 } 833 834 … … 840 841 renderContext = new graphics::RenderContext(); 841 842 842 //create an 2D plane renderer843 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); 844 845 #if PROTOTYPE 845 846 make_test_2D_data(); … … 994 995 } 995 996 if (fwrite(header, SIZEOF_BMP_HEADER, 1, f) != 1) { 996 997 ERROR("can't write header: short write\n"); 997 998 } 998 999 if (fwrite(screen_buffer, (3*win_width+pad)*win_height, 1, f) != 1) { 999 1000 ERROR("can't write data: short write\n"); 1000 1001 } 1001 1002 fclose(f); … … 1140 1141 } 1141 1142 if (writev(1, iov, nRecs) < 0) { 1142 1143 ERROR("write failed: %s\n", strerror(errno)); 1143 1144 } 1144 1145 free(iov); … … 1182 1183 iov[1].iov_len = dlen; 1183 1184 if (writev(1, iov, nRecs) < 0) { 1184 1185 ERROR("write failed: %s\n", strerror(errno)); 1185 1186 } 1186 1187 delete [] iov; … … 1266 1267 float(ppass%pstage), float((pstage+pstage)-(ppass%pstage)-1)); 1267 1268 glUniform3fARB(oddevenMergeSort.getUniformLocation("Param2"), 1268 1269 float(psys_width), float(psys_height), float(ppass)); 1269 1270 glUniform1iARB(oddevenMergeSort.getUniformLocation("Data"), 0); 1270 1271 staticdebugmsg("sort","stage "<<pstage<<" pass "<<ppass); … … 1414 1415 1415 1416 TRACE("%lf %lf\n", elapsed_time, 1416 1417 vol_renderer->_volumeInterpolator->getInterval()); 1417 1418 float fraction; 1418 1419 float f; … … 1435 1436 1436 1437 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; 1439 1440 Tcl_HashEntry *hPtr; 1440 1441 Tcl_HashSearch iter; 1441 1442 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); 1446 1445 if (xMin > volPtr->xAxis.min()) { 1447 1446 xMin = volPtr->xAxis.min(); … … 1492 1491 1493 1492 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; 1496 1495 Tcl_HashEntry *hPtr; 1497 1496 Tcl_HashSearch iter; 1498 1497 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); 1502 1500 if (xMin > hmPtr->xAxis.min()) { 1503 1501 xMin = hmPtr->xAxis.min(); … … 1539 1537 } 1540 1538 for (hPtr = Tcl_FirstHashEntry(&heightmapTable, &iter); hPtr != NULL; 1541 1539 hPtr = Tcl_NextHashEntry(&iter)) { 1542 1540 HeightMap *hmPtr; 1543 1541 hmPtr = (HeightMap *)Tcl_GetHashValue(hPtr); 1544 1542 hmPtr->MapToGrid(grid); 1545 1543 } … … 1555 1553 #ifdef notdef 1556 1554 if (flags & MAP_FLOWS) { 1557 1558 1555 xMin = yMin = zMin = wMin = FLT_MAX, magMin = DBL_MAX; 1556 xMax = yMax = zMax = wMax = -FLT_MAX, magMax = -DBL_MAX; 1559 1557 } 1560 1558 #endif 1561 1559 if (flags & MAP_FLOWS) { 1562 1560 MapFlows(); 1563 1561 grid->xAxis.SetScale(xMin, xMax); 1564 1562 grid->yAxis.SetScale(yMin, yMax); … … 1577 1575 1578 1576 if (volume_mode) { 1579 1577 TRACE("in display: volume_mode\n"); 1580 1578 //3D rendering mode 1581 1579 // TBD.. 1582 1580 //glEnable(GL_TEXTURE_2D); 1583 1581 glEnable(GL_DEPTH_TEST); … … 1588 1586 //set up the orientation of items in the scene. 1589 1587 glPushMatrix(); 1588 1590 1589 switch (updir) { 1591 1590 case X_POS: … … 1593 1592 glRotatef(90, 1, 0, 0); 1594 1593 break; 1595 1596 1594 case Y_POS: 1597 1595 // this is the default 1598 1596 break; 1599 1600 1597 case Z_POS: 1601 1598 glRotatef(-90, 1, 0, 0); 1602 1599 glRotatef(-90, 0, 0, 1); 1603 1600 break; 1604 1605 1601 case X_NEG: 1606 1602 glRotatef(-90, 0, 0, 1); 1607 1603 break; 1608 1609 1604 case Y_NEG: 1610 1605 glRotatef(180, 0, 0, 1); 1611 1606 glRotatef(-90, 0, 1, 0); 1612 1607 break; 1613 1614 1608 case Z_NEG: 1615 1609 glRotatef(90, 1, 0, 0); … … 1637 1631 if ((flowVisRenderer != NULL) && (flowVisRenderer->active())) { 1638 1632 flowVisRenderer->render(); 1639 1640 #endif 1641 1642 1643 1633 } 1634 #endif 1635 if (flowTable.numEntries > 0) { 1636 RenderFlows(); 1637 } 1644 1638 1645 1639 //soft_display_verts(); … … 1696 1690 //TRACE("right mouse\n"); 1697 1691 1698 if (state == GLUT_DOWN) {1692 if (state == GLUT_DOWN) { 1699 1693 //TRACE("right mouse down\n"); 1700 1694 right_last_x = x; … … 1741 1735 1742 1736 void addVectorField(const char* filename, const char* vf_name, 1743 1744 1737 const char* plane_name1, const char* plane_name2, 1738 const Vector4& color1, const Vector4& color2) 1745 1739 { 1746 1740 Rappture::Outcome result; … … 1750 1744 int n = NanoVis::n_volumes; 1751 1745 if (load_vector_stream2(result, n, buf.size(), buf.bytes())) { 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 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-> 1792 1786 setVectorField(volPtr->id, 1793 1787 *(volPtr->get_location()), … … 1796 1790 1.0f / volPtr->aspect_ratio_depth, 1797 1791 volPtr->wAxis.max()); 1798 1792 } 1799 1793 } 1800 1794 //NanoVis::initParticle(); … … 1806 1800 #ifdef EVENTLOG 1807 1801 if(log){ 1808 1809 1810 1811 1812 1813 1814 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; 1815 1809 } 1816 1810 #endif … … 1818 1812 switch (key) { 1819 1813 case 'a' : 1820 1821 1822 1823 1824 1825 1826 1827 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); 1828 1822 #ifdef notdef 1829 1830 1831 #endif 1832 1833 1823 NanoVis::flowVisRenderer->active(true); 1824 NanoVis::licRenderer->active(true); 1825 #endif 1826 } 1827 break; 1834 1828 case 'd' : 1835 1836 1837 1838 1839 1840 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 }; 1842 1836 #ifdef notdef 1843 1844 1845 #endif 1846 1847 1837 NanoVis::flowVisRenderer->active(false); 1838 NanoVis::licRenderer->active(false); 1839 #endif 1840 } 1841 break; 1848 1842 case '1' : 1849 1850 1851 1852 1853 1854 1855 1856 1857 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); 1858 1852 #ifdef notdef 1859 1860 1861 #endif 1862 1863 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; 1864 1858 case '2' : 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 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; 1878 1872 case '3': 1879 1880 1881 1882 1883 1884 1873 { 1874 TRACE("activate\n"); 1875 char cmd[] = { 1876 "flow1 particles add plane2 -hide no\n" 1877 }; 1878 Tcl_Eval(interp, cmd); 1885 1879 #ifdef notdef 1886 1887 #endif 1888 1889 1880 NanoVis::flowVisRenderer->activatePlane("vf_name1", "plane_name2"); 1881 #endif 1882 } 1883 break; 1890 1884 case '4' : 1891 1892 1893 1894 1895 1896 1885 { 1886 TRACE("deactivate\n"); 1887 char cmd[] = { 1888 "flow1 particles add plane2 -hide yes\n" 1889 }; 1890 Tcl_Eval(interp, cmd); 1897 1891 #ifdef notdef 1898 1899 #endif 1900 1901 1892 NanoVis::flowVisRenderer->deactivatePlane("vf_name1", "plane_name2"); 1893 #endif 1894 } 1895 break; 1902 1896 case '5' : 1903 1904 1905 1906 1907 1908 1897 { 1898 TRACE("vector field deleted (vf_name2)\n"); 1899 char cmd[] = { 1900 "flow delete flow2\n" 1901 }; 1902 Tcl_Eval(interp, cmd); 1909 1903 #ifdef notdef 1910 1911 #endif 1912 1913 1904 NanoVis::flowVisRenderer->removeVectorField("vf_name2"); 1905 #endif 1906 } 1907 break; 1914 1908 case '6' : 1915 1916 1917 1918 1919 1920 1921 1922 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); 1923 1917 #ifdef notdef 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 #endif 1939 1940 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; 1941 1935 case '7' : 1942 1943 1944 1945 1946 1947 1936 { 1937 TRACE("hide shape \n"); 1938 char cmd[] = { 1939 "flow1 box configure box1 -hide yes\n" 1940 }; 1941 Tcl_Eval(interp, cmd); 1948 1942 #ifdef notdef 1949 1950 #endif 1951 1952 1943 NanoVis::flowVisRenderer->deactivateDeviceShape("vf_name1"); 1944 #endif 1945 } 1946 break; 1953 1947 case '8' : 1954 1955 1956 1957 1958 1959 1948 { 1949 TRACE("show shape\n"); 1950 char cmd[] = { 1951 "flow1 box configure box1 -hide no\n" 1952 }; 1953 Tcl_Eval(interp, cmd); 1960 1954 #ifdef notdef 1961 1962 #endif 1963 1964 1955 NanoVis::flowVisRenderer->activateDeviceShape("vf_name1"); 1956 #endif 1957 } 1958 break; 1965 1959 case '9' : 1966 1967 1968 1969 1970 1971 1960 { 1961 TRACE("show a shape \n"); 1962 char cmd[] = { 1963 "flow1 box configure box3 -hide no\n" 1964 }; 1965 Tcl_Eval(interp, cmd); 1972 1966 #ifdef notdef 1973 1974 #endif 1975 1976 1967 NanoVis::flowVisRenderer->activateDeviceShape("vf_name1", "device3"); 1968 #endif 1969 } 1970 break; 1977 1971 case '0' : 1978 1979 1980 1981 1982 1983 1972 { 1973 TRACE("delete a shape \n"); 1974 char cmd[] = { 1975 "flow1 box delete box3\n" 1976 }; 1977 Tcl_Eval(interp, cmd); 1984 1978 #ifdef notdef 1985 1986 #endif 1987 1988 1979 NanoVis::flowVisRenderer->deactivateDeviceShape("vf_name1", "device3"); 1980 #endif 1981 } 1982 break; 1989 1983 case 'r' : 1990 1991 1992 1993 1994 1995 1984 { 1985 TRACE("reset \n"); 1986 char cmd[] = { 1987 "flow reset\n" 1988 }; 1989 Tcl_Eval(interp, cmd); 1996 1990 #ifdef notdef 1997 1998 1999 #endif 2000 2001 1991 NanoVis::flowVisRenderer->reset(); 1992 NanoVis::licRenderer->reset(); 1993 #endif 1994 } 1995 break; 2002 1996 } 2003 1997 } … … 2023 2017 //return; 2024 2018 2025 if (left_down){2019 if (left_down) { 2026 2020 left_last_x = x; 2027 2021 left_last_y = y; 2028 2022 2029 2023 update_rot(-delta_y, -delta_x); 2030 } else if (right_down) {2024 } else if (right_down) { 2031 2025 //TRACE("right mouse motion (%d,%d)\n", x, y); 2032 2026 … … 2054 2048 #ifdef notdef 2055 2049 if ((NanoVis::licRenderer != NULL) && (NanoVis::licRenderer->active())) { 2056 2050 NanoVis::licRenderer->convolve(); 2057 2051 } 2058 2052 #else 2059 2053 if (NanoVis::licRenderer != NULL) { 2060 2054 NanoVis::licRenderer->convolve(); 2061 2055 } 2062 2056 #endif … … 2064 2058 #ifdef notdef 2065 2059 if ((NanoVis::flowVisRenderer != NULL) && (NanoVis::flowVisRenderer->active())) { 2066 2060 NanoVis::flowVisRenderer->advect(); 2067 2061 } 2068 2062 #endif … … 2104 2098 // here. 2105 2099 // 2106 2100 TRACE("in xinetd_listen: EOF=%d\n", feof(NanoVis::stdin)); 2107 2101 while (!feof(NanoVis::stdin)) { 2108 2102 int c = fgetc(NanoVis::stdin); … … 2112 2106 break; 2113 2107 } 2114 2108 DoExit(100); 2115 2109 } 2116 2110 ch = (char)c; … … 2145 2139 2146 2140 string = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY); 2147 2141 TRACE("errorInfo=(%s)\n", string); 2148 2142 nBytes = strlen(string); 2149 2143 struct iovec iov[3]; … … 2155 2149 iov[2].iov_base = (char *)'\n'; 2156 2150 if (writev(1, iov, 3) < 0) { 2157 2158 2159 2151 ERROR("write failed: %s\n", strerror(errno)); 2152 } 2153 TRACE("Leaving xinetd_listen on ERROR\n"); 2160 2154 return; 2161 2155 } … … 2181 2175 2182 2176 if (feof(NanoVis::stdin)) { 2183 2177 DoExit(90); 2184 2178 } 2185 2179 #if DO_RLE … … 2238 2232 while (1) { 2239 2233 static struct option long_options[] = { 2240 {"infile", required_argument, NULL, 2241 {"path", required_argument, NULL, 2242 {"debug", no_argument, NULL, 2243 {"record", required_argument, NULL, 2234 {"infile", required_argument, NULL, 0}, 2235 {"path", required_argument, NULL, 2}, 2236 {"debug", no_argument, NULL, 3}, 2237 {"record", required_argument, NULL, 4}, 2244 2238 {0, 0, 0, 0} 2245 2239 }; … … 2258 2252 if (optopt < 4) { 2259 2253 fprintf(stderr, "argument missing for --%s option\n", 2260 2254 long_options[optopt].name); 2261 2255 } else { 2262 2256 fprintf(stderr, "argument missing for -%c option\n", optopt); … … 2313 2307 } 2314 2308 if (p == NULL) { 2315 2309 TRACE("path not specified\n"); 2316 2310 return 1; 2317 2311 } … … 2321 2315 path = newPath; 2322 2316 #else 2323 2324 2317 char buff[256]; 2318 getcwd(buff, 255); 2325 2319 p = strrchr(buff, '/'); 2326 2320 if (p != NULL) { 2327 2321 *p = '\0'; 2328 2322 } 2329 2323 newPath = new char[(strlen(buff) + 15) * 2 + 1]; 2330 2324 sprintf(newPath, "%s/lib/shaders:%s/lib/resources", buff, buff); … … 2433 2427 hPtr = Tcl_FindHashEntry(&volumeTable, volPtr->name()); 2434 2428 if (hPtr != NULL) { 2435 2436 } 2437 delete volPtr; 2438 } 2429 Tcl_DeleteHashEntry(hPtr); 2430 } 2431 delete volPtr; 2432 }
Note: See TracChangeset
for help on using the changeset viewer.