Changeset 2409


Ignore:
Timestamp:
Aug 25, 2011 1:09:15 PM (11 years ago)
Author:
gah
Message:

update from branch

Location:
branches/blt4
Files:
66 edited

Legend:

Unmodified
Added
Removed
  • branches/blt4/examples/zoo/image/image.tcl

    r1650 r2409  
    1818set data [$driver get input.image.current]
    1919set angle [$driver get input.(angle).current]
    20 set angle [Rappture::Units::convert $angle -to deg -units off]
     20set angle [Rappture::Units::convert 20rad -to deg -units off]
     21puts stderr "angle=$angle from Rappture::Units::convert 20deg -to deg -units off"
    2122
    2223set imh [image create picture -data $data]
  • branches/blt4/examples/zoo/unirect2d/tool.xml

    r1259 r2409  
    55        <command>tclsh @tool/unirect2d.tcl @driver</command>
    66    </tool>
    7     <input/>
     7    <unirect2d id="mygrid">
     8        <about>
     9            <label>Fermi-Dirac Factor</label>
     10        </about>
     11        <xaxis>
     12            <label>Fermi-Dirac Factor</label>
     13            <min>0.0</min>
     14            <max>1.0</max>
     15            <numpoints>50</numpoints>
     16        </xaxis>
     17        <yaxis>
     18            <label>Energy</label>
     19            <min>0.0</min>
     20            <max>1.0</max>
     21            <numpoints>50</numpoints>
     22        </yaxis>
     23    </unirect2d>
     24    <input>
     25        <field id="one">
     26            <about>
     27                <label>Substrate Surface</label>
     28            </about>
     29            <component>
     30                <mesh>unirect2d(mygrid)</mesh>
     31                <values>
     32    1.4358794e-01 1.1341028e-01 1.0426426e-01 1.1974895e-01 1.4802129e-01
     33    1.9555289e-01 2.0940159e-01 1.3230848e-01 6.3460079e-02 5.7418281e-02
     34    5.5070475e-02 3.4186226e-02 2.3972370e-02 3.4336690e-02 4.9028199e-02
     35    6.2904541e-02 8.9055325e-02 1.3509754e-01 1.5770342e-01 1.4481218e-01
     36    1.5334034e-01 1.9282565e-01 2.0946699e-01 1.9905750e-01 1.8329185e-01
     37    1.6279224e-01 1.1833638e-01 5.0482784e-02 -2.6026858e-02 -1.1140320e-01
     38    -2.0810224e-01 -3.0907933e-01 -3.4294612e-01 -3.3011417e-01 -3.6080332e-01
     39    -4.1348654e-01 -4.4308206e-01 -4.4888220e-01 -3.9620970e-01 -3.0530178e-01
     40    -2.1460848e-01 -1.2346454e-01 -5.2152198e-02 8.8999954e-03 6.5539381e-02
     41    1.2594384e-01 2.1350540e-01 3.0503894e-01 3.7612130e-01 4.3404062e-01
     42    1.7636398e-01 1.2463255e-01 1.0083091e-01 1.1346394e-01 1.3414549e-01
     43    1.4523552e-01 1.4034889e-01 1.0428027e-01 6.5296722e-02 3.6055651e-02
     44    1.2997634e-02 -5.8805809e-03 -6.8915176e-03 2.1318554e-02 4.0554819e-02
     45    3.5082761e-02 4.6776271e-02 8.9639178e-02 1.1171071e-01 1.0011820e-01
     46    1.1230716e-01 1.5865564e-01 1.7198434e-01 1.4642494e-01 1.2406496e-01
     47    1.0623328e-01 4.7218667e-02 -5.0942470e-02 -1.2824984e-01 -1.8852188e-01
     48    -2.6268284e-01 -3.4097016e-01 -3.4147355e-01 -2.8863489e-01 -2.9519077e-01
     49    -3.3231863e-01 -3.2900034e-01 -2.9658526e-01 -2.3348103e-01 -1.4951508e-01
     50    -7.3180667e-02 2.1812233e-03 8.4372899e-02 1.5820633e-01 1.7991968e-01
     51    1.9785205e-01 2.9843795e-01 4.0330554e-01 4.3272325e-01 4.1047404e-01
     52    1.9220258e-01 1.1685111e-01 8.0367954e-02 9.6400348e-02 1.1927951e-01
     53    1.1087740e-01 9.6344473e-02 8.6663320e-02 6.7407112e-02 2.5160633e-02
     54    -5.6364795e-03 -1.0761179e-02 3.3684124e-03 4.4497655e-02 6.8080019e-02
     55    5.3352122e-02 5.9724653e-02 1.0553699e-01 1.3164481e-01 1.2483435e-01
     56    1.3792592e-01 1.8051794e-01 1.8795349e-01 1.5440745e-01 1.2481617e-01
     57    1.0062227e-01 3.0909795e-02 -8.1814127e-02 -1.6349686e-01 -2.1857478e-01
     58    -2.7712182e-01 -3.3186882e-01 -3.2398755e-01 -2.7284530e-01 -2.7389205e-01
     59    -3.0017345e-01 -2.7741872e-01 -2.2130121e-01 -1.4448021e-01 -5.3879093e-02
     60    2.1457576e-02 9.1506931e-02 1.7453422e-01 2.4719240e-01 2.4952460e-01
     61    2.4404031e-01 3.4033521e-01 4.3947603e-01 4.4099746e-01 3.7486642e-01
     62    1.9185761e-01 8.0886444e-02 3.0375009e-02 6.1084205e-02 1.0353225e-01
     63    9.9054582e-02 8.8297767e-02 9.0356695e-02 7.9188000e-02 3.0942080e-02
     64    6.0909775e-03 3.5703030e-02 7.7896835e-02 1.2750441e-01 1.5527690e-01
     65    1.4201865e-01 1.5442874e-01 2.1396999e-01 2.5195694e-01 2.5470504e-01
     66    2.6533968e-01 2.9071375e-01 2.8935627e-01 2.5775163e-01 2.1963218e-01
     67    1.7573613e-01 9.9797341e-02 -6.6171308e-03 -9.9264880e-02 -1.7888857e-01
     68    -2.3139617e-01 -2.6008863e-01 -2.8248634e-01 -2.9858568e-01 -3.2501580e-01
     69    -3.5008716e-01 -3.2723485e-01 -2.6594128e-01 -1.6675870e-01 -4.5319114e-02
     70    5.0710829e-02 1.3153850e-01 2.0069922e-01 2.5098763e-01 2.5508375e-01
     71    2.5249177e-01 3.1973580e-01 3.8574134e-01 3.7747606e-01 3.1672722e-01
     72    1.7268034e-01 4.7473297e-02 -7.2503802e-03 3.2519581e-02 8.6438430e-02
     73    8.7640660e-02 7.9542603e-02 7.8590993e-02 6.8829091e-02 3.2387832e-02
     74    2.4865717e-02 7.9216216e-02 1.3895811e-01 1.9097884e-01 2.2268168e-01
     75    2.1959080e-01 2.4201102e-01 3.1047903e-01 3.5723180e-01 3.7001069e-01
     76    3.7683272e-01 3.8098751e-01 3.6897127e-01 3.3996859e-01 2.9422741e-01
     77    2.3171699e-01 1.5198187e-01 5.5589588e-02 -4.4517609e-02 -1.4550116e-01
     78    -1.9263345e-01 -1.9827180e-01 -2.4373751e-01 -3.1273850e-01 -3.5429825e-01
     79    -3.7122358e-01 -3.4793238e-01 -2.8652233e-01 -1.7433238e-01 -3.3523888e-02
     80    7.6960815e-02 1.6582940e-01 2.2204640e-01 2.5304698e-01 2.6131316e-01
     81    2.6364023e-01 3.0202210e-01 3.3545215e-01 3.2096591e-01 2.7138365e-01
     82    1.2219397e-01 4.3625119e-02 7.8947968e-03 3.1040534e-02 5.9397042e-02
     83    4.8346807e-02 2.6503890e-02 -3.5335496e-03 -1.9985161e-02 -7.1926925e-03
     84    1.9175708e-02 5.6269851e-02 9.8440059e-02 1.4554505e-01 1.8401210e-01
     85    2.0544673e-01 2.3979670e-01 2.9787236e-01 3.4063599e-01 3.6220768e-01
     86    3.6484825e-01 3.4762358e-01 3.2112422e-01 2.8638457e-01 2.3536607e-01
     87    1.6782775e-01 8.5178692e-02 -1.1888325e-02 -1.0622095e-01 -1.9529312e-01
     88    -2.2690550e-01 -2.1280879e-01 -2.2932212e-01 -2.6199647e-01 -2.6660647e-01
     89    -2.4784254e-01 -2.0201019e-01 -1.3137600e-01 -3.5712722e-02 7.3946745e-02
     90    1.6487676e-01 2.4193045e-01 3.0211055e-01 3.4167748e-01 3.4098686e-01
     91    3.2924159e-01 3.6274535e-01 3.9026779e-01 3.5963488e-01 2.8640970e-01
     92    7.9360439e-02 4.8020389e-02 3.3699512e-02 4.5445952e-02 5.2961622e-02
     93    2.9353281e-02 -3.3165694e-03 -4.7752243e-02 -6.1551929e-02 -6.3445786e-03
     94    4.6030466e-02 6.2881736e-02 8.3263358e-02 1.1856448e-01 1.5504772e-01
     95    1.8970413e-01 2.2691765e-01 2.6914689e-01 3.0291026e-01 3.2762923e-01
     96    3.2719278e-01 2.9804966e-01 2.6301362e-01 2.2396958e-01 1.7035061e-01
     97    1.0187191e-01 1.7660478e-02 -8.1275898e-02 -1.6691370e-01 -2.3821451e-01
     98    -2.6133194e-01 -2.4347451e-01 -2.2768194e-01 -2.0806114e-01 -1.7312476e-01
     99    -1.2465031e-01 -6.4321733e-02 6.5406723e-03 8.4661047e-02 1.6580921e-01
     100    2.3459278e-01 2.9534808e-01 3.5732614e-01 4.0386560e-01 3.9096932e-01
     101    3.6212367e-01 3.9029248e-01 4.1326853e-01 3.6951755e-01 2.7738813e-01
     102    8.9494499e-02 6.7584614e-02 6.5037124e-02 9.3813043e-02 1.1379008e-01
     103    8.3627764e-02 5.3482388e-02 4.5323028e-02 6.1760289e-02 1.2071072e-01
     104    1.6922991e-01 1.8040685e-01 1.8771827e-01 2.0004173e-01 2.1123537e-01
     105    2.1944690e-01 2.3339760e-01 2.5633594e-01 2.7732198e-01 2.9615665e-01
     106    2.9882541e-01 2.8295582e-01 2.5848249e-01 2.2635938e-01 1.7693814e-01
     107    1.0992857e-01 2.2302524e-02 -8.4502757e-02 -1.6676884e-01 -2.2607707e-01
     108    -2.6276348e-01 -2.7577114e-01 -2.4975845e-01 -1.9216580e-01 -1.3985154e-01
     109    -8.8508270e-02 -4.3608766e-02 2.3487614e-03 8.0594074e-02 1.7224055e-01
     110    2.3384622e-01 2.8046548e-01 3.3545369e-01 3.7579269e-01 3.5023478e-01
     111    3.0548638e-01 3.1393090e-01 3.2129360e-01 2.7741197e-01 1.9723064e-01
     112    5.9091026e-02 4.4501929e-02 5.1560244e-02 9.3872837e-02 1.2575628e-01
     113    9.6868411e-02 7.6321128e-02 1.0524189e-01 1.5004529e-01 2.0648331e-01
     114    2.5156583e-01 2.7195130e-01 2.7966021e-01 2.7482331e-01 2.6872218e-01
     115    2.6366308e-01 2.6645429e-01 2.8094981e-01 2.9149951e-01 2.9606473e-01
     116    2.9228433e-01 2.7995278e-01 2.5556580e-01 2.1897311e-01 1.6609325e-01
     117    9.6750575e-02 1.6616043e-02 -7.3351244e-02 -1.4194780e-01 -1.9116810e-01
     118    -2.3774326e-01 -2.7488443e-01 -2.4245663e-01 -1.5850390e-01 -1.0011878e-01
     119    -5.6273143e-02 -2.6541570e-02 4.1357626e-04 7.6089502e-02 1.7195088e-01
     120    2.2621124e-01 2.5811048e-01 2.8942649e-01 3.0369443e-01 2.6481198e-01
     121    2.1007108e-01 1.9938802e-01 1.8897873e-01 1.3901392e-01 6.1357180e-02
     122    -8.9826250e-02 -8.4156638e-02 -6.6928230e-02 -2.9539610e-02 -9.1077805e-04
     123    -1.6303158e-02 -1.9686096e-02 2.5558960e-02 8.4106583e-02 1.4595154e-01
     124    2.0559473e-01 2.6277815e-01 2.9774075e-01 2.9514927e-01 3.0052372e-01
     125    3.2796473e-01 3.5908600e-01 3.9524083e-01 4.0565189e-01 3.8317032e-01
     126    3.4793217e-01 3.0197272e-01 2.4152913e-01 1.6593475e-01 8.6393635e-02
     127    3.1290767e-03 -4.3720826e-02 -5.5936120e-02 -8.5650211e-02 -1.2945695e-01
     128    -1.7178666e-01 -2.0703229e-01 -1.6671300e-01 -7.2493046e-02 -2.1316441e-02
     129    5.3485437e-03 3.5971342e-02 7.0465019e-02 1.2945235e-01 1.9728000e-01
     130    2.4103413e-01 2.6097975e-01 2.3439161e-01 1.8080081e-01 1.2544013e-01
     131    7.2449760e-02 5.1998319e-02 2.5836370e-02 -4.9721127e-02 -1.6162625e-01
     132    -1.9391421e-01 -1.7135512e-01 -1.4844372e-01 -1.2290140e-01 -1.0244796e-01
     133    -1.0124297e-01 -8.7162232e-02 -3.6202289e-02 2.4808162e-02 8.5129136e-02
     134    1.5134493e-01 2.3352589e-01 2.8631554e-01 2.8116743e-01 2.9562521e-01
     135    3.5693219e-01 4.0990456e-01 4.4797829e-01 4.4848517e-01 4.0345733e-01
     136    3.4711801e-01 2.8326839e-01 2.0611707e-01 1.1478684e-01 2.3714665e-02
     137    -6.6847581e-02 -9.3044362e-02 -5.8163440e-02 -6.0065168e-02 -9.2126736e-02
     138    -1.1479649e-01 -1.2621188e-01 -7.9440372e-02 7.9228958e-03 5.0649084e-02
     139    6.7451052e-02 9.6584531e-02 1.3248680e-01 1.8008335e-01 2.2848626e-01
     140    2.5160833e-01 2.4654181e-01 1.8042049e-01 8.7590125e-02 2.5785030e-02
     141    -2.4303140e-02 -6.1080067e-02 -1.0974882e-01 -2.0644096e-01 -3.4034104e-01
     142    -1.7777615e-01 -1.4366407e-01 -1.2093548e-01 -1.1481959e-01 -1.0783759e-01
     143    -8.7030936e-02 -5.6054052e-02 -1.1955685e-02 3.5903691e-02 8.0946369e-02
     144    1.3367505e-01 2.0865665e-01 2.5006776e-01 2.2159510e-01 2.2828692e-01
     145    3.1308781e-01 3.6212444e-01 3.4957036e-01 3.1360181e-01 2.5524199e-01
     146    2.0423589e-01 1.6546368e-01 1.2263124e-01 7.5130589e-02 1.0886036e-02
     147    -7.0742210e-02 -1.1068051e-01 -1.1052919e-01 -1.1566723e-01 -1.2245229e-01
     148    -9.8914217e-02 -4.9902584e-02 1.9224262e-03 5.5980863e-02 9.4438922e-02
     149    1.2104380e-01 1.3761101e-01 1.5176993e-01 2.0621122e-01 2.6789126e-01
     150    2.5057291e-01 1.9056212e-01 1.3187272e-01 7.0698719e-02 2.4889520e-02
     151    -2.2234960e-02 -9.1470781e-02 -1.7758740e-01 -2.8135441e-01 -4.0252030e-01
     152    -1.2514548e-01 -9.8002822e-02 -8.3544506e-02 -8.9410632e-02 -9.0013940e-02
     153    -6.2311004e-02 -2.6358434e-02 1.0855068e-02 4.7030897e-02 7.6364078e-02
     154    1.1353791e-01 1.7473744e-01 2.0583171e-01 1.7175523e-01 1.7595413e-01
     155    2.6382511e-01 3.0251566e-01 2.5729556e-01 2.0494883e-01 1.5368436e-01
     156    1.1895425e-01 1.0499401e-01 8.9455613e-02 7.1692641e-02 2.7796858e-02
     157    -4.3247509e-02 -9.4639337e-02 -1.2635357e-01 -1.3286284e-01 -1.1421223e-01
     158    -6.0530943e-02 2.1338809e-02 7.5054752e-02 1.0926538e-01 1.4492913e-01
     159    1.7699726e-01 1.8654766e-01 1.8710741e-01 2.3478232e-01 2.8922641e-01
     160    2.4143505e-01 1.4826098e-01 1.0220352e-01 6.9281393e-02 2.7103641e-02
     161    -2.9791885e-02 -1.2745768e-01 -2.4105619e-01 -3.4487353e-01 -4.4658146e-01
     162    -4.1438383e-02 -5.3794454e-02 -6.1073583e-02 -6.3760075e-02 -6.0244270e-02
     163    -5.0079066e-02 -3.0798621e-02 3.9097679e-03 3.5610338e-02 5.0489651e-02
     164    7.2109920e-02 1.1531367e-01 1.4546015e-01 1.4362280e-01 1.6029455e-01
     165    2.1885630e-01 2.4419524e-01 2.1423784e-01 1.9020482e-01 1.8172184e-01
     166    1.7591909e-01 1.7320481e-01 1.5703673e-01 1.2614295e-01 7.9276998e-02
     167    1.6225301e-02 -3.3118737e-02 -6.8095903e-02 -6.1740564e-02 -1.7583034e-02
     168    3.1356145e-02 8.6161181e-02 1.3866607e-01 1.8789780e-01 2.2031262e-01
     169    2.3952400e-01 2.5382669e-01 2.6260542e-01 2.7420672e-01 2.7541857e-01
     170    2.1958670e-01 1.3925213e-01 1.0096121e-01 6.9483363e-02 1.8365215e-03
     171    -8.8243957e-02 -2.0330410e-01 -3.2304389e-01 -4.1886460e-01 -4.9932554e-01
     172    5.2323221e-04 -3.3039802e-02 -5.0891974e-02 -4.9231616e-02 -4.0811198e-02
     173    -3.8776333e-02 -2.6977712e-02 8.4273105e-03 4.1498738e-02 5.5253139e-02
     174    7.6176599e-02 1.1845125e-01 1.5476097e-01 1.7419020e-01 1.9593812e-01
     175    2.2886951e-01 2.4053159e-01 2.1894084e-01 2.0921765e-01 2.2024799e-01
     176    2.2942642e-01 2.3612122e-01 2.1950537e-01 1.7717376e-01 1.2831952e-01
     177    7.3416052e-02 3.1880267e-02 4.3391327e-03 1.6727798e-02 6.4852324e-02
     178    1.0291847e-01 1.3561271e-01 1.7929319e-01 2.2974274e-01 2.6943928e-01
     179    3.0022564e-01 3.2282750e-01 3.3312106e-01 3.1368022e-01 2.7125129e-01
     180    2.1157768e-01 1.4432221e-01 1.0600916e-01 6.7208336e-02 -2.0439658e-02
     181    -1.3385193e-01 -2.6237235e-01 -3.8777836e-01 -4.7914313e-01 -5.4573641e-01
     182    -3.4710040e-02 -4.9504471e-02 -5.6559204e-02 -5.5748609e-02 -4.7505107e-02
     183    -3.3168244e-02 -8.8985410e-03 3.0638895e-02 7.2723696e-02 1.0766504e-01
     184    1.5359882e-01 2.2591760e-01 2.7977595e-01 2.9523248e-01 3.0756720e-01
     185    3.2914937e-01 3.2694346e-01 2.8936170e-01 2.5968208e-01 2.4432463e-01
     186    2.4396577e-01 2.6229577e-01 2.5347049e-01 2.1314677e-01 1.6927484e-01
     187    1.2254121e-01 9.5255241e-02 8.7056561e-02 8.9753633e-02 1.0351407e-01
     188    1.2928247e-01 1.6494134e-01 1.8695086e-01 2.0442242e-01 2.7068607e-01
     189    3.6242297e-01 3.9861369e-01 3.9451407e-01 3.5611246e-01 2.9190484e-01
     190    2.2832778e-01 1.6337851e-01 1.1236654e-01 5.7304248e-02 -3.3838275e-02
     191    -1.4815322e-01 -2.8790090e-01 -4.2539964e-01 -5.2108229e-01 -5.8679239e-01
     192    -5.7928780e-02 -7.3929512e-02 -7.4018472e-02 -5.5383739e-02 -2.7436491e-02
     193    1.8488271e-03 3.8118042e-02 8.5420709e-02 1.3474250e-01 1.7832539e-01
     194    2.3348532e-01 3.1789396e-01 3.7533847e-01 3.7948876e-01 3.8029437e-01
     195    3.9376712e-01 3.8549179e-01 3.4541098e-01 3.0495097e-01 2.6665183e-01
     196    2.5179723e-01 2.6698073e-01 2.5546544e-01 2.1203525e-01 1.7158628e-01
     197    1.3502808e-01 1.1865241e-01 1.2188591e-01 1.2913929e-01 1.4103060e-01
     198    1.5983346e-01 1.8426724e-01 1.9794569e-01 2.1024380e-01 2.8352772e-01
     199    3.8893478e-01 4.2194482e-01 4.0619675e-01 3.6717806e-01 3.0703880e-01
     200    2.4359429e-01 1.7599419e-01 1.1727588e-01 5.1953356e-02 -4.8360773e-02
     201    -1.7065154e-01 -3.1544130e-01 -4.5534220e-01 -5.5049777e-01 -6.1283996e-01
     202    -4.6884981e-02 -1.0499464e-01 -1.0894200e-01 -4.1427653e-02 3.9651633e-02
     203    8.5432550e-02 1.2971708e-01 1.8851597e-01 2.3983747e-01 2.6857733e-01
     204    3.0438438e-01 3.6871712e-01 4.0668777e-01 3.9189490e-01 3.8045136e-01
     205    3.8992726e-01 3.8830863e-01 3.6981948e-01 3.3774653e-01 2.8899830e-01
     206    2.5649932e-01 2.4686617e-01 2.1617140e-01 1.6001463e-01 1.1897284e-01
     207    9.4254172e-02 8.0035617e-02 7.6998586e-02 1.1280253e-01 1.8119342e-01
     208    2.0124922e-01 1.8664250e-01 2.1407340e-01 2.7000395e-01 3.1803417e-01
     209    3.5765006e-01 3.6189200e-01 3.4208913e-01 3.2874186e-01 3.0804073e-01
     210    2.4785134e-01 1.6822263e-01 1.1241019e-01 4.9753998e-02 -7.1805928e-02
     211    -2.1837484e-01 -3.6116006e-01 -4.8903236e-01 -5.7406942e-01 -6.2465999e-01
     212    -4.8644529e-02 -1.0924196e-01 -1.0780348e-01 -2.3405769e-02 7.3903479e-02
     213    1.2316719e-01 1.7197596e-01 2.4686054e-01 3.0813009e-01 3.3096253e-01
     214    3.5553747e-01 4.0490458e-01 4.3064827e-01 4.1079765e-01 3.9065849e-01
     215    3.8214920e-01 3.7422271e-01 3.6828362e-01 3.4352761e-01 2.9329715e-01
     216    2.5139577e-01 2.2327508e-01 1.7828697e-01 1.1261039e-01 7.7372302e-02
     217    7.4223797e-02 8.1605485e-02 1.0020296e-01 1.5728898e-01 2.4578350e-01
     218    2.6970451e-01 2.4660962e-01 2.8282189e-01 3.5582319e-01 3.8554928e-01
     219    3.8508716e-01 3.6592601e-01 3.3446040e-01 3.2658874e-01 3.2316392e-01
     220    2.8236830e-01 2.1988298e-01 1.5984177e-01 8.2931192e-02 -5.0500900e-02
     221    -2.0494025e-01 -3.3940305e-01 -4.5605129e-01 -5.4143521e-01 -5.9962311e-01
     222    -6.6345623e-02 -7.0217622e-02 -4.9779371e-02 3.2095522e-03 6.1089961e-02
     223    9.3954326e-02 1.4189810e-01 2.3991533e-01 3.2374224e-01 3.5544037e-01
     224    3.8294140e-01 4.2813742e-01 4.5409141e-01 4.4853331e-01 4.2384203e-01
     225    3.7664865e-01 3.4195651e-01 3.3191607e-01 3.0992117e-01 2.6896039e-01
     226    2.2966886e-01 1.9510381e-01 1.4430914e-01 7.3309254e-02 5.3584050e-02
     227    8.7517056e-02 1.4628783e-01 2.2868366e-01 2.9497371e-01 3.4654580e-01
     228    3.7735512e-01 3.9174452e-01 4.2691237e-01 4.7369104e-01 4.9920581e-01
     229    5.0493358e-01 4.7168603e-01 4.1468642e-01 3.7971837e-01 3.5810482e-01
     230    3.6075987e-01 3.5988938e-01 2.8438757e-01 1.6692775e-01 3.5438186e-02
     231    -1.0273230e-01 -2.2135513e-01 -3.3069050e-01 -4.3499280e-01 -5.3301530e-01
     232    -1.3139178e-01 -1.0056681e-01 -6.4268580e-02 -2.1790869e-02 2.4436356e-02
     233    6.6950960e-02 1.2700182e-01 2.3104480e-01 3.2126727e-01 3.6292953e-01
     234    3.9736073e-01 4.4168283e-01 4.7128168e-01 4.8198905e-01 4.6089598e-01
     235    3.9296719e-01 3.4908823e-01 3.5121841e-01 3.3913882e-01 3.0295630e-01
     236    2.6065340e-01 2.1347016e-01 1.5910484e-01 9.5305961e-02 8.1218067e-02
     237    1.1883485e-01 1.9447379e-01 3.0570558e-01 3.7306904e-01 4.0234055e-01
     238    4.3131004e-01 4.5851180e-01 4.9435210e-01 5.3346314e-01 5.5031205e-01
     239    5.4723090e-01 5.1500219e-01 4.6374727e-01 4.2362346e-01 3.9330921e-01
     240    4.0093499e-01 4.0835413e-01 3.2338247e-01 1.9213939e-01 6.1790922e-02
     241    -6.8032534e-02 -1.7628236e-01 -2.7132646e-01 -3.5670508e-01 -4.3138014e-01
     242    -2.5392055e-01 -2.2125112e-01 -1.7430506e-01 -1.1217350e-01 -3.7855391e-02
     243    4.9603404e-02 1.3951495e-01 2.2833944e-01 3.0415431e-01 3.5604563e-01
     244    4.0110830e-01 4.4732184e-01 4.8358031e-01 5.1164173e-01 5.0424502e-01
     245    4.3982274e-01 4.1103926e-01 4.4854606e-01 4.5634888e-01 4.1793183e-01
     246    3.6343737e-01 2.9306507e-01 2.3589436e-01 1.9393424e-01 1.7122130e-01
     247    1.6789509e-01 2.1431179e-01 3.0779076e-01 3.6759942e-01 3.9804060e-01
     248    4.1382820e-01 4.1854496e-01 4.5837714e-01 5.1747817e-01 5.1776830e-01
     249    4.8100083e-01 4.6741194e-01 4.6268477e-01 4.4797517e-01 4.2400413e-01
     250    3.8523001e-01 3.2892643e-01 2.4341779e-01 1.3514857e-01 3.1517198e-03
     251    -1.3128922e-01 -2.3687016e-01 -3.0816451e-01 -3.2443875e-01 -2.9193229e-01
     252    -3.4517320e-01 -3.0468246e-01 -2.4554883e-01 -1.6486929e-01 -7.2276971e-02
     253    3.0827905e-02 1.2577075e-01 1.9651362e-01 2.5835684e-01 3.1617499e-01
     254    3.7019256e-01 4.2351567e-01 4.6649003e-01 5.0140673e-01 4.9649537e-01
     255    4.2744938e-01 3.9677163e-01 4.3765647e-01 4.4902298e-01 4.1339585e-01
     256    3.6423234e-01 3.0184378e-01 2.5938338e-01 2.3980169e-01 2.3033805e-01
     257    2.3059262e-01 2.7176789e-01 3.5160619e-01 4.0292228e-01 4.2906786e-01
     258    4.3777234e-01 4.3388716e-01 4.7132355e-01 5.3310369e-01 5.3834533e-01
     259    5.0965664e-01 5.1185585e-01 5.2642323e-01 5.2135621e-01 4.9957187e-01
     260    4.5316855e-01 3.8365788e-01 2.8727407e-01 1.7177265e-01 4.4480181e-02
     261    -7.9516659e-02 -1.7846751e-01 -2.3802433e-01 -2.2825089e-01 -1.5813209e-01
     262    -3.9804156e-01 -3.4088257e-01 -2.6714066e-01 -1.7013497e-01 -7.2187199e-02
     263    1.0920225e-02 8.1047389e-02 1.3085911e-01 1.7992566e-01 2.3905490e-01
     264    3.0025002e-01 3.6656156e-01 4.1624675e-01 4.4620526e-01 4.3047830e-01
     265    3.4593703e-01 2.9243021e-01 2.9882837e-01 2.9446697e-01 2.6754705e-01
     266    2.4402242e-01 2.2558681e-01 2.1773342e-01 2.2043002e-01 2.5042271e-01
     267    3.0836334e-01 3.7483242e-01 4.4870737e-01 4.9090301e-01 5.0478407e-01
     268    5.1359832e-01 5.1855370e-01 5.4608656e-01 5.8951199e-01 6.2529465e-01
     269    6.5453931e-01 6.6868643e-01 6.6927839e-01 6.5378562e-01 6.2806600e-01
     270    6.2135652e-01 6.0071082e-01 4.8066080e-01 3.2065401e-01 2.0534808e-01
     271    1.0984237e-01 2.2652559e-02 -3.9226263e-02 -5.5325522e-02 -3.1762203e-02
     272    -4.4350590e-01 -3.7939382e-01 -3.0378426e-01 -2.1263207e-01 -1.1943527e-01
     273    -3.2324336e-02 4.4750286e-02 1.0442923e-01 1.5853746e-01 2.1046042e-01
     274    2.6677211e-01 3.3842783e-01 3.8984774e-01 4.1287821e-01 3.8886956e-01
     275    2.9634438e-01 2.3312041e-01 2.2595229e-01 2.1885403e-01 2.0295665e-01
     276    1.9874995e-01 2.0851218e-01 2.2313317e-01 2.4136522e-01 2.8440480e-01
     277    3.5303203e-01 4.1789695e-01 4.7861532e-01 5.1838576e-01 5.3925503e-01
     278    5.5926629e-01 5.7795579e-01 6.0197920e-01 6.3011773e-01 6.6214180e-01
     279    6.9395031e-01 7.0378066e-01 6.9882645e-01 6.9253747e-01 6.8422217e-01
     280    6.9358451e-01 6.8586620e-01 5.6217283e-01 3.9412792e-01 2.8873949e-01
     281    2.0716168e-01 1.2293948e-01 5.8462717e-02 3.6060609e-02 4.9074240e-02
     282    -4.8246430e-01 -4.2167862e-01 -3.5749952e-01 -2.9526252e-01 -2.1701651e-01
     283    -9.9913417e-02 1.8025212e-02 1.1972617e-01 1.9740287e-01 2.3338240e-01
     284    2.7232018e-01 3.4124773e-01 3.8926172e-01 4.0366751e-01 3.7434977e-01
     285    2.8183607e-01 2.2301551e-01 2.2503668e-01 2.2922396e-01 2.2659853e-01
     286    2.3459936e-01 2.5522418e-01 2.7920616e-01 3.0602851e-01 3.3398101e-01
     287    3.6296708e-01 3.9747052e-01 4.3741131e-01 4.8175887e-01 5.2984052e-01
     288    5.7243646e-01 6.0957402e-01 6.3694744e-01 6.5350289e-01 6.4538212e-01
     289    6.2081663e-01 6.0950916e-01 6.0866768e-01 6.3254886e-01 6.6402091e-01
     290    6.6367147e-01 6.2988456e-01 5.2363967e-01 3.8637736e-01 2.8858341e-01
     291    2.0535409e-01 1.1476736e-01 4.7710858e-02 4.0718907e-02 8.2875338e-02
     292    -4.7133770e-01 -4.0681016e-01 -3.4358442e-01 -2.8782885e-01 -2.1885008e-01
     293    -1.1515584e-01 -3.0158086e-03 1.1366762e-01 2.0340264e-01 2.3639490e-01
     294    2.6679239e-01 3.2201073e-01 3.5887160e-01 3.6671570e-01 3.4020692e-01
     295    2.6390162e-01 2.1931030e-01 2.2978224e-01 2.4313450e-01 2.5196253e-01
     296    2.6515534e-01 2.8376466e-01 2.9824766e-01 3.0749873e-01 3.2367931e-01
     297    3.4716219e-01 3.7621630e-01 4.1089287e-01 4.5445595e-01 5.0546078e-01
     298    5.4503829e-01 5.7481562e-01 6.0058695e-01 6.1802102e-01 5.9625220e-01
     299    5.4937028e-01 5.2495976e-01 5.1739173e-01 5.4185665e-01 5.7824566e-01
     300    5.7540594e-01 5.4131813e-01 4.6224371e-01 3.5753655e-01 2.5596325e-01
     301    1.6156529e-01 8.9618821e-02 4.7788120e-02 5.3629123e-02 1.0186992e-01
     302    -4.1107560e-01 -3.3654976e-01 -2.6471463e-01 -1.9453384e-01 -1.2956380e-01
     303    -7.9967165e-02 -1.7553255e-02 8.8068110e-02 1.7856191e-01 2.2084157e-01
     304    2.5111024e-01 2.8226601e-01 3.0040665e-01 3.0287496e-01 2.8642967e-01
     305    2.4189030e-01 2.2105919e-01 2.3942400e-01 2.5983046e-01 2.7794997e-01
     306    2.8948446e-01 2.9397893e-01 2.8140701e-01 2.4883447e-01 2.5679798e-01
     307    3.0740400e-01 3.5467481e-01 3.9863841e-01 4.3623282e-01 4.6709410e-01
     308    4.7970167e-01 4.7823816e-01 4.9783170e-01 5.2779218e-01 5.1781767e-01
     309    4.8149878e-01 4.5183223e-01 4.2729037e-01 4.2444030e-01 4.3276503e-01
     310    4.3380009e-01 4.2302412e-01 3.7933317e-01 3.0801024e-01 1.9217357e-01
     311    7.8259874e-02 4.8767141e-02 5.8419255e-02 7.4473590e-02 1.0664886e-01
     312    -3.1689599e-01 -2.5209865e-01 -1.9005655e-01 -1.2926495e-01 -7.4855292e-02
     313    -3.8934280e-02 9.7845614e-03 1.0223591e-01 1.8408301e-01 2.2798999e-01
     314    2.5490371e-01 2.7127061e-01 2.6610226e-01 2.2946476e-01 1.9959173e-01
     315    1.8590463e-01 1.9126954e-01 2.2149626e-01 2.4498808e-01 2.5625909e-01
     316    2.6236332e-01 2.6437448e-01 2.4773934e-01 2.0869985e-01 2.2557659e-01
     317    3.0115607e-01 3.5835330e-01 3.9772322e-01 4.2811403e-01 4.4945878e-01
     318    4.6050198e-01 4.6367178e-01 4.8388051e-01 5.1328341e-01 5.1685690e-01
     319    5.0099829e-01 4.7074020e-01 4.3351964e-01 4.2512251e-01 4.2866381e-01
     320    4.1411698e-01 3.8425917e-01 3.3033866e-01 2.5528746e-01 1.4194528e-01
     321    3.9919408e-02 4.4989797e-02 8.8309705e-02 1.0800375e-01 1.2249916e-01
     322    -1.9519723e-01 -1.5679833e-01 -1.2015380e-01 -8.8951007e-02 -5.0842659e-02
     323    5.1351258e-03 7.0022276e-02 1.4660196e-01 2.1137664e-01 2.5100081e-01
     324    2.7245921e-01 2.8200427e-01 2.5048207e-01 1.4860218e-01 8.6602560e-02
     325    1.0187718e-01 1.3452439e-01 1.7960407e-01 2.0275939e-01 1.9375246e-01
     326    1.9187210e-01 2.0234573e-01 2.0210836e-01 1.8742303e-01 2.2747891e-01
     327    3.2480901e-01 3.8418413e-01 4.0712226e-01 4.2907971e-01 4.4966842e-01
     328    4.8075151e-01 5.1925727e-01 5.4571667e-01 5.6304476e-01 5.8110924e-01
     329    5.9361467e-01 5.6758117e-01 5.2271401e-01 5.2640716e-01 5.4314708e-01
     330    4.9643859e-01 4.1213226e-01 3.0917759e-01 1.9874950e-01 1.0292596e-01
     331    4.0195054e-02 7.2201618e-02 1.3275808e-01 1.5006496e-01 1.4555525e-01
     332    -1.5197705e-01 -1.2403176e-01 -1.0187704e-01 -9.2601526e-02 -7.2436522e-02
     333    -1.7666476e-02 4.4789264e-02 1.0392569e-01 1.5709624e-01 2.0393572e-01
     334    2.3087038e-01 2.3428728e-01 2.0050669e-01 1.0625563e-01 5.0625809e-02
     335    6.7850676e-02 1.0305411e-01 1.5250729e-01 1.7761328e-01 1.6586962e-01
     336    1.7423204e-01 2.1119262e-01 2.3589255e-01 2.4407523e-01 2.8695853e-01
     337    3.6635837e-01 4.0887992e-01 4.1615604e-01 4.2904372e-01 4.4723772e-01
     338    4.9081757e-01 5.5253689e-01 5.7850301e-01 5.7881143e-01 5.8595493e-01
     339    5.9267439e-01 5.7926284e-01 5.5483515e-01 5.5203094e-01 5.4737585e-01
     340    4.8127572e-01 3.7771051e-01 2.5561848e-01 1.3465474e-01 6.2851231e-02
     341    3.2778906e-02 6.9197903e-02 1.2406797e-01 1.3720958e-01 1.2661431e-01
     342    -1.6946374e-01 -1.4122061e-01 -1.2565373e-01 -1.3152476e-01 -1.2947677e-01
     343    -9.1972888e-02 -4.6051673e-02 -5.0178291e-03 4.0770435e-02 1.0246791e-01
     344    1.4220622e-01 1.3976143e-01 1.2168367e-01 8.9802027e-02 6.8855025e-02
     345    6.6060243e-02 8.4139039e-02 1.2989610e-01 1.5932049e-01 1.5972223e-01
     346    1.9283376e-01 2.6939974e-01 3.2570400e-01 3.5674948e-01 3.8729353e-01
     347    4.1802405e-01 4.2963830e-01 4.2319039e-01 4.2748458e-01 4.4267467e-01
     348    4.9362596e-01 5.6994784e-01 5.9133135e-01 5.7215762e-01 5.4982583e-01
     349    5.2509985e-01 5.3013991e-01 5.4659588e-01 5.2392119e-01 4.7292815e-01
     350    3.9657963e-01 2.9932015e-01 1.8124840e-01 6.9573080e-02 2.6945326e-02
     351    2.4253684e-02 4.6978603e-02 7.7730029e-02 8.5266773e-02 7.8956551e-02
     352    -1.4944217e-01 -1.4221059e-01 -1.3786844e-01 -1.3958046e-01 -1.3676299e-01
     353    -1.2113058e-01 -9.6498583e-02 -6.2961121e-02 -2.1867982e-02 3.5559245e-02
     354    6.7737953e-02 4.8983812e-02 2.2863058e-02 1.1032761e-03 -1.7781689e-02
     355    -3.6784923e-02 -2.7589852e-02 2.1446972e-02 6.5275624e-02 9.3380635e-02
     356    1.4843220e-01 2.3841978e-01 3.0983171e-01 3.5900675e-01 3.8822764e-01
     357    3.9734851e-01 4.0313236e-01 4.0587939e-01 4.1407490e-01 4.2933557e-01
     358    4.8876757e-01 5.7999436e-01 6.1250518e-01 6.0101012e-01 5.7721609e-01
     359    5.4528235e-01 5.5176713e-01 5.7275330e-01 5.4425729e-01 4.8096063e-01
     360    3.8682502e-01 2.7357390e-01 1.6336805e-01 7.0851906e-02 4.4950738e-02
     361    5.5568858e-02 7.7914788e-02 1.0382459e-01 1.1134992e-01 1.0708690e-01
     362    -1.1052319e-01 -1.3557696e-01 -1.4424646e-01 -1.3007897e-01 -1.1473486e-01
     363    -1.2177055e-01 -1.1946607e-01 -8.6223008e-02 -4.8243688e-02 -8.0388198e-03
     364    3.5011462e-03 -3.6705983e-02 -8.4851108e-02 -1.2991527e-01 -1.6688432e-01
     365    -1.9729368e-01 -1.9084040e-01 -1.3553547e-01 -7.2720779e-02 -8.9163048e-03
     366    6.3475426e-02 1.4625028e-01 2.1973332e-01 2.8312831e-01 3.1810957e-01
     367    3.2387434e-01 3.4081903e-01 3.6837853e-01 3.8953667e-01 4.0787064e-01
     368    4.7505279e-01 5.7808988e-01 6.3084066e-01 6.4520168e-01 6.3948744e-01
     369    6.1783306e-01 6.1404365e-01 6.1405900e-01 5.8872726e-01 5.3611371e-01
     370    4.2056640e-01 2.7865366e-01 1.8181436e-01 1.1763204e-01 9.9768743e-02
     371    1.1243926e-01 1.4106847e-01 1.7284985e-01 1.8309971e-01 1.7922291e-01
     372    -1.1679526e-01 -1.3633062e-01 -1.4909537e-01 -1.5460938e-01 -1.5449327e-01
     373    -1.5122944e-01 -1.3980421e-01 -1.1508898e-01 -8.6520749e-02 -5.0668898e-02
     374    -3.9923607e-02 -7.5913722e-02 -1.2020586e-01 -1.6556183e-01 -1.9478349e-01
     375    -2.0226683e-01 -1.8478683e-01 -1.3775802e-01 -8.6077767e-02 -3.3965417e-02
     376    2.2801997e-02 8.4525674e-02 1.5155088e-01 2.2541265e-01 2.6231374e-01
     377    2.6062522e-01 2.7747323e-01 3.1198534e-01 3.4017065e-01 3.6524409e-01
     378    4.2894955e-01 5.2082581e-01 5.7066212e-01 5.8891344e-01 5.9764048e-01
     379    5.9562942e-01 5.9099444e-01 5.7856152e-01 5.4850785e-01 4.9387102e-01
     380    3.7056348e-01 2.2406865e-01 1.4970517e-01 1.1697153e-01 1.1344126e-01
     381    1.2931512e-01 1.4559578e-01 1.5919547e-01 1.5779824e-01 1.4511087e-01
     382    -1.5244248e-01 -1.4257531e-01 -1.5156088e-01 -1.9357941e-01 -2.2107000e-01
     383    -1.8547678e-01 -1.4488089e-01 -1.3316835e-01 -1.1864427e-01 -8.2493309e-02
     384    -6.3108421e-02 -7.9849543e-02 -1.0511362e-01 -1.3778528e-01 -1.4518438e-01
     385    -1.1146785e-01 -7.6626682e-02 -4.7986346e-02 -2.5304197e-02 -1.0998946e-02
     386    1.1461464e-02 4.3190940e-02 9.8352118e-02 1.8056967e-01 2.1919269e-01
     387    2.1173645e-01 2.2310835e-01 2.5262509e-01 2.8528980e-01 3.2208176e-01
     388    3.7539898e-01 4.3991192e-01 4.7206112e-01 4.8100626e-01 5.0066458e-01
     389    5.2176607e-01 5.1981291e-01 4.9824715e-01 4.5940101e-01 3.9690490e-01
     390    2.7395852e-01 1.3623278e-01 8.8246036e-02 8.6654640e-02 9.7840052e-02
     391    1.1449164e-01 1.0698060e-01 8.9281832e-02 6.9692074e-02 4.5757857e-02
     392    -1.7853280e-01 -1.5119056e-01 -1.4298190e-01 -1.6863583e-01 -1.7869852e-01
     393    -1.1843750e-01 -6.3591675e-02 -6.2022426e-02 -6.5824015e-02 -5.3356987e-02
     394    -5.0170743e-02 -6.7361582e-02 -8.7439597e-02 -1.0958855e-01 -1.1239804e-01
     395    -8.4025606e-02 -6.0699878e-02 -5.1876038e-02 -3.6641269e-02 -1.1459314e-02
     396    1.2437702e-02 3.1361573e-02 8.8622332e-02 1.9049548e-01 2.4662504e-01
     397    2.5399814e-01 2.6712215e-01 2.8628294e-01 3.2891780e-01 3.9185509e-01
     398    4.4240037e-01 4.8201044e-01 5.0174002e-01 5.0585959e-01 5.1766993e-01
     399    5.2941753e-01 5.1754188e-01 4.8654526e-01 4.4512447e-01 3.8190837e-01
     400    2.4495721e-01 9.0140422e-02 4.3793022e-02 4.8629733e-02 5.0238158e-02
     401    5.1570524e-02 2.8437552e-02 1.8113468e-03 -7.5918376e-03 -5.9491733e-03
     402    -2.0123994e-01 -1.6534105e-01 -1.3477882e-01 -1.1714991e-01 -8.6852822e-02
     403    -7.8283773e-03 5.2814605e-02 4.8529207e-02 2.6836456e-02 3.8484072e-03
     404    -2.1818145e-02 -4.9485652e-02 -7.1644327e-02 -8.4850882e-02 -9.2476760e-02
     405    -9.4108121e-02 -9.6914416e-02 -1.0695855e-01 -8.6997019e-02 -2.5988664e-02
     406    1.9745513e-02 3.9706118e-02 1.0601555e-01 2.2697097e-01 3.0593704e-01
     407    3.3985110e-01 3.5863860e-01 3.6402405e-01 4.1962610e-01 5.1704005e-01
     408    5.6983834e-01 5.8706080e-01 5.9784640e-01 5.9961717e-01 5.9216334e-01
     409    5.7469503e-01 5.4325427e-01 4.9974515e-01 4.5743043e-01 3.9778367e-01
     410    2.4677843e-01 7.1159479e-02 1.5682663e-02 1.3137329e-02 -6.4439198e-03
     411    -2.7631397e-02 -6.1107398e-02 -8.5864220e-02 -7.5663066e-02 -3.8348196e-02
     412    -2.2550102e-01 -2.0605229e-01 -1.8209904e-01 -1.5820086e-01 -1.1892788e-01
     413    -3.7401574e-02 2.7443331e-02 3.6597391e-02 2.0064189e-02 -1.9112058e-02
     414    -5.9249715e-02 -8.9920251e-02 -1.1303875e-01 -1.2649418e-01 -1.3669593e-01
     415    -1.4514402e-01 -1.5378382e-01 -1.6851461e-01 -1.4565758e-01 -7.2482552e-02
     416    -9.4683242e-03 3.4443877e-02 1.0070197e-01 1.9358866e-01 2.6678122e-01
     417    3.1888840e-01 3.4162820e-01 3.3787643e-01 4.0624940e-01 5.3450172e-01
     418    5.9725830e-01 6.0853944e-01 6.2081228e-01 6.2661162e-01 6.0740765e-01
     419    5.6620275e-01 5.0254191e-01 4.2469474e-01 3.7129326e-01 3.2002304e-01
     420    2.0652214e-01 8.0869563e-02 4.9210659e-02 5.7577084e-02 4.4859570e-02
     421    2.4604151e-02 -1.0771114e-02 -4.7829551e-02 -7.0141543e-02 -8.2617794e-02
     422    -2.4411982e-01 -2.4907424e-01 -2.4224815e-01 -2.2617364e-01 -1.9224183e-01
     423    -1.2222311e-01 -6.0515692e-02 -3.2097055e-02 -3.3618803e-02 -7.7653025e-02
     424    -1.2371176e-01 -1.5455378e-01 -1.7868661e-01 -1.9634182e-01 -2.0817761e-01
     425    -2.1407163e-01 -2.1759338e-01 -2.2420598e-01 -1.9568775e-01 -1.2175049e-01
     426    -4.4504530e-02 3.2772125e-02 9.4775470e-02 1.3927994e-01 1.9116352e-01
     427    2.5130176e-01 2.7717902e-01 2.7221805e-01 3.5025541e-01 4.9729080e-01
     428    5.6929291e-01 5.8256589e-01 6.0053709e-01 6.1240088e-01 5.8444946e-01
     429    5.2227587e-01 4.2415148e-01 3.0656394e-01 2.3487107e-01 1.8828538e-01
     430    1.3458857e-01 9.1048915e-02 9.3382716e-02 1.1472487e-01 1.1829014e-01
     431    1.0763494e-01 7.2392240e-02 1.6108532e-02 -6.0354977e-02 -1.5724527e-01
     432    -2.2349121e-01 -2.1131467e-01 -1.8862386e-01 -1.5209772e-01 -1.1280922e-01
     433    -7.6703741e-02 -4.9469696e-02 -3.2994158e-02 -3.9560440e-02 -8.4618100e-02
     434    -1.3118061e-01 -1.6550849e-01 -1.8876388e-01 -1.9674800e-01 -2.0366411e-01
     435    -2.1643665e-01 -2.1341475e-01 -1.9074716e-01 -1.4553088e-01 -7.4634003e-02
     436    7.3928350e-04 7.9797443e-02 1.3932162e-01 1.7672523e-01 2.1251095e-01
     437    2.4726828e-01 2.7699305e-01 3.0298628e-01 3.7343397e-01 4.8024158e-01
     438    5.3020239e-01 5.3498763e-01 5.4679363e-01 5.5465811e-01 5.1716969e-01
     439    4.4284979e-01 3.4243791e-01 2.2450771e-01 1.2313649e-01 3.9596309e-02
     440    2.7082409e-03 -5.2912314e-03 -1.0923805e-02 -1.4267022e-02 -2.4480286e-02
     441    -4.8184221e-02 -1.0336193e-01 -1.7960613e-01 -2.6902916e-01 -3.7397408e-01
     442    -1.9920445e-01 -1.5276322e-01 -1.0270286e-01 -4.0378202e-02 5.2281413e-03
     443    5.6303782e-03 -7.7748776e-03 -1.7912844e-02 -3.8995323e-02 -7.9501021e-02
     444    -1.2081621e-01 -1.5825730e-01 -1.8189796e-01 -1.8309069e-01 -1.8716043e-01
     445    -2.0778843e-01 -1.9514584e-01 -1.3427552e-01 -6.5922278e-02 4.8491986e-03
     446    7.4547581e-02 1.4297030e-01 2.0132980e-01 2.4937714e-01 2.7122227e-01
     447    2.6609909e-01 2.9643540e-01 3.6057720e-01 4.1654788e-01 4.6434973e-01
     448    4.8089362e-01 4.7138324e-01 4.7102252e-01 4.6992716e-01 4.2352625e-01
     449    3.4302661e-01 2.5612129e-01 1.5758124e-01 3.0365311e-02 -9.8036601e-02
     450    -1.3900857e-01 -1.3890921e-01 -1.7047739e-01 -2.1219426e-01 -2.4938583e-01
     451    -2.9617134e-01 -3.7731772e-01 -4.7005114e-01 -5.5105650e-01 -6.2728893e-01
     452    -2.6163527e-01 -2.0238318e-01 -1.4824816e-01 -9.6958573e-02 -5.6071392e-02
     453    -2.8253269e-02 -2.2652354e-02 -5.3395059e-02 -9.0100425e-02 -1.1681773e-01
     454    -1.4536098e-01 -1.7845203e-01 -2.1481249e-01 -2.5814094e-01 -2.8886988e-01
     455    -3.0620444e-01 -2.8068607e-01 -1.9997385e-01 -1.0622101e-01 -3.3410106e-03
     456    8.8034293e-02 1.6512463e-01 2.2795737e-01 2.7697842e-01 2.9007139e-01
     457    2.6624381e-01 2.7916229e-01 3.2749275e-01 3.8330292e-01 4.4383117e-01
     458    4.5236602e-01 4.1924881e-01 4.0576833e-01 3.9845845e-01 3.4428693e-01
     459    2.5735254e-01 1.7525429e-01 9.0208621e-02 -1.4606805e-02 -1.1980883e-01
     460    -1.6541794e-01 -1.8339469e-01 -2.2343115e-01 -2.7327270e-01 -3.2996688e-01
     461    -3.9670973e-01 -4.8485921e-01 -5.7383088e-01 -6.3807775e-01 -6.8523677e-01
     462    -3.4903227e-01 -2.8320659e-01 -2.3346057e-01 -2.0720056e-01 -1.7946913e-01
     463    -1.1533758e-01 -7.9653273e-02 -1.2574403e-01 -1.7456102e-01 -1.8549741e-01
     464    -1.9924703e-01 -2.2398905e-01 -2.7332640e-01 -3.6771844e-01 -4.2859294e-01
     465    -4.3451300e-01 -3.9426641e-01 -3.0366406e-01 -1.8859411e-01 -4.8263302e-02
     466    6.8615417e-02 1.5559750e-01 2.2183467e-01 2.6808278e-01 2.7637835e-01
     467    2.4591159e-01 2.3934744e-01 2.5671630e-01 3.1613976e-01 4.0921190e-01
     468    4.2090494e-01 3.6873383e-01 3.4314725e-01 3.2803768e-01 2.7001623e-01
     469    1.8345296e-01 1.0580490e-01 3.2719634e-02 -3.0452298e-02 -8.6144461e-02
     470    -1.3770584e-01 -1.8551554e-01 -2.2870102e-01 -2.7538678e-01 -3.4524994e-01
     471    -4.2600943e-01 -5.1053992e-01 -5.8657390e-01 -6.3327457e-01 -6.5688741e-01
     472    -3.6504635e-01 -2.8049713e-01 -2.2627718e-01 -2.0856215e-01 -2.0666262e-01
     473    -2.0140078e-01 -2.1122541e-01 -2.5295132e-01 -2.8940117e-01 -2.9716109e-01
     474    -3.0676372e-01 -3.2484041e-01 -3.6567871e-01 -4.5016411e-01 -4.9694616e-01
     475    -4.8140248e-01 -4.2826376e-01 -3.3771051e-01 -2.2690660e-01 -9.4068765e-02
     476    1.2238132e-02 8.5101886e-02 1.4198220e-01 1.8428104e-01 1.9290137e-01
     477    1.6702747e-01 1.6975091e-01 2.0044912e-01 2.5353167e-01 3.2421464e-01
     478    3.4002270e-01 3.1108986e-01 2.8320684e-01 2.5079337e-01 2.0408672e-01
     479    1.4573605e-01 7.9855742e-02 1.2310296e-02 -2.7202459e-02 -5.4134257e-02
     480    -1.0141200e-01 -1.5752508e-01 -2.0854421e-01 -2.6179177e-01 -3.2786819e-01
     481    -3.9982289e-01 -4.7269648e-01 -5.4138166e-01 -5.9639630e-01 -6.4058426e-01
     482    -3.5974405e-01 -2.6077965e-01 -2.0447704e-01 -1.9333896e-01 -2.1915764e-01
     483    -2.8871222e-01 -3.5742387e-01 -3.9376204e-01 -4.1659268e-01 -4.2736329e-01
     484    -4.3551852e-01 -4.4276704e-01 -4.6343089e-01 -5.1478366e-01 -5.3094027e-01
     485    -4.9040806e-01 -4.2345068e-01 -3.3235219e-01 -2.3098473e-01 -1.1799797e-01
     486    -3.4629846e-02 1.2411168e-02 4.9604435e-02 7.8835913e-02 8.7532208e-02
     487    7.5158759e-02 9.7161554e-02 1.5191919e-01 1.9663272e-01 2.3215994e-01
     488    2.5091779e-01 2.5263483e-01 2.2440919e-01 1.7320701e-01 1.3763344e-01
     489    1.0783885e-01 5.4649081e-02 -7.9864595e-03 -3.7128018e-02 -5.3155315e-02
     490    -9.7875173e-02 -1.5657023e-01 -2.1420685e-01 -2.7278726e-01 -3.2861868e-01
     491    -3.8478534e-01 -4.4427884e-01 -5.0801264e-01 -5.7853618e-01 -6.5508315e-01
     492    -3.8679371e-01 -2.9996468e-01 -2.5744765e-01 -2.6614088e-01 -3.0302338e-01
     493    -3.5402269e-01 -4.1346033e-01 -4.8096598e-01 -5.3151849e-01 -5.4797339e-01
     494    -5.4647576e-01 -5.2415367e-01 -5.1590111e-01 -5.4738122e-01 -5.4314088e-01
     495    -4.7968831e-01 -3.8937556e-01 -2.7343835e-01 -1.5531931e-01 -3.4328043e-02
     496    3.8626716e-02 5.4496753e-02 5.3196691e-02 3.6024341e-02 3.2584510e-02
     497    4.3926962e-02 7.7626024e-02 1.3258858e-01 1.7772324e-01 2.1316309e-01
     498    2.2492934e-01 2.1390312e-01 1.7435501e-01 1.1177003e-01 5.6571021e-02
     499    4.8149880e-03 -4.2640038e-02 -8.7978160e-02 -1.3700158e-01 -1.9113723e-01
     500    -2.6237144e-01 -3.3903946e-01 -3.9507779e-01 -4.4322892e-01 -4.9775279e-01
     501    -5.5466326e-01 -6.1138946e-01 -6.7337385e-01 -7.4758597e-01 -8.3194174e-01
     502    -4.0911803e-01 -3.5111910e-01 -3.3107769e-01 -3.6035377e-01 -4.0083949e-01
     503    -4.1313043e-01 -4.4594185e-01 -5.4160881e-01 -6.2047471e-01 -6.4319479e-01
     504    -6.3363865e-01 -5.8453296e-01 -5.4942631e-01 -5.6044391e-01 -5.3995334e-01
     505    -4.6666749e-01 -3.5970654e-01 -2.1491882e-01 -7.5956088e-02 5.5666548e-02
     506    1.2106627e-01 1.0900122e-01 7.1940162e-02 1.0636674e-02 -5.9452620e-03
     507    2.4728028e-02 6.3378820e-02 1.0969439e-01 1.5343523e-01 1.9269671e-01
     508    1.9164798e-01 1.5537288e-01 1.0511938e-01 4.0317144e-02 -3.4505724e-02
     509    -1.1382096e-01 -1.6034610e-01 -1.9286968e-01 -2.6506929e-01 -3.5811548e-01
     510    -4.4755464e-01 -5.3040680e-01 -5.8103603e-01 -6.1863474e-01 -6.7175245e-01
     511    -7.3074944e-01 -7.9130812e-01 -8.5488812e-01 -9.2194824e-01 -9.9235530e-01
     512    -3.9399697e-01 -3.7610329e-01 -3.8215764e-01 -4.2056692e-01 -4.6311629e-01
     513    -4.7955181e-01 -5.0982911e-01 -5.8795331e-01 -6.5331343e-01 -6.7841917e-01
     514    -6.7234989e-01 -6.2487390e-01 -5.8195006e-01 -5.6630715e-01 -5.3558631e-01
     515    -4.8398583e-01 -3.8739306e-01 -2.2980139e-01 -8.5555166e-02 3.8613920e-02
     516    9.5193522e-02 7.3537046e-02 3.1529210e-02 -2.9310198e-02 -4.8492716e-02
     517    -2.3745681e-02 7.2547563e-03 4.4115175e-02 7.3477740e-02 9.4106522e-02
     518    7.6845038e-02 2.7463526e-02 -2.1131922e-02 -7.2798907e-02 -1.3460045e-01
     519    -2.0192426e-01 -2.5236638e-01 -2.9599091e-01 -3.6217165e-01 -4.3710699e-01
     520    -4.9277030e-01 -5.3869502e-01 -5.8373204e-01 -6.2770797e-01 -6.7232822e-01
     521    -7.2203846e-01 -7.9218949e-01 -8.6129050e-01 -9.0410809e-01 -9.2818124e-01
     522    -3.5117250e-01 -3.8625919e-01 -4.2353368e-01 -4.6326410e-01 -5.0458377e-01
     523    -5.4926429e-01 -5.8877417e-01 -6.1639665e-01 -6.3908584e-01 -6.6403660e-01
     524    -6.7003136e-01 -6.4494094e-01 -6.0815192e-01 -5.6129275e-01 -5.2577379e-01
     525    -5.2185338e-01 -4.5657355e-01 -2.9624340e-01 -1.5642202e-01 -5.1631191e-02
     526    -3.9274136e-03 -2.1361101e-02 -4.5900235e-02 -7.4326615e-02 -8.9013201e-02
     527    -8.9201943e-02 -7.6682519e-02 -5.2458739e-02 -4.7125804e-02 -5.9739440e-02
     528    -9.7328606e-02 -1.5500186e-01 -1.9307943e-01 -2.1812000e-01 -2.4399708e-01
     529    -2.7324408e-01 -3.3242948e-01 -4.0526574e-01 -4.4594199e-01 -4.6302481e-01
     530    -4.4597846e-01 -4.2122058e-01 -4.5940325e-01 -5.2159531e-01 -5.5270469e-01
     531    -5.8553806e-01 -6.7128015e-01 -7.4965288e-01 -7.5302785e-01 -7.0160053e-01
     532    </values>
     533            </component>
     534        </field>
     535</input>
    8536</run>
    9537
  • branches/blt4/gui/apps/vtkcontour-test

    r2170 r2409  
    380380    -font -*-courier-medium-o-normal-*-*-120-*
    381381$widgets(comm) tag configure incoming -foreground blue
     382
     383source ~/Downloads/tkcon.tcl
     384package tkcon
     385tkcon::Init
  • branches/blt4/gui/scripts/histogramresult.tcl

    r2297 r2409  
    1919option add *HistogramResult*Element.relief solid widgetDefault
    2020option add *HistogramResult*x.loose 0 widgetDefault
    21 option add *HistogramResult*y.loose 0 widgetDefault
     21option add *HistogramResult*y.loose 1 widgetDefault
    2222option add *HistogramResult*Element.relief solid widgetDefault
    2323option add *HistogramResult*Element.borderWidth 1 widgetDefault
    2424# Don't let the step size default to 1.0 (for barcharts)
    2525option add *HistogramResult*x.stepSize 1.0 widgetDefault
     26option add *HistogramResult*x.subdivisions 0 widgetDefault
    2627
    2728option add *HistogramResult.width 3i widgetDefault
     
    8586    itk_option define -dimcolor dimColor DimColor ""
    8687    itk_option define -autocolors autoColors AutoColors ""
    87 
    8888    constructor {args} {
    8989        # defined below
     
    102102    public method download {option args}
    103103
    104     protected method _rebuild {}
    105     protected method _resetLimits {}
    106     protected method _zoom {option args}
    107     protected method _hilite {state x y}
    108     protected method _axis {option args}
    109     protected method _getAxes {dataobj}
    110     protected method _getLineMarkerOptions { style }
    111     protected method _getTextMarkerOptions { style }
    112     protected method _enterMarker { g name x y text }
    113     protected method _leaveMarker { g name }
     104    protected method Rebuild {}
     105    protected method ResetLimits {}
     106    protected method Zoom {option args}
     107    protected method Hilite {state x y}
     108    protected method Axis {option args}
     109    protected method GetAxes {dataobj}
     110    protected method GetLineMarkerOptions { style }
     111    protected method GetTextMarkerOptions { style }
     112    protected method EnterMarker { g name x y text }
     113    protected method LeaveMarker { g name }
    114114    protected method FormatLabels { g value }
    115115
     
    148148    Rappture::dispatcher _dispatcher
    149149    $_dispatcher register !rebuild
    150     $_dispatcher dispatch $this !rebuild "[itcl::code $this _rebuild]; list"
     150    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
    151151
    152152    array set _downloadPopup {
     
    167167            -highlightthickness 0 \
    168168            -image [Rappture::icon reset-view] \
    169             -command [itcl::code $this _zoom reset]
     169            -command [itcl::code $this Zoom reset]
    170170    } {
    171171        usual
     
    190190    # Add bindings so you can mouse over points to see values:
    191191    #
    192     bind $itk_component(plot) <Motion> \
    193         [itcl::code $this _hilite at %x %y]
    194     bind $itk_component(plot) <Leave> \
    195         [itcl::code $this _hilite off %x %y]
     192    $itk_component(plot) element bind all <Enter> \
     193        [itcl::code $this Hilite at %x %y]
     194    $itk_component(plot) element bind all <Motion> \
     195        [itcl::code $this Hilite at %x %y]
     196    $itk_component(plot) element bind all <Leave> \
     197        [itcl::code $this Hilite off %x %y]
    196198
    197199    # Add support for editing axes:
     
    244246        set _axisPopup(format-$axis) "%.6g"
    245247    }
    246     _axis scale x linear
    247     _axis scale y linear
     248    Axis scale x linear
     249    Axis scale y linear
    248250
    249251    $itk_component(plot) legend configure -hide yes
     
    431433    lappend allx x  ;# fix main x-axis too
    432434    foreach axis $allx {
    433         _axis scale $axis linear
     435        Axis scale $axis linear
    434436    }
    435437
     
    437439    lappend ally y  ;# fix main y-axis too
    438440    foreach axis $ally {
    439         _axis scale $axis linear
     441        Axis scale $axis linear
    440442    }
    441443
     
    443445    foreach dataobj $args {
    444446        # find the axes for this dataobj (e.g., {x y2})
    445         foreach {map(x) map(y)} [_getAxes $dataobj] break
     447        foreach {map(x) map(y)} [GetAxes $dataobj] break
    446448
    447449        foreach axis {x y} {
     
    467469
    468470            if {[$dataobj hints ${axis}scale] == "log"} {
    469                 _axis scale $map($axis) log
    470             }
    471         }
    472     }
    473     _resetLimits
     471                Axis scale $map($axis) log
     472            }
     473        }
     474    }
     475    ResetLimits
    474476}
    475477
     
    597599
    598600# ----------------------------------------------------------------------
    599 # USAGE: _rebuild
     601# USAGE: Rebuild
    600602#
    601603# Called automatically whenever something changes that affects the
     
    603605# widget to display new data.
    604606# ----------------------------------------------------------------------
    605 itcl::body Rappture::HistogramResult::_rebuild {} {
     607itcl::body Rappture::HistogramResult::Rebuild {} {
    606608    set g $itk_component(plot)
    607609
     
    673675       
    674676        $g axis bind $axis <Enter> \
    675             [itcl::code $this _axis hilite $axis on]
     677            [itcl::code $this Axis hilite $axis on]
    676678        $g axis bind $axis <Leave> \
    677             [itcl::code $this _axis hilite $axis off]
     679            [itcl::code $this Axis hilite $axis off]
    678680        $g axis bind $axis <ButtonPress-1> \
    679             [itcl::code $this _axis click $axis %x %y]
     681            [itcl::code $this Axis click $axis %x %y]
    680682        $g axis bind $axis <B1-Motion> \
    681             [itcl::code $this _axis drag $axis %x %y]
     683            [itcl::code $this Axis drag $axis %x %y]
    682684        $g axis bind $axis <ButtonRelease-1> \
    683             [itcl::code $this _axis release $axis %x %y]
     685            [itcl::code $this Axis release $axis %x %y]
    684686        $g axis bind $axis <KeyPress> \
    685687            [list ::Rappture::Tooltip::tooltip cancel]
     
    693695    foreach dataobj $_dlist {
    694696        set label [$dataobj hints label]
    695         foreach {mapx mapy} [_getAxes $dataobj] break
     697        foreach {mapx mapy} [GetAxes $dataobj] break
    696698        foreach comp [$dataobj components] {
    697699            set xv [$dataobj mesh $comp]
     
    766768            set id [$g marker create line -coords [list $at $ymin $at $ymax]]
    767769            $g marker bind $id <Enter> \
    768                 [itcl::code $this _enterMarker $g x-$label $at $ymin $at]
     770                [itcl::code $this EnterMarker $g x-$label $at $ymin $at]
    769771            $g marker bind $id <Leave> \
    770                 [itcl::code $this _leaveMarker $g x-$label]
    771             set options [_getLineMarkerOptions $style]
     772                [itcl::code $this LeaveMarker $g x-$label]
     773            set options [GetLineMarkerOptions $style]
    772774            if { $options != "" } {
    773775                eval $g marker configure $id $options
     
    776778                set id [$g marker create text -anchor nw \
    777779                            -text $label -coords [list $at $ymax]]
    778                 set options [_getTextMarkerOptions $style]
     780                set options [GetTextMarkerOptions $style]
    779781                if { $options != "" } {
    780782                    eval $g marker configure $id $options
     
    786788            set id [$g marker create line -coords [list $xmin $at $xmax $at]]
    787789            $g marker bind $id <Enter> \
    788                 [itcl::code $this _enterMarker $g y-$label $at $xmin $at]
     790                [itcl::code $this EnterMarker $g y-$label $at $xmin $at]
    789791            $g marker bind $id <Leave> \
    790                 [itcl::code $this _leaveMarker $g y-$label]
    791             set options [_getLineMarkerOptions $style]
     792                [itcl::code $this LeaveMarker $g y-$label]
     793            set options [GetLineMarkerOptions $style]
    792794            if { $options != "" } {
    793795                eval $g marker configure $id $options
     
    796798                set id [$g marker create text -anchor se \
    797799                        -text $label -coords [list $xmax $at]]
    798                 set options [_getTextMarkerOptions $style]
     800                set options [GetTextMarkerOptions $style]
    799801                if { $options != "" } {
    800802                    eval $g marker configure $id $options
     
    814816
    815817# ----------------------------------------------------------------------
    816 # USAGE: _resetLimits
     818# USAGE: ResetLimits
    817819#
    818820# Used internally to apply automatic limits to the axes for the
    819821# current plot.
    820822# ----------------------------------------------------------------------
    821 itcl::body Rappture::HistogramResult::_resetLimits {} {
     823itcl::body Rappture::HistogramResult::ResetLimits {} {
    822824    set g $itk_component(plot)
    823825    #
     
    888890
    889891# ----------------------------------------------------------------------
    890 # USAGE: _zoom reset
     892# USAGE: Zoom reset
    891893#
    892894# Called automatically when the user clicks on one of the zoom
    893895# controls for this widget.  Changes the zoom for the current view.
    894896# ----------------------------------------------------------------------
    895 itcl::body Rappture::HistogramResult::_zoom {option args} {
     897itcl::body Rappture::HistogramResult::Zoom {option args} {
    896898    switch -- $option {
    897899        reset {
    898             _resetLimits
    899         }
    900     }
    901 }
    902 
    903 # ----------------------------------------------------------------------
    904 # USAGE: _hilite <state> <x> <y>
     900            ResetLimits
     901        }
     902    }
     903}
     904
     905# ----------------------------------------------------------------------
     906# USAGE: Hilite <state> <x> <y>
    905907#
    906908# Called automatically when the user brushes one of the elements
     
    908910# pop up with element info.
    909911# ----------------------------------------------------------------------
    910 itcl::body Rappture::HistogramResult::_hilite {state x y} {
     912itcl::body Rappture::HistogramResult::Hilite {state x y} {
    911913    set g $itk_component(plot)
    912914    set elem ""
     
    930932            set mapy [$g element cget $elem -mapy]
    931933            if {[info exists _elem2dataobj($elem)]} {
    932                 foreach {mapx mapy} [_getAxes $_elem2dataobj($elem)] break
     934                foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
    933935            }
    934936
     
    952954                }
    953955                set tip [$g element cget $elem -label]
    954                 set yval [_axis format y dummy $info(y)]
     956                set yval [Axis format y dummy $info(y)]
    955957                append tip "\n$yval$yunits"
    956                 set xval [_axis format x dummy $info(x)]
     958                set xval [Axis format x dummy $info(x)]
    957959                append tip " @ $xval$xunits"
    958960                set tip [string trim $tip]
     
    972974                set mapy [$g element cget $elem -mapy]
    973975                if {[info exists _elem2dataobj($elem)]} {
    974                     foreach {mapx mapy} [_getAxes $_elem2dataobj($elem)] break
     976                    foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
    975977                }
    976978               
     
    988990                }
    989991                set tip [$g element cget $elem -label]
    990                 set yval [_axis format y dummy $info(y)]
     992                set yval [Axis format y dummy $info(y)]
    991993                append tip "\n$yval$yunits"
    992                 set xval [_axis format x dummy $info(x)]
     994                set xval [Axis format x dummy $info(x)]
    993995                append tip " @ $xval$xunits"
    994996                set tip [string trim $tip]
     
    10181020        set mapy [$g element cget $elem -mapy]
    10191021        if {[info exists _elem2dataobj($elem)]} {
    1020             foreach {mapx mapy} [_getAxes $_elem2dataobj($elem)] break
     1022            foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
    10211023        }
    10221024        set allx [$g x2axis use]
     
    11201122
    11211123# ----------------------------------------------------------------------
    1122 # USAGE: _axis hilite <axis> <state>
     1124# USAGE: Axis hilite <axis> <state>
    11231125#
    1124 # USAGE: _axis click <axis> <x> <y>
    1125 # USAGE: _axis drag <axis> <x> <y>
    1126 # USAGE: _axis release <axis> <x> <y>
     1126# USAGE: Axis click <axis> <x> <y>
     1127# USAGE: Axis drag <axis> <x> <y>
     1128# USAGE: Axis release <axis> <x> <y>
    11271129#
    1128 # USAGE: _axis edit <axis>
    1129 # USAGE: _axis changed <axis> <what>
    1130 # USAGE: _axis format <axis> <widget> <value>
    1131 # USAGE: _axis scale <axis> linear|log
     1130# USAGE: Axis edit <axis>
     1131# USAGE: Axis changed <axis> <what>
     1132# USAGE: Axis format <axis> <widget> <value>
     1133# USAGE: Axis scale <axis> linear|log
    11321134#
    11331135# Used internally to handle editing of the x/y axes.  The hilite
     
    11361138# changes from the panel.
    11371139# ----------------------------------------------------------------------
    1138 itcl::body Rappture::HistogramResult::_axis {option args} {
     1140itcl::body Rappture::HistogramResult::Axis {option args} {
    11391141    set inner [$itk_component(hull).axes component inner]
    11401142
     
    11421144        hilite {
    11431145            if {[llength $args] != 2} {
    1144                 error "wrong # args: should be \"_axis hilite axis state\""
     1146                error "wrong # args: should be \"Axis hilite axis state\""
    11451147            }
    11461148            set g $itk_component(plot)
     
    11621164        click {
    11631165            if {[llength $args] != 3} {
    1164                 error "wrong # args: should be \"_axis click axis x y\""
     1166                error "wrong # args: should be \"Axis click axis x y\""
    11651167            }
    11661168            set axis [lindex $args 0]
     
    11791181        drag {
    11801182            if {[llength $args] != 3} {
    1181                 error "wrong # args: should be \"_axis drag axis x y\""
     1183                error "wrong # args: should be \"Axis drag axis x y\""
    11821184            }
    11831185            if {![info exists _axis(moved)]} {
     
    12371239        release {
    12381240            if {[llength $args] != 3} {
    1239                 error "wrong # args: should be \"_axis release axis x y\""
     1241                error "wrong # args: should be \"Axis release axis x y\""
    12401242            }
    12411243            if {![info exists _axis(moved)]} {
     
    12511253                set dy [expr {abs($y-$_axis(click-y))}]
    12521254                if {$dx < 2 && $dy < 2} {
    1253                     _axis edit $axis
     1255                    Axis edit $axis
    12541256                }
    12551257            } else {
    12561258                # one last movement
    1257                 _axis drag $axis $x $y
     1259                Axis drag $axis $x $y
    12581260            }
    12591261            catch {unset _axis}
     
    12611263        edit {
    12621264            if {[llength $args] != 1} {
    1263                 error "wrong # args: should be \"_axis edit axis\""
     1265                error "wrong # args: should be \"Axis edit axis\""
    12641266            }
    12651267            set axis [lindex $args 0]
     
    12681270            # apply last value when deactivating
    12691271            $itk_component(hull).axes configure -deactivatecommand \
    1270                 [itcl::code $this _axis changed $axis focus]
     1272                [itcl::code $this Axis changed $axis focus]
    12711273
    12721274            # fix axis label controls...
     
    12751277            $inner.label insert end $label
    12761278            bind $inner.label <KeyPress-Return> \
    1277                 [itcl::code $this _axis changed $axis label]
     1279                [itcl::code $this Axis changed $axis label]
    12781280            bind $inner.label <FocusOut> \
    1279                 [itcl::code $this _axis changed $axis label]
     1281                [itcl::code $this Axis changed $axis label]
    12801282
    12811283            # fix min/max controls...
     
    12841286            $inner.min insert end $min
    12851287            bind $inner.min <KeyPress-Return> \
    1286                 [itcl::code $this _axis changed $axis min]
     1288                [itcl::code $this Axis changed $axis min]
    12871289            bind $inner.min <FocusOut> \
    1288                 [itcl::code $this _axis changed $axis min]
     1290                [itcl::code $this Axis changed $axis min]
    12891291
    12901292            $inner.max delete 0 end
    12911293            $inner.max insert end $max
    12921294            bind $inner.max <KeyPress-Return> \
    1293                 [itcl::code $this _axis changed $axis max]
     1295                [itcl::code $this Axis changed $axis max]
    12941296            bind $inner.max <FocusOut> \
    1295                 [itcl::code $this _axis changed $axis max]
     1297                [itcl::code $this Axis changed $axis max]
    12961298
    12971299            # fix format control...
     
    13021304
    13031305            bind $inner.format <<Value>> \
    1304                 [itcl::code $this _axis changed $axis format]
     1306                [itcl::code $this Axis changed $axis format]
    13051307
    13061308            # fix scale control...
     
    13131315            }
    13141316            $inner.scales.linear configure \
    1315                 -command [itcl::code $this _axis changed $axis scale]
     1317                -command [itcl::code $this Axis changed $axis scale]
    13161318            $inner.scales.log configure \
    1317                 -command [itcl::code $this _axis changed $axis scale]
     1319                -command [itcl::code $this Axis changed $axis scale]
    13181320
    13191321            #
     
    13581360        changed {
    13591361            if {[llength $args] != 2} {
    1360                 error "wrong # args: should be \"_axis changed axis what\""
     1362                error "wrong # args: should be \"Axis changed axis what\""
    13611363            }
    13621364            set axis [lindex $args 0]
     
    14271429                }
    14281430                scale {
    1429                     _axis scale $axis $_axisPopup(scale)
     1431                    Axis scale $axis $_axisPopup(scale)
    14301432
    14311433                    if {$_axisPopup(scale) == "log"} {
     
    14481450        format {
    14491451            if {[llength $args] != 3} {
    1450                 error "wrong # args: should be \"_axis format axis widget value\""
     1452                error "wrong # args: should be \"Axis format axis widget value\""
    14511453            }
    14521454            set axis [lindex $args 0]
     
    14621464        scale {
    14631465            if {[llength $args] != 2} {
    1464                 error "wrong # args: should be \"_axis scale axis type\""
     1466                error "wrong # args: should be \"Axis scale axis type\""
    14651467            }
    14661468            set axis [lindex $args 0]
     
    14751477                # use special formatting for linear mode
    14761478                $itk_component(plot) axis configure $axis -command \
    1477                     [itcl::code $this _axis format $axis]
     1479                    [itcl::code $this Axis format $axis]
    14781480            }
    14791481        }
     
    14851487
    14861488# ----------------------------------------------------------------------
    1487 # USAGE: _getLineMarkerOptions <style>
     1489# USAGE: GetLineMarkerOptions <style>
    14881490#
    14891491# Used internally to create a list of configuration options specific to the
     
    14911493# are not recognized are ignored.
    14921494# ----------------------------------------------------------------------
    1493 itcl::body Rappture::HistogramResult::_getLineMarkerOptions {style} {
     1495itcl::body Rappture::HistogramResult::GetLineMarkerOptions {style} {
    14941496    array set lineOptions {
    14951497        "-color"  "-outline"
     
    15081510
    15091511# ----------------------------------------------------------------------
    1510 # USAGE: _getTextMarkerOptions <style>
     1512# USAGE: GetTextMarkerOptions <style>
    15111513#
    15121514# Used internally to create a list of configuration options specific to the
     
    15141516# are not recognized are ignored.
    15151517# ----------------------------------------------------------------------
    1516 itcl::body Rappture::HistogramResult::_getTextMarkerOptions {style} {
     1518itcl::body Rappture::HistogramResult::GetTextMarkerOptions {style} {
    15171519    array set textOptions {
    15181520        "-color"  "-outline"
     
    15341536
    15351537# ----------------------------------------------------------------------
    1536 # USAGE: _getAxes <dataobj>
     1538# USAGE: GetAxes <dataobj>
    15371539#
    15381540# Used internally to figure out the axes used to plot the given
     
    15401542# x-axis name (x, x2, x3, etc.), and y is the y-axis name.
    15411543# ----------------------------------------------------------------------
    1542 itcl::body Rappture::HistogramResult::_getAxes {dataobj} {
     1544itcl::body Rappture::HistogramResult::GetAxes {dataobj} {
    15431545    # rebuild if needed, so we know about the axes
    15441546    if {[$_dispatcher ispending !rebuild]} {
     
    15961598}
    15971599
    1598 itcl::body Rappture::HistogramResult::_enterMarker { g name x y text } {
    1599     _leaveMarker $g $name
     1600itcl::body Rappture::HistogramResult::EnterMarker { g name x y text } {
     1601    LeaveMarker $g $name
    16001602    set id [$g marker create text \
    16011603                -coords [list $x $y] \
     
    16051607}
    16061608
    1607 itcl::body Rappture::HistogramResult::_leaveMarker { g name } {
     1609itcl::body Rappture::HistogramResult::LeaveMarker { g name } {
    16081610    if { [info exists _markers($name)] } {
    16091611        set id $_markers($name)
  • branches/blt4/gui/scripts/pager.tcl

    r2327 r2409  
    563563            set num 1
    564564            foreach name $_pages {
    565                 set ht [expr {[font metrics $fnt -linespace]+2}]
     565                set ht [expr {[font metrics $fnt -linespace]+8}]
    566566                if 1 {
    567                     set img [image create picture -width $ht -height $ht]
    568                     $img draw text $num [expr $ht/2] [expr $ht/2] -color \
    569                          -fill $itk_option(-dimcrumbcolor) -antialias 1
    570                     set id [$c create image $x $y -image $img \
    571                     -outline "" -tags $name]
     567                    set w [expr $ht|0x1]
     568                    set h [expr $ht|0x1]
     569                    set r [expr ($ht-4)/2]
     570                    set img [image create picture -width $w -height $h]
     571                    $img blank [$c cget -bg]
     572                    $img draw circle [expr $w/2] [expr $h/2] $r \
     573                         -color lightgreen -antialiased 1 -shadow 1
     574                    $img draw text $num [expr $w/2+1] [expr $h/2] \
     575                         -color white -anchor c -font "Arial 8 bold"
     576                    set id [$c create image [expr $x+4] $y -image $img -tags $name]
    572577                } else {
    573578                set id [$c create oval $x [expr {$y-$ht/2}] \
     
    610615            # make all crumbs dim
    611616            foreach name $_pages {
     617                if 0 {
    612618                $c itemconfigure $name \
    613619                    -fill $itk_option(-dimcrumbcolor)
    614620                $c itemconfigure $name-num \
    615621                    -fill $itk_option(-crumbnumbercolor)
    616             }
    617 
     622                }
     623            }
    618624            # make all the current crumb bright
    619625            if {$_current != ""} {
     626                if 0 {
    620627                $c itemconfigure $_current \
    621628                    -fill $itk_option(-crumbcolor)
    622629                $c itemconfigure $_current-num \
    623630                    -fill $itk_option(-crumbnumbercolor)
    624 
     631                }
    625632                # scroll the view to see the crumb
    626633                if {[$c bbox $_current] != ""} {
  • branches/blt4/packages/vizservers/Makefile.in

    r2201 r2409  
    4848        done
    4949        $(INSTALL) -m 0555 start_viz.sh $(bindir)/start_viz.sh
     50        $(INSTALL) -m 0555 start_nanoscale.sh $(bindir)/start_nanoscale.sh
    5051
    5152clean:
     
    5859          $(MAKE) -C $$i distclean ; \
    5960        done
    60         rm -f Makefile start_viz.sh *~
     61        $(RM) -r Makefile config.cache config.log config.status start_viz.sh start_nanoscale.sh *~ autom4te.cache
  • branches/blt4/packages/vizservers/configure

    r2201 r2409  
    85898589CPPFLAGS=$save_CPPFLAGS
    85908590
    8591  if test "${CG_DIR}" = "/usr" ; then
     8591if test "${CG_DIR}" = "/usr" ; then
    85928592  CG_DIR=""
    85938593else
     
    86278627
    86288628
    8629 ac_config_files="$ac_config_files Makefile nanoscale/Makefile nanovis/Makefile nanovis/newmat11/Makefile nanovis/R2/src/Makefile nanovis/vrutil/Makefile nanovis/vrmath/Makefile nanovis/vr3d/Makefile nanovis/imgLoaders/Makefile nanovis/transfer-function/Makefile pymolproxy/Makefile vtkvis/Doxyfile vtkvis/Makefile start_viz.sh"
     8629ac_config_files="$ac_config_files Makefile nanoscale/Makefile nanoscale/renderservers.tcl nanovis/Makefile nanovis/newmat11/Makefile nanovis/R2/src/Makefile nanovis/vrutil/Makefile nanovis/vrmath/Makefile nanovis/vr3d/Makefile nanovis/imgLoaders/Makefile nanovis/transfer-function/Makefile pymolproxy/Makefile vtkvis/Doxyfile vtkvis/Makefile start_viz.sh start_nanoscale.sh"
    86308630
    86318631cat >confcache <<\_ACEOF
     
    93379337    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
    93389338    "nanoscale/Makefile") CONFIG_FILES="$CONFIG_FILES nanoscale/Makefile" ;;
     9339    "nanoscale/renderservers.tcl") CONFIG_FILES="$CONFIG_FILES nanoscale/renderservers.tcl" ;;
    93399340    "nanovis/Makefile") CONFIG_FILES="$CONFIG_FILES nanovis/Makefile" ;;
    93409341    "nanovis/newmat11/Makefile") CONFIG_FILES="$CONFIG_FILES nanovis/newmat11/Makefile" ;;
     
    93499350    "vtkvis/Makefile") CONFIG_FILES="$CONFIG_FILES vtkvis/Makefile" ;;
    93509351    "start_viz.sh") CONFIG_FILES="$CONFIG_FILES start_viz.sh" ;;
     9352    "start_nanoscale.sh") CONFIG_FILES="$CONFIG_FILES start_nanoscale.sh" ;;
    93519353
    93529354  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
     
    99419943fi
    99429944
    9943 
  • branches/blt4/packages/vizservers/configure.in

    r2201 r2409  
    317317CPPFLAGS=$save_CPPFLAGS
    318318
    319  if test "${CG_DIR}" = "/usr" ; then
     319if test "${CG_DIR}" = "/usr" ; then
    320320  CG_DIR=""
    321321else
     
    356356
    357357AC_OUTPUT([
    358   Makefile \
     358   Makefile \
    359359   nanoscale/Makefile \
     360   nanoscale/renderservers.tcl \
    360361   nanovis/Makefile \
    361362   nanovis/newmat11/Makefile \
     
    369370   vtkvis/Doxyfile \
    370371   vtkvis/Makefile \
    371    start_viz.sh])
    372  
     372   start_viz.sh \
     373   start_nanoscale.sh])
  • branches/blt4/packages/vizservers/nanoscale/Makefile.in

    r1029 r2409  
    1 TARGETS         = client mycat nanoscale
    21
    32CC              = @CC@
    43CFLAGS          = @CFLAGS@
    54EXTRA_CFLAGS    = -Wall
    6 DEFINES         = @DEFINES@
    7 CC_SWITCHES     = $(CFLAGS) $(EXTRA_CFLAGS) $(INCLUDES)
     5CC_SWITCHES     = $(CFLAGS) $(EXTRA_CFLAGS) $(INCLUDES) $(DEFINES)
    86LDFLAGS         = @LDFLAGS@
    97
     
    2119
    2220INSTALL         = @INSTALL@
    23 INSTALL_PROGRAM = ${INSTALL} -m 555
    24 INSTALL_DATA    = ${INSTALL} -m 444
    25 INSTALL_SCRIPT  = ${INSTALL} -m 444
     21INSTALL_PROGRAM = ${INSTALL} -m 0555
     22INSTALL_DATA    = ${INSTALL} -m 0444
     23INSTALL_SCRIPT  = ${INSTALL} -m 0444
     24RM              = rm -f
    2625
    27 SERVER_OBJS     = server.o
     26SERVER_OBJS     = server2.o
    2827CLIENT_OBJS     = client.o clientlib.o
    2928
     29TCL_LIB_SPEC    = @TCL_LIB_SPEC@
     30TCL_INC_SPEC    = @TCL_INC_SPEC@
     31LD_RUN_PATH     = $(libdir)
     32
     33DEFINES         = -DSERVERSFILE=\"$(libdir)/renderservers.tcl\"
     34INCLUDES        = $(TCL_INC_SPEC)
     35LIBS            = $(TCL_LIB_SPEC) \
     36                -Wl,-rpath,$(LD_RUN_PATH)
     37
    3038.PHONY: all install clean distclean
     39
     40TARGETS         = nanoscale
    3141
    3242all: $(TARGETS)
     
    3545        $(CC) $(CC_SWITCHES) -o $@ $^ $(LIBS)
    3646
    37 install: nanoscale
     47install: nanoscale renderservers.tcl
    3848        $(INSTALL_PROGRAM) -D nanoscale $(bindir)/nanoscale
     49        $(INSTALL_SCRIPT) renderservers.tcl $(libdir)
    3950
    4051client: $(CLIENT_OBJS)
     
    4455
    4556clean:
    46         rm -rf a.out $(SERVER_OBJS) *~ core* $(TARGETS) *.log *.tmp logfile* .deps/*.d
     57        $(RM) -r a.out $(SERVER_OBJS) *~ core* $(TARGETS) *.log *.tmp logfile* .deps/*.d
    4758
    4859distclean: clean
    49         rm Makefile
     60        $(RM) Makefile config.h renderservers.tcl
    5061
  • branches/blt4/packages/vizservers/nanoscale/server2.c

    r2341 r2409  
    11
    22#include <stdio.h>
     3#include <string.h>
     4#include <errno.h>
     5#include <arpa/inet.h>
     6#include <getopt.h>
     7#include <stdarg.h>
     8#include <stdlib.h>
     9#include <sys/wait.h>
     10#include <sys/stat.h>
     11#include <sys/file.h>
     12#include <syslog.h>
    313#include <unistd.h>
    4 #include <stdlib.h>
    5 #include <signal.h>
    6 #include <sys/types.h>
    7 #include <sys/socket.h>
    8 #include <sys/wait.h>
    9 #include <sys/select.h>
    10 #include <sys/time.h>
    11 #include <arpa/inet.h>
    12 #include <fcntl.h>
    13 #include <netinet/in.h>
    14 #include <getopt.h>
    15 #include <errno.h>
    16 #include <syslog.h>
    17 #include <stdarg.h>
     14
    1815#include <tcl.h>
    1916
    2017#define TRUE    1
    2118#define FALSE   0
    22 #define DEF_SERVERS  "/opt/hubzero/rappture/render/lib/servers.cf"
     19
     20#ifndef SERVERSFILE
     21#define SERVERSFILE  "/opt/hubzero/rappture/render/lib/renderservers.tcl"
     22#endif
    2323
    2424#define ERROR(...)      LogMessage(LOG_ERR, __FILE__, __LINE__, __VA_ARGS__)
    25 #ifdef WANT_TRACE
    2625#define TRACE(...)      LogMessage(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
    27 #else
    28 #define TRACE(...)
    29 #endif
    3026#define WARN(...)       LogMessage(LOG_WARNING, __FILE__, __LINE__, __VA_ARGS__)
    3127#define INFO(...)       LogMessage(LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
    3228
     29static const char *syslogLevels[] = {
     30    "emergency",                        /* System is unusable */
     31    "alert",                            /* Action must be taken immediately */
     32    "critical",                         /* Critical conditions */
     33    "error",                            /* Error conditions */
     34    "warning",                          /* Warning conditions */
     35    "notice",                           /* Normal but significant condition */
     36    "info",                             /* Informational */
     37    "debug",                            /* Debug-level messages */
     38};
     39
     40/* RenderServer --
     41 *
     42 *      Contains information to describe/execute a render server.
     43 */
    3344typedef struct {
    3445    const char *name;                   /* Name of server. */
    3546    int port;                           /* Port to listen to. */
    36     int argc;                           /* # of args in command.  */
    37     char **argv;                        /* Command to execute for server. */
    38     int listenerFd;                     /* Descriptor the of listener socket. */
     47    int numCmdArgs;                     /* # of args in command.  */
     48    int numEnvArgs;                     /* # of args in environment.  */
     49    char *const *cmdArgs;               /* Command to execute for server. */
     50    char *const *envArgs;               /* Environment strings to set. */
     51    int listenerFd;                     /* Descriptor of the listener socket. */
    3952} RenderServer;
    4053
    41 static Tcl_HashTable serverTable;
    42 static int debugFlag = FALSE;
     54static Tcl_HashTable serverTable;       /* Table of render servers
     55                                         * representing services available to
     56                                         * clients.  A new instances is forked
     57                                         * and executed each time a new
     58                                         * request is accepted. */
     59static int debug = FALSE;
     60static pid_t serverPid;
    4361
    4462void
     
    5876        s++;
    5977    }
    60     length = snprintf(message, MSG_LEN, "line %d of \"%s\": ", lineNum, s);
     78    length = snprintf(message, MSG_LEN, "nanoscale (%d %d) %s: %s:%d ",
     79                      serverPid, getpid(), syslogLevels[priority],  s, lineNum);
    6180    length += vsnprintf(message + length, MSG_LEN - length, fmt, lst);
    6281    message[MSG_LEN] = '\0';
    63     if (debugFlag) {
     82    if (debug) {
    6483        fprintf(stderr, "%s\n", message);
    6584    } else {
     
    7695}
    7796
     97/*
     98 * RegisterServerCmd --
     99 *
     100 *      Registers a render server to be run when a client connects
     101 *      on the designated port. The form of the commands is
     102 *
     103 *          register_server <name> <port> <cmd> <environ>
     104 *
     105 *      where
     106 *
     107 *          name        Token for the render server.
     108 *          port        Port to listen to accept connections.
     109 *          cmd         Command to be run to start the render server.
     110 *          environ     Name-value pairs of representing environment
     111 *                      variables.
     112 *
     113 *      Note that "cmd" and "environ" are variable and backslash
     114 *      substituted.  A listener socket automatically is established on
     115 *      the given port to accept client requests. 
     116 *     
     117 *      Example:
     118 *
     119 *          register_server myServer 12345 {
     120 *               /path/to/myserver arg arg
     121 *          } {
     122 *               LD_LIBRARY_PATH $libdir/myServer
     123 *          }
     124 *
     125 */
    78126static int
    79127RegisterServerCmd(ClientData clientData, Tcl_Interp *interp, int objc,
     
    85133    int f;
    86134    int port;
     135    int numCmdArgs, numEnvArgs;
     136    char *const *cmdArgs;
     137    char *const *envArgs;
    87138    struct sockaddr_in addr;
    88139    RenderServer *serverPtr;
    89140    Tcl_HashEntry *hPtr;
    90141
    91     if (objc != 4) {
    92         Tcl_AppendResult("wrong # args: should be \"", Tcl_GetString(objv[0]),
    93                          " serverName port cmd", (char *)NULL);
     142    if ((objc < 4) || (objc > 5)) {
     143        Tcl_AppendResult(interp, "wrong # args: should be \"",
     144                Tcl_GetString(objv[0]), " serverName port cmd ?environ?",
     145                (char *)NULL);
    94146        return TCL_ERROR;
    95147    }
    96148    serverName = Tcl_GetString(objv[1]);
    97     if (Tcl_GetInt(interp, objv[2], &port) != TCL_OK) {
    98         return TCL_ERROR;
    99     }
    100     hPtr = Tcl_CreateHashEntry(&serverTable, (char *)port, &isNew);
     149    if (Tcl_GetIntFromObj(interp, objv[2], &port) != TCL_OK) {
     150        return TCL_ERROR;
     151    }
     152    hPtr = Tcl_CreateHashEntry(&serverTable, (char *)((long)port), &isNew);
    101153    if (!isNew) {
    102         Tcl_AppendResult("a server is already listening on port ",
     154        Tcl_AppendResult(interp, "a server is already listening on port ",
    103155                Tcl_GetString(objv[2]), (char *)NULL);
    104156        return TCL_ERROR;
     
    106158    objPtr = Tcl_SubstObj(interp, objv[3],
    107159                          TCL_SUBST_VARIABLES | TCL_SUBST_BACKSLASHES);
    108     if (Tcl_SplitList(interp, Tcl_GetString(objPtr), &argc, &argv) != TCL_OK) {
     160    if (Tcl_SplitList(interp, Tcl_GetString(objPtr), &numCmdArgs,
     161        (const char ***)&cmdArgs) != TCL_OK) {
    109162        return TCL_ERROR;
    110163    }
     
    118171    }
    119172 
    120     /* If program is killed, drop the socket address reservation
    121      * immediately. */
     173    /* If the render server instance should be killed, drop the socket address
     174     * reservation immediately, don't linger. */
    122175    bool = TRUE;
    123     status = setsockopt(f, SOL_SOCKET, SO_REUSEADDR, &bool, sizeof(bool));
    124     if (status < 0) {
     176    if (setsockopt(f, SOL_SOCKET, SO_REUSEADDR, &bool, sizeof(bool)) < 0) {
    125177        Tcl_AppendResult(interp, "can't create set socket option for \"",
    126178                serverName, "\": ", Tcl_PosixError(interp), (char *)NULL);
     
    132184    addr.sin_port = htons(port);
    133185    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    134     status = bind(f, (struct sockaddr *)&addr, sizeof(addr));
    135     if (status < 0) {
     186    if (bind(f, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
    136187        Tcl_AppendResult(interp, "can't bind to socket for \"",
    137188                serverName, "\": ", Tcl_PosixError(interp), (char *)NULL);
     
    139190    }
    140191    /* Listen on the specified port. */
    141     status = listen(f, 5);
    142     if (status < 0) {
     192    if (listen(f, 5) < 0) {
    143193        Tcl_AppendResult(interp, "can't listen to socket for \"",
    144194                serverName, "\": ", Tcl_PosixError(interp), (char *)NULL);
    145195        return TCL_ERROR;
    146196    }
     197    numEnvArgs = 0;
     198    envArgs = NULL;
     199    if (objc == 5) {
     200        objPtr = Tcl_SubstObj(interp, objv[4],
     201                TCL_SUBST_VARIABLES | TCL_SUBST_BACKSLASHES);
     202        if (Tcl_SplitList(interp, Tcl_GetString(objPtr), &numEnvArgs,
     203                (const char ***)&envArgs) != TCL_OK) {
     204            return TCL_ERROR;
     205        }
     206        if (numEnvArgs & 0x1) {
     207            Tcl_AppendResult(interp, "odd # elements in enviroment list",
     208                             (char *)NULL);
     209            return TCL_ERROR;
     210        }
     211    }
    147212    serverPtr = malloc(sizeof(RenderServer));
     213    memset(serverPtr, 0, sizeof(RenderServer));
    148214    if (serverPtr == NULL) {
    149215        Tcl_AppendResult(interp, "can't allocate structure for \"",
     
    152218    }
    153219    serverPtr->name = strdup(serverName);
    154     serverPtr->argv = argv;
    155     serverPtr->argc = argc;
     220    serverPtr->cmdArgs = cmdArgs;
     221    serverPtr->numCmdArgs = numCmdArgs;
    156222    serverPtr->listenerFd = f;
     223    serverPtr->envArgs = envArgs;
     224    serverPtr->numEnvArgs = numEnvArgs;
     225    Tcl_SetHashValue(hPtr, serverPtr);
    157226    return TCL_OK;
    158227}
     
    168237                         NULL);
    169238    if (Tcl_EvalFile(interp, fileName) != TCL_OK) {
    170         ERROR("can't add server: %s", Tcl_GetString(Tcl_GetObjResult(interp)));
     239        ERROR("Can't add server: %s", Tcl_GetString(Tcl_GetObjResult(interp)));
    171240        return FALSE;
    172241    }
     
    178247main(int argc, char **argv)
    179248{
    180     int status;
    181     struct sockaddr_in recvAddr;
    182     int serverFds[FD_SETSIZE], maxFd;
    183     int n;
    184     char displaySetting[200];
    185     int maxCards;
    186     int dispNum;
     249#ifdef SA_NOCLDWAIT
     250    struct sigaction action;
     251#endif
     252    fd_set serverFds;
     253    int maxFd;                          /* Highest file descriptor in use. */
     254    char display[200];                  /* String used to manage the X
     255                                         * DISPLAY variable for each render
     256                                         * server instance. */
     257    int maxCards;                       /* Maximum number of video cards, each
     258                                         * represented by a different X
     259                                         * screen.  */
     260    int screenNum;                      /* Current X screen number. */
    187261    Tcl_HashEntry *hPtr;
    188262    Tcl_HashSearch iter;
    189     const char *fileName;
    190 
    191     dispNum = 0;
     263    const char *fileName;               /* Path to servers file. */
     264 
     265    serverPid = getpid();
     266    screenNum = 0;
    192267    maxCards = 1;
    193     fileName = DEF_SERVERS;
    194     debugFlags = FALSE;
    195     strcpy(displaySetting, "DISPLAY=:0.0");
    196     if (putenv(displaySetting) < 0) {
    197         ERROR("can't set DISPLAY variable: ", strerror(errno));
    198         exit(1);
    199     }
     268    fileName = SERVERSFILE;
     269    debug = FALSE;
     270
     271    strcpy(display, ":0.0");
    200272    Tcl_InitHashTable(&serverTable, TCL_ONE_WORD_KEYS);
     273
     274    /* Process command line switches. */
    201275    while (1) {
    202276        int c;
     
    207281        };
    208282
    209         c = getopt_long(argc, argv, "+p:x:d", long_options, &option_index);
     283        c = getopt_long(argc, argv, "x:f:d", long_options, &option_index);
    210284        if (c == -1) {
    211285            break;
     
    216290            maxCards = strtoul(optarg, 0, 0);
    217291            if ((maxCards < 1) || (maxCards > 10)) {
    218                 fprintf(stderr, "bad number of max videocards specified\n");
     292                fprintf(stderr, "Bad number of max videocards specified\n");
    219293                return 1;
    220294            }
    221295            break;
    222296        case 'd':                       /* Debug  */
    223             debugFlag = TRUE;
     297            debug = TRUE;
    224298            break;
    225299
    226         case 'f':                       /* Server files */
     300        case 'f':                       /* Server file path. */
    227301            fileName = strdup(optarg);
    228302            break;
     
    235309    }
    236310
     311    if (!debug) {
     312        /* Detach this process from the controlling terminal process. The
     313         * current directory becomes /tmp and redirect stdin/stdout/stderr to
     314         * /dev/null. */
     315        if (daemon(0,0) < 0) {
     316            ERROR("Can't daemonize nanoscale: %s", strerror(errno));
     317            exit(1);
     318        }
     319    }
     320    serverPid = getpid();
    237321    if (!ParseServersFile(fileName)) {
    238322        exit(1);
     
    240324
    241325    if (serverTable.numEntries == 0) {
    242         ERROR("no servers designated.");
    243         exit(0);
    244     }
    245 
    246     if (!debugFlag) {
    247         if (daemon(0,1) < 0) {
    248             ERROR("can't daemonize nanoscale: ", strerror(errno));
    249             exit(1);
    250         }
    251     }
     326        ERROR("No servers designated.");
     327        exit(1);
     328    }
     329    signal(SIGPIPE, SIG_IGN);
     330#ifdef SA_NOCLDWAIT
     331    memset(&action, 0, sizeof(action));
     332    action.sa_flags = SA_NOCLDWAIT;
     333    sigaction(SIGCHLD, &action, 0);
     334#else
     335    signal(SIGCHLD, SIG_IGN);
     336#endif
    252337
    253338    /* Build the array of servers listener file descriptors. */
     
    257342         hPtr = Tcl_NextHashEntry(&iter)) {
    258343        RenderServer *serverPtr;
    259 
     344       
    260345        serverPtr = Tcl_GetHashValue(hPtr);
    261346        FD_SET(serverPtr->listenerFd, &serverFds);
     
    264349        }
    265350    }
    266     while (select(maxFd+1, serverFds, NULL, NULL, 0) > 0) {
    267 
     351
     352    for (;;) {
     353        fd_set readFds;
     354
     355        memcpy(&readFds, &serverFds, sizeof(serverFds));
     356        if (select(maxFd+1, &readFds, NULL, NULL, 0) <= 0) {
     357            ERROR("Select failed: %s", strerror(errno));
     358            break;                      /* Error on select. */
     359        }
    268360        for (hPtr = Tcl_FirstHashEntry(&serverTable, &iter); hPtr != NULL;
    269361             hPtr = Tcl_NextHashEntry(&iter)) {
    270362            RenderServer *serverPtr;
     363            pid_t child;
     364            int f;
     365            socklen_t length;
     366            struct sockaddr_in newaddr;
    271367
    272368            serverPtr = Tcl_GetHashValue(hPtr);
    273             if (FD_ISSET(serverPtr->listenerFd, &serverFds)) {
    274                 struct sockaddr_in newaddr;
    275                 unsigned int addrlen;
    276                 int f;
    277                 int child;
    278 
    279                 /* Accept the new connection. */
    280                 unsigned int addrlen = sizeof(newaddr);
    281                 f = accept(serverPtr->listenerFd, (struct sockaddr *)&newaddr,
    282                            sizeof(newaddr));
    283                 if (f < 0) {
    284                     ERROR("can't accept server \"", serverPtr->name,
    285                           "\": ", strerror(errno));
    286                     continue;
     369            if (!FD_ISSET(serverPtr->listenerFd, &readFds)) {
     370                continue;               
     371            }
     372            /* Rotate the display's screen number.  If we have multiple video
     373             * cards, try to spread the jobs out among them.  */
     374            screenNum++;
     375            if (screenNum >= maxCards) {
     376                screenNum = 0;
     377            }
     378            /* Accept the new connection. */
     379            length = sizeof(newaddr);
     380            f = accept(serverPtr->listenerFd, (struct sockaddr *)&newaddr,
     381                       &length);
     382            if (f < 0) {
     383                ERROR("Can't accept server \"%s\": %s", serverPtr->name,
     384                      strerror(errno));
     385                exit(1);
     386            }
     387            INFO("Connecting \"%s\" to %s\n", serverPtr->name,
     388                 inet_ntoa(newaddr.sin_addr));
     389
     390            /* Fork the new process.  Connect I/O to the new socket. */
     391            child = fork();
     392            if (child < 0) {
     393                ERROR("Can't fork \"%s\": %s", serverPtr->name,
     394                      strerror(errno));
     395                continue;
     396            }
     397            if (child == 0) {           /* Child process. */
     398                int i;
     399                int errFd;
     400               
     401                umask(0);
     402                if ((!debug) && (setsid() < 0)) {
     403                    ERROR("Can't setsid \"%s\": %s", serverPtr->name,
     404                          strerror(errno));
     405                    exit(1);
    287406                }
    288                 INFO("Connected to %s\n", inet_ntoa(newaddr.sin_addr));
    289 
    290                 dispNum++;
    291                 if (dispNum >= maxCards) {
    292                     dispNum = 0;
     407                if ((!debug) && ((chdir("/")) < 0)) {
     408                    ERROR("Can't change to root directory for \"%s\": %s",
     409                          serverPtr->name, strerror(errno));
     410                    exit(1);
    293411                }
    294                 /* Fork the new process.  Connect I/O to the new socket. */
    295                 child = fork();
    296                 if (child < 0) {
    297                     ERROR("can't fork \"", serverPtr->name, "\": ",
    298                         strerror(errno));
    299                     continue;
    300                 } else if (child == 0) {
    301                     int i;
    302 
    303                     /* Child process. */
    304                     if (!debugFlag) {
    305                         /* Disassociate server from */
    306                         status = daemon(0,1);
    307                         if (status < 0) {
    308                             ERROR("can't daemonize \"", serverPtr->name,
    309                                   "\": ", strerror(errno));
    310                         }
    311                     }                       
    312                     dup2(f, 0);         /* Stdin */
    313                     dup2(f, 1);         /* Stdout */
    314 
    315                     for(i = 3; i <= FD_SETSIZE; i++) {
    316                         close(i);       /* Close all the other descriptors. */
    317                     }
    318                     if (maxCards > 1) {
    319                         displaySetting[11] = dispNum + '0';
    320                     }
    321                     INFO("%s: client %s connecting to display %d", 
    322                         serverPtr->name, inet_ntoa(newaddr.sin_addr), dispNum);
    323                     status = execvp(serverPtr->argv[0], serverPtr->argv);
    324                     ERROR("can't execute \"", serverPtr->argv[0],
    325                           "\": ", strerror(errno));
    326                     _exit(1);
     412
     413                /* Dup the descriptors and start the server.  */
     414
     415                dup2(f, 0);             /* Stdin */
     416                dup2(f, 1);             /* Stdout */
     417                errFd = open("/dev/null", O_WRONLY, 0600);
     418                dup2(errFd, 2);         /* Stderr */
     419                for(i = 3; i <= FD_SETSIZE; i++) {
     420                    close(i);           /* Close all the other descriptors. */
    327421                }
    328                 _exit(EINVAL);
     422
     423                /* Set the screen number in the DISPLAY variable. */
     424                display[3] = screenNum + '0';
     425                setenv("DISPLAY", display, 0);
     426                /* Set the enviroment, if necessary. */
     427                for (i = 0; i < serverPtr->numEnvArgs; i += 2) {
     428                    setenv(serverPtr->envArgs[i], serverPtr->envArgs[i+1], 0);
     429                }
     430                INFO("Executing %s: client %s, %s on DISPLAY=%s",
     431                        serverPtr->name, inet_ntoa(newaddr.sin_addr),
     432                        serverPtr->cmdArgs[0], display);
     433                /* Replace the current process with the render server. */
     434                execvp(serverPtr->cmdArgs[0], serverPtr->cmdArgs);
     435                ERROR("Can't execute \"%s\": %s", serverPtr->cmdArgs[0],
     436                      strerror(errno));
     437                exit(1);
    329438            } else {
    330                 /* Reap initial child which will exit immediately
    331                  * (grandchild continues) */
    332                 waitpid(status, NULL, 0);
     439                close(f);
    333440            }
    334441        }
    335     }
    336     ERROR("select failed: ", strerror(errno));
     442    }
    337443    exit(1);
    338444}
    339 
  • branches/blt4/packages/vizservers/nanovis/Command.cpp

    r2307 r2409  
    11341134{
    11351135    TRACE("Data Loading\n");
    1136     fflush(stdout);
    11371136
    11381137    int nbytes;
     
    12061205    } else if ((nBytes > 5) && (strncmp(bytes, "<FET>", 5) == 0)) {
    12071206        TRACE("FET loading...\n");
    1208         fflush(stdout);
    12091207        std::stringstream fdata;
    12101208        fdata.write(nBytes - 5, bytes + 5);
     
    12181216    } else if ((nBytes > 5) && (strncmp(bytes, "<ODX>", 5) == 0)) {
    12191217        TRACE("Loading DX using OpenDX library...\n");
    1220         fflush(stdout);
    12211218        Rappture::Outcome context;
    12221219        volPtr = load_volume_stream_odx(context, tag, bytes + 5, nBytes -5);
     
    12271224    } else {
    12281225        TRACE("OpenDX loading...\n");
    1229         fflush(stdout);
    12301226        std::stringstream fdata;
    12311227        fdata.write(bytes, nBytes);
     
    12721268                volPtr->wAxis.min(), volPtr->wAxis.max(),
    12731269                Volume::valueMin, Volume::valueMax);
    1274         nWritten  = write(0, info, strlen(info));
     1270        nWritten  = write(1, info, strlen(info));
    12751271        assert(nWritten == (ssize_t)strlen(info));
    12761272    }
  • branches/blt4/packages/vizservers/nanovis/DataLoader.cpp

    r2120 r2409  
    44#include <stdlib.h>
    55#include <math.h>
     6#include <Trace.h>
    67
    78inline void endian_swap(unsigned int& x)
     
    3536        if (path.size() == 0)
    3637        {
    37                 printf("file not found[%s]\n", path.c_str());
    38                 return NULL;
     38            ERROR("file not found[%s]\n", path.c_str());
     39            return NULL;
    3940        }
    4041
     
    4243        if (fp == NULL)
    4344        {
    44                 printf("ERROR :file not found %s\n", path.c_str());
    45                 return NULL;
     45            ERROR("file not found %s\n", path.c_str());
     46            return NULL;
    4647        }
    4748
     
    173174        if (path.size() == 0)
    174175        {
    175                 printf("file not found[%s]\n", path.c_str());
    176                 return NULL;
     176            ERROR("file not found[%s]\n", path.c_str());
     177            return NULL;
    177178        }
    178179
     
    180181        if (fp == NULL)
    181182        {
    182                 printf("ERROR :file not found %s\n", path.c_str());
    183                 return NULL;
     183            ERROR("file not found %s\n", path.c_str());
     184            return NULL;
    184185        }
    185186
     
    243244                                if (length > max)
    244245                                {
    245                                         //printf("max %lf %lf %fl\n", x, y, z);
     246                                        //TRACE("max %lf %lf %fl\n", x, y, z);
    246247                                        max = length;
    247248                                }
     
    262263        fclose(fp);
    263264
    264         printf("width %d, height %d, depth %d, min %f, max %f, scaleX %f, scaleY %f, scaleZ %f\n",
     265        TRACE("width %d, height %d, depth %d, min %f, max %f, scaleX %f, scaleY %f, scaleZ %f\n",
    265266                width, height, depth, min, max, axisScaleX, axisScaleY, axisScaleZ);
    266267        return data;
     
    273274        if (fname == 0)
    274275        {
    275                 printf("file name is null\n");
    276                 return NULL;
     276            ERROR("file name is null\n");
     277            return NULL;
    277278        }
    278279
     
    280281        if (fp == NULL)
    281282        {
    282                 printf("ERROR :file not found %s\n", fname);
    283                 return NULL;
     283            ERROR("file not found %s\n", fname);
     284            return NULL;
    284285        }
    285286
     
    302303        if (fname == 0)
    303304        {
    304                 printf("file name is null\n");
    305                 return;
     305            ERROR("file name is null\n");
     306            return;
    306307        }
    307308
     
    309310        if (fp == NULL)
    310311        {
    311                 printf("ERROR :file not found %s\n", fname);
    312                 return;
     312            ERROR("file not found %s\n", fname);
     313            return;
    313314        }
    314315
     
    326327        if (path.size() == 0)
    327328        {
    328                 printf("file not found[%s]\n", path.c_str());
    329                 return NULL;
     329            ERROR("file not found[%s]\n", path.c_str());
     330            return NULL;
    330331        }
    331332
     
    333334        if (fp == NULL)
    334335        {
    335                 printf("ERROR :file not found %s\n", path.c_str());
    336                 return NULL;
     336            ERROR("file not found %s\n", path.c_str());
     337            return NULL;
    337338        }
    338339
     
    387388                                if (length > max)
    388389                                {
    389                                         printf("max %lf %lf %fl\n", x, y, z);
     390                                        TRACE("max %lf %lf %fl\n", x, y, z);
    390391                                        max = length;
    391392                                }
     
    406407        fclose(fp);
    407408
    408         printf("width %d, height %d, depth %d, min %f, max %f, scaleX %f, scaleY %f, scaleZ %f\n",
     409        TRACE("width %d, height %d, depth %d, min %f, max %f, scaleX %f, scaleY %f, scaleZ %f\n",
    409410                width, height, depth, min, max, axisScaleX, axisScaleY, axisScaleZ);
    410411        return data;
  • branches/blt4/packages/vizservers/nanovis/Event.cpp

    r2120 r2409  
    2828   
    2929void Event::write(FILE* fd){
    30   fprintf(fd, "%d %f %f %f %g\n", type, parameter[0], parameter[1], parameter[2], msec);
     30    fprintf(fd, "%d %f %f %f %g\n", type, parameter[0], parameter[1], parameter[2], msec);
    3131}
    3232
  • branches/blt4/packages/vizservers/nanovis/EventPlayer.cpp

    r1982 r2409  
    7575    float ave = interval_sum / (cur_event-1);
    7676    float fps = 1/ave;
    77     printf("Average frame time = %.6f\n", ave);
    78     printf("Frames per second  = %f\n", fps);
     77    TRACE("Average frame time = %.6f\n", ave);
     78    TRACE("Frames per second  = %f\n", fps);
    7979    exit(0);
    8080  }
     
    121121
    122122  //send msg
    123   //printf("Writing message %04d to server: '%s'\n", cur_event, msg.c_str());
     123  //TRACE("Writing message %04d to server: '%s'\n", cur_event, msg.c_str());
    124124  int status = write(socket_fd, msg.c_str(), strlen(msg.c_str()));
    125125  if (status <= 0) {
     
    131131  int sizes[2];
    132132  status = read(socket_fd, &sizes, sizeof(sizes));
    133   printf("Reading %d,%d bytes\n", sizes[0], sizes[1]);
     133  TRACE("Reading %d,%d bytes\n", sizes[0], sizes[1]);
    134134  int len = sizes[0] + sizes[1];
    135135#else
     
    152152  }
    153153
    154   //printf("Read message to server.\n");
     154  //TRACE("Read message to server.\n");
    155155
    156156  //end timer
  • branches/blt4/packages/vizservers/nanovis/FlowCmd.cpp

    r2120 r2409  
    849849        length = sprintf(info, "nv>data tag %s min %g max %g\n",
    850850                flowPtr->name(), dataPtr->magMin(), dataPtr->magMax());
    851         nWritten  = write(0, info, length);
     851        nWritten  = write(1, info, length);
    852852        assert(nWritten == (ssize_t)strlen(info));
    853853    }
  • branches/blt4/packages/vizservers/nanovis/HeightMap.cpp

    r1982 r2409  
    563563    if (_vertexBufferObjectID)
    564564    {
    565         printf("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n");
     565        TRACE("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n");
    566566        glColor3f(1.0f, 1.0f, 1.0f);
    567567        glShadeModel(GL_SMOOTH);
  • branches/blt4/packages/vizservers/nanovis/Nv.cpp

    r1053 r2409  
    2121    if(lastError) {
    2222        const char *listing = cgGetLastListing(g_context);
    23         printf("\n---------------------------------------------------\n");
    24         printf("%s\n\n", cgGetErrorString(lastError));
    25         printf("%s\n", listing);
    26         printf("-----------------------------------------------------\n");
    27         printf("Cg error, exiting...\n");
     23        ERROR("\n---------------------------------------------------\n");
     24        ERROR("%s\n\n", cgGetErrorString(lastError));
     25        ERROR("%s\n", listing);
     26        ERROR("-----------------------------------------------------\n");
     27        ERROR("Cg error, exiting...\n");
    2828        cgDestroyContext(g_context);
    29         fflush(stdout);
    3029        exit(-1);
    3130    }
     
    3433void NvInit(char* path)
    3534{
    36     printf("Nanovis GL Initialized\n");
     35    TRACE("Nanovis GL Initialized\n");
    3736}
    3837
  • branches/blt4/packages/vizservers/nanovis/NvEventLog.cpp

    r2120 r2409  
    2626        logName = (char*) calloc(logNameLen,sizeof(char));
    2727        strncpy(logName,"/tmp/nanovis_log.txt",logNameLen);
    28     }
    29     else {
     28    } else {
    3029        logNameLen = 17+1+strlen(user);
    3130        logName = (char*) calloc(logNameLen,sizeof(char));
    3231        strncpy(logName,"/tmp/nanovis_log_",logNameLen);
    33         strncat(logName,user,strlen(user));
     32        strncat(logName, user, strlen(user));
    3433    }
    3534
    3635    //open log and map stderr to log file
    3736    NanoVis::logfile = fopen(logName, "w");
    38     close(2);
    3937    dup2(fileno(NanoVis::logfile), 2);
    40     dup2(2,1);
    41     //flush junk
    42     fflush(stdout);
    43     fflush(stderr);
     38    /* dup2(2,1); */
    4439
    4540    // clean up malloc'd memory
     
    7772{
    7873    struct timeval time;
     74
    7975    gettimeofday(&time, NULL);
    8076    double new_time = time.tv_sec*1000. + time.tv_usec/1000.;
  • branches/blt4/packages/vizservers/nanovis/NvVectorField.cpp

    r1515 r2409  
    3838    _vectorFieldId = volPtr->id;
    3939    _physicalMin = volPtr->getPhysicalBBoxMin();
    40     printf("_pysicalMin %f %f %f\n", _physicalMin.x, _physicalMin.y, _physicalMin.z);
     40    TRACE("_pysicalMin %f %f %f\n", _physicalMin.x, _physicalMin.y, _physicalMin.z);
    4141    _physicalSize = volPtr->getPhysicalBBoxMax() - _physicalMin;
    42     printf("_pysicalSize %f %f %f\n",
     42    TRACE("_pysicalSize %f %f %f\n",
    4343           _physicalSize.x, _physicalSize.y, _physicalSize.z);
    4444}
  • branches/blt4/packages/vizservers/nanovis/NvZincBlendeReconstructor.cpp

    r1053 r2409  
    6060        {
    6161#ifdef _LOADER_DEBUG_
    62             printf("VERSION 1\n");
    63             fflush(stdout);
     62            TRACE("VERSION 1\n");
    6463#endif
    6564           version = 1;
     
    6968        {
    7069#ifdef _LOADER_DEBUG_
    71             printf("VERSION 2\n");
    72             fflush(stdout);
     70            TRACE("VERSION 2\n");
    7371#endif
    7472           version = 2;
     
    105103        catch (...)
    106104        {
    107             printf("ERROR\n");
     105            TRACE("ERROR\n");
    108106        }
    109107
     
    123121                sscanf(pt, "%s%f%f%f", str[0], &(delta.x), &(delta.y), &(delta.z));
    124122#ifdef _LOADER_DEBUG_
    125                 printf("delta : %f %f %f\n", delta.x, delta.y, delta.z);
    126                 fflush(stdout);
     123                TRACE("delta : %f %f %f\n", delta.x, delta.y, delta.z);
    127124#endif
    128125            }
     
    131128                sscanf(pt, "%s%d", str[0], &datacount);
    132129#ifdef _LOADER_DEBUG_
    133                 printf("datacount = %d\n", datacount);
    134                 fflush(stdout);
     130                TRACE("datacount = %d\n", datacount);
    135131#endif
    136132            }
     
    146142                sscanf(pt, "%s%d%d%d", str[0], &width, &height, &depth);
    147143#ifdef _LOADER_DEBUG_
    148                 printf("width height depth %d %d %d\n", width, height, depth);
    149                 fflush(stdout);
     144                TRACE("width height depth %d %d %d\n", width, height, depth);
    150145#endif
    151146            }
     
    154149                sscanf(pt, "%s%lf", str[0], &emptyvalue);
    155150#ifdef _LOADER_DEBUG_
    156                 printf("empryvalue %lf\n", emptyvalue);
    157                 fflush(stdout);
     151                TRACE("empryvalue %lf\n", emptyvalue);
    158152#endif
    159153            }
     
    162156                sscanf(pt, "%s%lf", str[0], &emptyvalue);
    163157#ifdef _LOADER_DEBUG_
    164                 printf("emptyvalue %lf\n", emptyvalue);
     158                TRACE("emptyvalue %lf\n", emptyvalue);
    165159#endif
    166160            }
     
    247241
    248242#ifdef _LOADER_DEBUG_
    249         printf("index %d\n", index);
    250         fflush(stdout);
     243        TRACE("index %d\n", index);
    251244#endif
    252245
     
    321314
    322315#ifdef _LOADER_DEBUG_
    323         printf("[%d] index %d (width:%lf height:%lf depth:%lf)\n", i, index, srcPtr->indexX, srcPtr->indexY, srcPtr->indexZ);
    324         fflush(stdout);
     316        TRACE("[%d] index %d (width:%lf height:%lf depth:%lf)\n", i, index, srcPtr->indexX, srcPtr->indexY, srcPtr->indexZ);
    325317#endif
    326318
    327319        if (index < 0) {
    328320#ifdef _LOADER_DEBUG_
    329             printf("There is an invalid data\n");
    330             fflush(stdout);
     321            TRACE("There is an invalid data\n");
    331322#endif
    332323            srcPtr +=8;
     
    398389
    399390#ifdef _LOADER_DEBUG_
    400     printf("%s", buff);
    401     fflush(stdout);
     391    TRACE("%s", buff);
    402392#endif
    403393}
     
    421411        else if (strstr((const char*) buff, "object") != 0)
    422412        {
    423             printf("VERSION 1\n");
    424             fflush(stdout);
     413            TRACE("VERSION 1\n");
    425414           version = 1;
    426415           break;
     
    428417        else if (strstr(buff, "record format") != 0)
    429418        {
    430             printf("VERSION 2\n");
    431             fflush(stdout);
     419            TRACE("VERSION 2\n");
    432420           version = 2;
    433421           break;
     
    463451        catch (...)
    464452        {
    465             printf("ERROR\n");
     453            TRACE("ERROR\n");
    466454        }
    467455
     
    481469                sscanf(pt, "%s%f%f%f", str[0], &(delta.x), &(delta.y), &(delta.z));
    482470#ifdef _LOADER_DEBUG_
    483                 printf("delta : %f %f %f\n", delta.x, delta.y, delta.z);
    484                 fflush(stdout);
     471                TRACE("delta : %f %f %f\n", delta.x, delta.y, delta.z);
    485472#endif
    486473            }
     
    488475            {
    489476                sscanf(pt, "%s%d", str[0], &datacount);
    490                 printf("datacount = %d\n", datacount);
    491                 fflush(stdout);
     477                TRACE("datacount = %d\n", datacount);
    492478            }
    493479            else if ((pt = strstr(buff, "datatype")) != 0)
     
    502488                sscanf(pt, "%s%d%d%d", str[0], &width, &height, &depth);
    503489#ifdef _LOADER_DEBUG_
    504                 printf("width height depth %d %d %d\n", width, height, depth);
    505                 fflush(stdout);
     490                TRACE("width height depth %d %d %d\n", width, height, depth);
    506491#endif
    507492            }
     
    510495                sscanf(pt, "%s%lf", str[0], &emptyvalue);
    511496#ifdef _LOADER_DEBUG_
    512                 printf("empryvalue %lf\n", emptyvalue);
    513                 fflush(stdout);
     497                TRACE("empryvalue %lf\n", emptyvalue);
    514498#endif
    515499            }
     
    518502                sscanf(pt, "%s%lf", str[0], &emptyvalue);
    519503#ifdef _LOADER_DEBUG_
    520                 printf("emptyvalue %lf\n", emptyvalue);
     504                TRACE("emptyvalue %lf\n", emptyvalue);
    521505#endif
    522506            }
     
    555539
    556540#ifdef _LOADER_DEBUG_
    557     printf("%s", buff);
    558     fflush(stdout);
    559 #endif
    560 }
     541    TRACE("%s", buff);
     542#endif
     543}
  • branches/blt4/packages/vizservers/nanovis/PCASplit.cpp

    r1028 r2409  
    128128    _clusterHeader->startPointerCluster[level - 1] = clusterBlock;
    129129
    130     printf("Cluster created %d [in level %d]:total %d\n", count, level, cc);
    131     fflush(stdout);
     130    TRACE("Cluster created %d [in level %d]:total %d\n", count, level, cc);
    132131       
    133132    int i = 0;
     
    142141    }
    143142    if (count != i) {
    144         printf("ERROR\n");
     143        TRACE("ERROR\n");
    145144    }
    146145    return clusterBlock;
     
    266265   
    267266    if (left == 0 || right == count - 1) {
    268         printf("error\n");
     267        TRACE("error\n");
    269268        exit(1);
    270269    } else {
  • branches/blt4/packages/vizservers/nanovis/ParticleSystem.cpp

    r2307 r2409  
    1 #include "ParticleSystem.h"
    2 #include "ParticleEmitter.h"
     1
    32#include <vr3d/vr3d.h>
    43#include <time.h>
     
    1817#endif
    1918#endif
    20 
     19#include "ParticleSystem.h"
     20#include "ParticleEmitter.h"
     21#include "Trace.h"
    2122#include <vrutil/vrFilePath.h>
    2223#include <pthread.h>
     
    9596                                printf("%f\n",ti - t);
    9697                                queue.push();
    97                                 printf("%d loaded\n", curIndex);
     98                                TRACE("%d loaded\n", curIndex);
    9899                                ++curIndex;
    99100                        }
     
    101102                else
    102103                {
    103                         //printf("full\n");
     104                        //TRACE("full\n");
    104105                }
    105106        }
     
    488489    if(lastError) {
    489490        const char *listing = cgGetLastListing(_context);
    490         printf("\n---------------------------------------------------\n");
    491         printf("%s\n\n", cgGetErrorString(lastError));
    492         printf("%s\n", listing);
    493         printf("-----------------------------------------------------\n");
    494         printf("Cg error, exiting...\n");
     491        ERROR("\n---------------------------------------------------\n");
     492        ERROR("%s\n\n", cgGetErrorString(lastError));
     493        ERROR("%s\n", listing);
     494        ERROR("-----------------------------------------------------\n");
     495        ERROR("Cg error, exiting...\n");
    495496
    496497        cgDestroyContext(_context);
     
    11241125                                        _vectorFields[0]->updatePixels(data);
    11251126                                        float ti = clock() / (float) CLOCKS_PER_SEC;
    1126                                         printf("pixels %f\n",ti - t);
     1127                                        TRACE("pixels %f\n",ti - t);
    11271128                                        _queue.pop();
    11281129                                        oldTime = time;
    11291130
    11301131                                        firstLoad = false;
    1131                                         printf("%d bound\n", index++);
     1132                                        TRACE("%d bound\n", index++);
    11321133                                }
    11331134                        }               
     
    13311332        for (iter = _newParticles.begin(); iter != _newParticles.end(); iter++)
    13321333        {
    1333                 //printf("[%d] %f %f %f\n", iter->index, iter->position.x,iter->position.y,iter->position.z);
     1334            //TRACE("[%d] %f %f %f\n", iter->index, iter->position.x,iter->position.y,iter->position.z);
    13341335                glMultiTexCoord3f(GL_TEXTURE0, iter->position.x,iter->position.y,iter->position.z);
    13351336               
     
    13401341                glVertex2f(     (float)(iter->index % _width),
    13411342                        (float)(iter->index / _height) + 1/* + offsetY*/ /* + offsetY shouldn't be */);
    1342                 //printf("%f %f\n", (float) (iter->index % _width), (float)(iter->index / _width));
     1343                //TRACE("%f %f\n", (float) (iter->index % _width), (float)(iter->index / _width));
    13431344        }
    13441345        glEnd();
     
    13871388        for (iter = _newParticles.begin(); iter != _newParticles.end(); iter++)
    13881389        {
    1389                 //printf("[%d] %f %f %f\n", iter->index, iter->position.x,iter->position.y,iter->position.z);
     1390                //TRACE("[%d] %f %f %f\n", iter->index, iter->position.x,iter->position.y,iter->position.z);
    13901391                glMultiTexCoord3f(GL_TEXTURE0, iter->position.x,iter->position.y,iter->position.z);
    13911392               
     
    13961397                glVertex2f(     (float)(iter->index % _width),
    13971398                        (float)(iter->index / _height) + 1/* + offsetY*/ /* + offsetY shouldn't be */);
    1398                 //printf("%f %f\n", (float) (iter->index % _width), (float)(iter->index / _width));
     1399                //TRACE("%f %f\n", (float) (iter->index % _width), (float)(iter->index / _width));
    13991400        }
    14001401        glEnd();
     
    14881489
    14891490        ///////////////////////////////
    1490         // DEBUG
     1491        // _DEBUG
    14911492        /*
    14921493        {
     
    14941495        static float debug[256];
    14951496        glReadPixels(0, 0, _width, _height, GL_RGB, GL_FLOAT, (float*)debug);
    1496         printf("[%d]", _currentSortIndex);
     1497        TRACE("[%d]", _currentSortIndex);
    14971498        for (int i = 0; i < _width * _height * 3; i += 3)
    1498                 printf("%.2f, %.2f, %.2f\n", debug[i], debug[i+1], debug[i+2]);
    1499         printf("\n");
     1499                TRACE("%.2f, %.2f, %.2f\n", debug[i], debug[i+1], debug[i+2]);
     1500        TRACE("\n");
    15001501        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
    15011502       
     
    15031504        */
    15041505        ///////////////////////////////
    1505         // DEBUG
     1506        // _DEBUG
    15061507        /*
    15071508        {
     
    15091510                static float debug[256];
    15101511                glReadPixels(0, 0, _width, _height, GL_RGB, GL_FLOAT, (float*)debug);
    1511                 printf("\n");
    1512                 printf("currentPos[%d]", _currentPosIndex);
     1512                TRACE("\n");
     1513                TRACE("currentPos[%d]", _currentPosIndex);
    15131514                for (int i = 0; i < _width * _height * 3; i += 3)
    1514                         printf("%.2f, %.2f, %.2f\n", debug[i], debug[i+1], debug[i+2]);
    1515                 printf("\n");
     1515                        TRACE("%.2f, %.2f, %.2f\n", debug[i], debug[i+1], debug[i+2]);
     1516                        TRACE("\n");
    15161517                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
    15171518        }
     
    15441545
    15451546        ///////////////////////////////
    1546         // DEBUG
     1547        // _DEBUG
    15471548        /*
    15481549        {
     
    15501551                static float debug[256];
    15511552                glReadPixels(0, 0, _width, _height, GL_RGB, GL_FLOAT, (float*)debug);
    1552                 printf("\n");
    1553                 printf("[%d]", _currentSortIndex);
     1553                TRACE("\n");
     1554                TRACE("[%d]", _currentSortIndex);
    15541555                for (int i = 0; i < _width * _height * 3; i += 3)
    1555                         printf("%.2f, %.2f, %.2f\n", debug[i], debug[i+1], debug[i+2]);
    1556                 printf("\n");
     1556                TRACE("%.2f, %.2f, %.2f\n", debug[i], debug[i+1], debug[i+2]);
     1557                TRACE("\n");
    15571558                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
    15581559        }
     
    16081609
    16091610        ///////////////////////////////
    1610         // DEBUG
     1611        // _DEBUG
    16111612        /*
    16121613        {
     
    16141615                static float debug[256];
    16151616                glReadPixels(0, 0, _width, _height, GL_RGB, GL_FLOAT, (float*)debug);
    1616                 printf("\n");
    1617                 printf("[%d]", _currentSortIndex);
     1617                TRACE("\n");
     1618                TRACE("[%d]", _currentSortIndex);
    16181619                for (int i = 0; i < _width * _height * 3; i += 3)
    1619                         printf("%.2f, %.2f, %.2f\n", debug[i], debug[i+1], debug[i+2]);
    1620                 printf("\n");
     1620                TRACE("%.2f, %.2f, %.2f\n", debug[i], debug[i+1], debug[i+2]);
     1621                TRACE("\n");
    16211622                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
    16221623        }
     
    18091810
    18101811                        cgSetParameter1f(_mvCurrentTimeParam, _currentTime);
    1811                         //printf("%f %f, %f %d\n", _fov, tan(_fov), tan(_fov / 2.0), _screenHeight);
     1812                        //TRACE("%f %f, %f %d\n", _fov, tan(_fov), tan(_fov / 2.0), _screenHeight);
    18121813                        //cgSetParameter1f(_mvTanHalfFOVParam, -tan(_fov * PI / 180 * 0.5) * _screenHeight * 0.5);
    18131814                        //float v = tan(_fov * PI / 180 * 0.5) * _screenHeight * 0.5;
  • branches/blt4/packages/vizservers/nanovis/ParticleSystemFactory.cpp

    r1816 r2409  
    33#include <vrutil/vrFilePath.h>
    44#include <stdio.h>
     5#include "Trace.h"
    56
    67#ifdef _WIN32
     
    7576                if (!stat)
    7677                {
    77                         //printf("Parse error at line %d\n", XML_GetCurrentLineNumber(parser));
     78                        //TRACE("Parse error at line %d\n", XML_GetCurrentLineNumber(parser));
    7879                        break;
    7980                }
     
    198199                                index = path.rfind('\\');
    199200                                if (index == -1)
    200                                         printf("file not found\n");
     201                                        TRACE("file not found\n");
    201202                        }
    202203
  • branches/blt4/packages/vizservers/nanovis/RpAVTranslate.cpp

    r2120 r2409  
    104104    if (_fmtPtr == NULL) {
    105105        /*
    106         printf(  "Could not deduce output format from"
     106          TRACE(  "Could not deduce output format from"
    107107                 "file extension: using MPEG.\n");
    108108        */
  • branches/blt4/packages/vizservers/nanovis/RpDX.cpp

    r1982 r2409  
    5353    }
    5454    // open the file with libdx
    55     fprintf(stdout, "Calling DXImportDX(%s)\n", filename);
    56     fflush(stdout);
     55    TRACE("Calling DXImportDX(%s)\n", filename);
    5756    DXenable_locks(0);
    5857    _dxobj = DXImportDX((char*)filename,NULL,NULL,NULL,NULL);
     
    7473    DXGetArrayInfo(dxpos, &_n, &type, &category, &_rank, &_shape);
    7574
    76     fprintf(stdout, "_n = %d\n",_n);
     75    TRACE("_n = %d\n",_n);
    7776    if (type != TYPE_FLOAT) {
    7877        result.addError("\"positions\" is not type float (type=%d)\n", type);
    7978        return;
    8079    }
    81     fprintf(stdout, "_rank = %d\n",_rank);
    82     fprintf(stdout, "_shape = %d\n",_shape);
     80    TRACE("_rank = %d\n",_rank);
     81    TRACE("_shape = %d\n",_shape);
    8382
    8483    float* pos = NULL;
     
    140139    DXQueryGridPositions(dxpos, NULL, _axisLen, _origin, _delta);
    141140
    142     fprintf(stdout, "_max = [%g,%g,%g]\n",_max[0],_max[1],_max[2]);
    143     fprintf(stdout, "_delta = [%g,%g,%g]\n",_delta[0],_delta[1],_delta[2]);
    144     fprintf(stdout, "         [%g,%g,%g]\n",_delta[3],_delta[4],_delta[5]);
    145     fprintf(stdout, "         [%g,%g,%g]\n",_delta[6],_delta[7],_delta[8]);
    146     fprintf(stdout, "_origin = [%g,%g,%g]\n",_origin[0],_origin[1],_origin[2]);
    147     fprintf(stdout, "_axisLen = [%i,%i,%i]\n",_axisLen[0],_axisLen[1],_axisLen[2]);
    148     fflush(stdout);
     141    TRACE("_max = [%g,%g,%g]\n",_max[0],_max[1],_max[2]);
     142    TRACE("_delta = [%g,%g,%g]\n",_delta[0],_delta[1],_delta[2]);
     143    TRACE("         [%g,%g,%g]\n",_delta[3],_delta[4],_delta[5]);
     144    TRACE("         [%g,%g,%g]\n",_delta[6],_delta[7],_delta[8]);
     145    TRACE("_origin = [%g,%g,%g]\n",_origin[0],_origin[1],_origin[2]);
     146    TRACE("_axisLen = [%i,%i,%i]\n",_axisLen[0],_axisLen[1],_axisLen[2]);
    149147
    150148    // grab the data array from the dx object and store it in _data
     
    180178    // print debug info
    181179    for (int lcv = 0, pt = 0; lcv < _n; lcv +=3, pt+=9) {
    182         fprintf(stdout,
    183             "(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n",
     180        TRACE("(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n",
    184181            _positions[pt],_positions[pt+1],_positions[pt+2], _data[lcv],
    185182            _positions[pt+3],_positions[pt+4],_positions[pt+5],_data[lcv+1],
    186183            _positions[pt+6],_positions[pt+7],_positions[pt+8],_data[lcv+2]);
    187         fflush(stdout);
    188184    }
    189185    __collectDataStats();
     
    262258    pos = (float*) DXGetArrayData(dxpos);
    263259    if (pos == NULL) {
    264         fprintf(stdout, "DXGetArrayData failed to return positions array\n");
    265         fflush(stdout);
     260        TRACE("DXGetArrayData failed to return positions array\n");
    266261    }
    267262
     
    272267    if (_positions == NULL) {
    273268        // malloc failed, raise error
    274         fprintf(stdout, "malloc of _axisLen array failed");
    275         fflush(stdout);
     269        TRACE("malloc of _axisLen array failed");
    276270    }
    277271    memcpy(_positions,pos,sizeof(float)*_n*_numAxis);
     
    298292    if (_data == NULL) {
    299293        // malloc failed, raise error
    300         fprintf(stdout, "malloc of _data array failed");
    301         fflush(stdout);
     294        TRACE("malloc of _data array failed");
    302295    }
    303296    memset(_data,0,_n);
    304297
    305298    // build the interpolator and interpolate
    306     fprintf(stdout, "creating DXNewInterpolator...\n");
    307     fflush(stdout);
     299    TRACE("creating DXNewInterpolator...\n");
    308300    interpolator = DXNewInterpolator(_dxobj,INTERP_INIT_IMMEDIATE,-1.0);
    309     fprintf(stdout,"_rank = %i\n",_rank);
    310     fprintf(stdout,"_shape = %i\n",_shape);
    311     fprintf(stdout,"_n = %i\n",_n);
    312     fprintf(stdout,"start interppts = %i\n",interppts);
    313     fflush(stdout);
     301    TRACE("_rank = %i\n",_rank);
     302    TRACE("_shape = %i\n",_shape);
     303    TRACE("_n = %i\n",_n);
     304    TRACE("start interppts = %i\n",interppts);
    314305    DXInterpolate(interpolator,&interppts,_positions,_data);
    315     fprintf(stdout,"interppts = %i\n",interppts);
    316     fflush(stdout);
     306    TRACE("interppts = %i\n",interppts);
    317307
    318308    // print debug info
    319309    for (int lcv = 0, pt = 0; lcv < pts; lcv+=3,pt+=9) {
    320         fprintf(stdout,
    321             "(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n",
     310        TRACE("(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n",
    322311            _positions[pt],_positions[pt+1],_positions[pt+2], _data[lcv],
    323312            _positions[pt+3],_positions[pt+4],_positions[pt+5],_data[lcv+1],
    324313            _positions[pt+6],_positions[pt+7],_positions[pt+8],_data[lcv+2]);
    325         fflush(stdout);
    326314    }
    327315
     
    340328DX::interpolate(int* newAxisLen)
    341329{
    342     fprintf(stdout, "----begin interpolation----\n");
    343     fflush(stdout);
     330    TRACE("----begin interpolation----\n");
    344331    if (newAxisLen != NULL) {
    345332        for (int i = 0; i < _numAxis; i++) {
     
    349336    __getInterpPos();
    350337    __getInterpData();
    351     fprintf(stdout, "----end interpolation----\n");
    352     fflush(stdout);
     338    TRACE("----end interpolation----\n");
    353339    return *this;
    354340}
  • branches/blt4/packages/vizservers/nanovis/Texture1D.cpp

    r1982 r2409  
    9292    glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max);
    9393       
    94     //printf("%d", glGetError());
     94    //TRACE("%d", glGetError());
    9595    TRACE("max texture size: %d\n", max);
    9696}
  • branches/blt4/packages/vizservers/nanovis/Texture3D.cpp

    r1982 r2409  
    207207    glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE_EXT, &max);
    208208       
    209     //printf("%d", glGetError());
     209    //TRACE("%d", glGetError());
    210210    TRACE("max 3d texture size: %d\n", max);
    211211}
  • branches/blt4/packages/vizservers/nanovis/Trace.cpp

    r1990 r2409  
    88#include <GL/glut.h>
    99#include <syslog.h>
     10
     11static const char *syslogLevels[] = {
     12    "emergency",                        /* System is unusable */
     13    "alert",                            /* Action must be taken immediately */
     14    "critical",                         /* Critical conditions */
     15    "error",                            /* Error conditions */
     16    "warning",                          /* Warning conditions */
     17    "notice",                           /* Normal but significant condition */
     18    "info",                             /* Informational */
     19    "debug",                            /* Debug-level messages */
     20};
    1021
    1122void
     
    2536        s++;
    2637    }
    27     length = snprintf(message, MSG_LEN, "line %d of \"%s\": ", lineNum, s);
     38    length = snprintf(message, MSG_LEN, "nanovis (%d) %s: %s:%d ",
     39                      getpid(), syslogLevels[priority],  s, lineNum);
    2840    length += vsnprintf(message + length, MSG_LEN - length, fmt, lst);
    2941    message[MSG_LEN] = '\0';
  • branches/blt4/packages/vizservers/nanovis/Unirect.cpp

    r1982 r2409  
    666666    dmin = pow((dx*dy*dz)/(nSamples*nSamples*nSamples), 0.333);
    667667   
    668     printf("dx:%lf dy:%lf dz:%lf dmin:%lf\n", dx, dy, dz, dmin);
     668    TRACE("dx:%lf dy:%lf dz:%lf dmin:%lf\n", dx, dy, dz, dmin);
    669669
    670670    /* Recompute new number of points for each axis. */
  • branches/blt4/packages/vizservers/nanovis/VelocityArrowsSlice.cpp

    r2120 r2409  
    9797#else
    9898    /*
    99         printf("test1\n");
     99      TRACE("test1\n");
    100100        const char *path = R2FilePath::getInstance()->getPath("arrows_flip2.png");
    101         if (path) printf("test2 %s\n", path);
    102         else printf("tt\n");
     101        if (path) TRACE("test2 %s\n", path);
     102        else TRACE("tt\n");
    103103        IplImage* pTextureImage = cvLoadImage(path);
    104         printf("test3\n");
     104        TRACE("test3\n");
    105105        if (pTextureImage)
    106106        {
    107             printf("file(%s) has been loaded\n", path);
     107            TRACE("file(%s) has been loaded\n", path);
    108108            _arrowsTex = new Texture2D(pTextureImage->width, pTextureImage->height, GL_FLOAT, GL_LINEAR, 3, (float*) pTextureImage->imageData);
    109             printf("file(%s) has been loaded\n", path);
     109            TRACE("file(%s) has been loaded\n", path);
    110110            //cvReleaseImage(&pTextureImage);
    111111        }
    112112        else
    113113        {
    114             printf("not found\n");
     114            TRACE("not found\n");
    115115        }
    116116        if (path) delete [] path;
  • branches/blt4/packages/vizservers/nanovis/VolumeInterpolator.cpp

    r1982 r2409  
    127127            _volumes[0]->depth != refPtr->depth ||
    128128            _volumes[0]->n_components() != refPtr->n_components()) {
    129             printf("The volume should be the same width, height, number of components\n");
     129            TRACE("The volume should be the same width, height, number of components\n");
    130130            return;
    131131        }
  • branches/blt4/packages/vizservers/nanovis/VolumeRenderer.cpp

    r1982 r2409  
    241241        ConvexPolygon static_poly;
    242242        for(int j = 0; j < volPtr->get_cutplane_count(); j++) {
    243             if(!volPtr->cutplane_is_enabled(j))
     243            if(!volPtr->cutplane_is_enabled(j)) {
    244244                continue;
    245            
     245            }
    246246            float offset = volPtr->get_cutplane(j)->offset;
    247247            int axis = volPtr->get_cutplane(j)->orient;
     
    646646        goto error;
    647647    }
    648     //printf("Data at Offset: %ld\n", bfOffBits);
     648    //TRACE("Data at Offset: %ld\n", bfOffBits);
    649649   
    650650    /* skip size of bitmap info header */
     
    656656        goto error;
    657657    }
    658     //printf("Width of Bitmap: %d\n", texture->width);
     658    //TRACE("Width of Bitmap: %d\n", texture->width);
    659659   
    660660    /* get the height of the bitmap */
     
    663663        goto error;
    664664    }
    665     //printf("Height of Bitmap: %d\n", texture->height);
     665    //TRACE("Height of Bitmap: %d\n", texture->height);
    666666   
    667667    /* get the number of planes (must be set to 1) */
     
    681681    }
    682682   
    683     //printf("Bits per Pixel: %d\n", biBitCount);
     683    //TRACE("Bits per Pixel: %d\n", biBitCount);
    684684    if (biBitCount != 24) {
    685685        ERROR("Bits per Pixel not 24\n");
  • branches/blt4/packages/vizservers/nanovis/dxReader.cpp

    r1982 r2409  
    5151                    std::iostream& fin)
    5252{
    53     printf("load_volume_stream2 %s\n", tag);
     53    TRACE("load_volume_stream2 %s\n", tag);
    5454    Rappture::MeshTri2D xymesh;
    5555    int dummy, nx, ny, nz, nxy, npts;
     
    408408    if (volPtr) {
    409409        volPtr->location(Vector3(dx0, dy0, dz0));
    410         printf("volume moved\n");
     410        TRACE("volume moved\n");
    411411    }
    412412    return volPtr;
     
    417417                   std::iostream& fin)
    418418{
    419     printf("load_volume_stream\n");
     419    TRACE("load_volume_stream\n");
    420420
    421421    Rappture::MeshTri2D xymesh;
     
    845845                         std::iostream& fin)
    846846{
    847     printf("load_volume_stream\n");
     847    TRACE("load_volume_stream\n");
    848848 
    849849    Rappture::MeshTri2D xymesh;
  • branches/blt4/packages/vizservers/nanovis/dxReader2.cpp

    r1982 r2409  
    8989    computeSimpleGradient(data, nx, ny, nz);
    9090
    91     fprintf(stdout,"nx = %i ny = %i nz = %i\n",nx,ny,nz);
    92     fprintf(stdout,"dx = %lg dy = %lg dz = %lg\n",dx,dy,dz);
    93     fprintf(stdout,"dataMin = %lg\tdataMax = %lg\tnzero_min = %lg\n", dxObj.dataMin(),dxObj.dataMax(),dxObj.nzero_min());
    94     fflush(stdout);
     91    TRACE("nx = %i ny = %i nz = %i\n",nx,ny,nz);
     92    TRACE("dx = %lg dy = %lg dz = %lg\n",dx,dy,dz);
     93    TRACE("dataMin = %lg\tdataMax = %lg\tnzero_min = %lg\n", dxObj.dataMin(),dxObj.dataMax(),dxObj.nzero_min());
    9594
    9695    Volume *volPtr;
  • branches/blt4/packages/vizservers/nanovis/nanovis.cpp

    r1990 r2409  
    241241    ssize_t nWritten;
    242242
    243     nWritten = write(0, str, strlen(str));
     243    nWritten = write(2, str, strlen(str));
    244244}
    245245
     
    428428    }
    429429    TRACE("cg program compiling: %s\n", path);
    430     fflush(stdout);
    431430    CGprogram program;
    432431    program = cgCreateProgramFromFile(context, CG_SOURCE, path, profile,
     
    591590        sprintf(prefix, "nv>legend %s %g %g", volArg, min, max);
    592591        ppm_write(prefix);
    593         nWritten = write(0, "\n", 1);
     592        nWritten = write(1, "\n", 1);
    594593        assert(nWritten == 1);
    595594    }
     
    756755    if(lastError) {
    757756        const char *listing = cgGetLastListing(g_context);
    758         printf("\n---------------------------------------------------\n");
    759         printf("%s\n\n", cgGetErrorString(lastError));
    760         printf("%s\n", listing);
    761         printf("-----------------------------------------------------\n");
    762         printf("Cg error, exiting...\n");
     757        TRACE("\n---------------------------------------------------\n");
     758        TRACE("%s\n\n", cgGetErrorString(lastError));
     759        TRACE("%s\n", listing);
     760        TRACE("-----------------------------------------------------\n");
     761        TRACE("Cg error, exiting...\n");
    763762        cgDestroyContext(g_context);
    764         fflush(stdout);
    765763        DoExit(-1);
    766764    }
     
    770768{
    771769    // print system information
    772     INFO("-----------------------------------------------------------\n");
    773     INFO("OpenGL driver: %s %s\n", glGetString(GL_VENDOR),
     770    TRACE("-----------------------------------------------------------\n");
     771    TRACE("OpenGL driver: %s %s\n", glGetString(GL_VENDOR),
    774772           glGetString(GL_VERSION));
    775     INFO("Graphics hardware: %s\n", glGetString(GL_RENDERER));
    776     INFO("-----------------------------------------------------------\n");
     773    TRACE("Graphics hardware: %s\n", glGetString(GL_RENDERER));
     774    TRACE("-----------------------------------------------------------\n");
    777775    if (path == NULL) {
    778776        ERROR("No path defined for shaders or resources\n");
     
    785783        //assert(false);
    786784    }
    787     INFO("Using GLEW %s\n", glewGetString(GLEW_VERSION));
     785    TRACE("Using GLEW %s\n", glewGetString(GLEW_VERSION));
    788786
    789787    if (!R2FilePath::getInstance()->setPath(path)) {
     
    10611059    char string[200];
    10621060    sprintf(string, "%s %d\n", prefix, fsize);
    1063     nWritten = write(0, string, strlen(string));
     1061    nWritten = write(1, string, strlen(string));
    10641062    assert(nWritten == (ssize_t)strlen(string));
    10651063    header[pos++] = 'B';
     
    11141112    }
    11151113
    1116     nWritten = write(0, header, SIZEOF_BMP_HEADER);
     1114    nWritten = write(1, header, SIZEOF_BMP_HEADER);
    11171115    assert(nWritten == SIZEOF_BMP_HEADER);
    1118     nWritten = write(0, screen_buffer, (3*win_width+pad)*win_height);
     1116    nWritten = write(1, screen_buffer, (3*win_width+pad)*win_height);
    11191117    assert(nWritten == (3*win_width+pad)*win_height);
    11201118    stats.nFrames++;
     
    11801178        srcRowPtr += bytesPerRow;
    11811179    }
    1182     if (writev(0, iov, nRecs) < 0) {
     1180    if (writev(1, iov, nRecs) < 0) {
    11831181        ERROR("write failed: %s\n", strerror(errno));
    11841182    }
     
    12221220    iov[1].iov_base = (char *)data;
    12231221    iov[1].iov_len = dlen;
    1224     if (writev(0, iov, nRecs) < 0) {
     1222    if (writev(1, iov, nRecs) < 0) {
    12251223        ERROR("write failed: %s\n", strerror(errno));
    12261224    }
     
    18631861    case 'a' :
    18641862        {
    1865             printf("flowvis active\n");
     1863            TRACE("flowvis active\n");
    18661864            char cmd[] = {
    18671865                "foreach flow [flow names] {\n"
     
    18781876    case 'd' :
    18791877        {
    1880             printf("flowvis deactived\n");
     1878            TRACE("flowvis deactived\n");
    18811879            char cmd[] = {
    18821880                "foreach flow [flow names] {\n"
     
    18921890    case '1' :
    18931891        {
    1894             printf("add vector field\n");
     1892            TRACE("add vector field\n");
    18951893            char cmd[] = {
    18961894                "flow create flow1\n"
     
    19151913            };
    19161914            Tcl_Eval(interp, cmd);
    1917             printf("add vector field\n");
     1915            TRACE("add vector field\n");
    19181916            addVectorField("/home/iwoo/projects/nanovis/rappture/packages/vizservers/nanovis/data/flowvis_dx_files/3DWireLeakage/SiO2/SiO2.dx",
    19191917                           "vf_name1", "plane_name1", "plane_name2", Vector4(1, 0, 0, 1), Vector4(1, 1, 0, 1));
     
    19221920    case '3':
    19231921        {
    1924             printf("activate\n");
     1922            TRACE("activate\n");
    19251923            char cmd[] = {
    19261924                "flow1 particles add plane2 -hide no\n"
     
    19341932    case '4' :
    19351933        {
    1936             printf("deactivate\n");
     1934            TRACE("deactivate\n");
    19371935            char cmd[] = {
    19381936                "flow1 particles add plane2 -hide yes\n"
     
    19461944    case '5' :
    19471945        {
    1948             printf("vector field deleted (vf_name2)\n");
     1946            TRACE("vector field deleted (vf_name2)\n");
    19491947            char cmd[] = {
    19501948                "flow delete flow2\n"
     
    19581956    case '6' :
    19591957        {
    1960             printf("add device shape\n");
     1958            TRACE("add device shape\n");
    19611959            char cmd[] = {
    19621960                "flow1 box add box1 -corner1 {0 0 0} -corner2 {30 3 3} -color { 1 0 0 1 }\n"
     
    19851983    case '7' :
    19861984        {
    1987             printf("hide shape \n");
     1985            TRACE("hide shape \n");
    19881986            char cmd[] = {
    19891987                "flow1 box configure box1 -hide yes\n"
     
    19971995    case '8' :
    19981996        {
    1999             printf("show shape\n");
     1997            TRACE("show shape\n");
    20001998            char cmd[] = {
    20011999                "flow1 box configure box1 -hide no\n"
     
    20092007    case '9' :
    20102008        {
    2011             printf("show a shape \n");
     2009            TRACE("show a shape \n");
    20122010            char cmd[] = {
    20132011                "flow1 box configure box3 -hide no\n"
     
    20212019    case '0' :
    20222020        {
    2023             printf("delete a shape \n");
     2021            TRACE("delete a shape \n");
    20242022            char cmd[] = {
    20252023                "flow1 box delete box3\n"
     
    20332031    case 'r' :
    20342032        {
    2035             printf("reset \n");
     2033            TRACE("reset \n");
    20362034            char cmd[] = {
    20372035                "flow reset\n"
     
    21292127
    21302128    TRACE("Enter xinetd_listen\n");
     2129
    21312130    int flags = fcntl(0, F_GETFL, 0);
    21322131    fcntl(0, F_SETFL, flags & ~O_NONBLOCK);
     
    21602159            ch = (char)c;
    21612160            Tcl_DStringAppend(&cmdbuffer, &ch, 1);
     2161            TRACE("in xinetd_listen: checking buffer=%s\n",
     2162                  Tcl_DStringValue(&cmdbuffer));
    21622163            if (ch == '\n') {
    21632164                isComplete = Tcl_CommandComplete(Tcl_DStringValue(&cmdbuffer));
     
    21792180            isComplete = false;
    21802181            nCommands++;
    2181     CHECK_FRAMEBUFFER_STATUS();
     2182            CHECK_FRAMEBUFFER_STATUS();
    21822183        }
    21832184    }
     
    21982199        iov[2].iov_len = 1;
    21992200        iov[2].iov_base = (char *)'\n';
    2200         if (writev(0, iov, 3) < 0) {
     2201        if (writev(1, iov, 3) < 0) {
    22012202            ERROR("write failed: %s\n", strerror(errno));
    22022203        }
    22032204        TRACE("Leaving xinetd_listen on ERROR\n");
    22042205        return;
     2206    }
     2207    if (feof(NanoVis::stdin)) {
     2208        DoExit(90);
    22052209    }
    22062210
     
    22212225#endif
    22222226
     2227    if (feof(NanoVis::stdin)) {
     2228        DoExit(90);
     2229    }
    22232230#if DO_RLE
    22242231    do_rle();
    22252232    int sizes[2] = {  offsets_size*sizeof(offsets[0]), rle_size };
    22262233    TRACE("Writing %d,%d\n", sizes[0], sizes[1]);
    2227     write(0, &sizes, sizeof(sizes));
    2228     write(0, offsets, offsets_size*sizeof(offsets[0]));
    2229     write(0, rle, rle_size);    //unsigned byte
     2234    write(1, &sizes, sizeof(sizes));
     2235    write(1, offsets, offsets_size*sizeof(offsets[0]));
     2236    write(1, rle, rle_size);    //unsigned byte
    22302237#else
    22312238    NanoVis::ppm_write("\nnv>image -type image -bytes");
    22322239#endif
    2233     if (feof(NanoVis::stdin)) {
    2234         DoExit(90);
    2235     }
    22362240    TRACE("Leaving xinetd_listen OK\n");
    22372241}
     
    22402244/*----------------------------------------------------*/
    22412245int
    2242 main(int argc, char** argv)
     2246main(int argc, char **argv)
    22432247{
    22442248    const char *path;
    22452249    char *newPath;
    22462250    struct timeval tv;
    2247 
     2251        int n, i;
    22482252    newPath = NULL;
    22492253    path = NULL;
    22502254    NanoVis::stdin = stdin;
    22512255
    2252     openlog("nanovis", LOG_CONS | LOG_PERROR | LOG_PID,  LOG_USER);
     2256    fprintf(stdout, "NanoVis %s\n", NANOVIS_VERSION);
     2257    fflush(stdout);
     2258
     2259    /* openlog("nanovis", LOG_CONS | LOG_PERROR | LOG_PID,  LOG_USER); */
    22532260    gettimeofday(&tv, NULL);
    22542261    stats.start = tv;
     
    23702377#endif
    23712378    }
     2379
    23722380    R2FilePath::getInstance()->setWorkingDirectory(argc, (const char**) argv);
    23732381    vrFilePath::getInstance()->setWorkingDirectory(argc, (const char**) argv);
    23742382
    23752383#ifdef XINETD
    2376     signal(SIGPIPE,SIG_IGN);
     2384#ifdef notdef
     2385    signal(SIGPIPE, SIG_IGN);
     2386#endif
    23772387    NvInitService();
    23782388#endif
     
    24332443    //sprintf(prefix, "nv>height_top_view %s %g %g", volArg, min, max);
    24342444    //ppm_write(prefix);
    2435     //write(0, "\n", 1);
     2445    //write(1, "\n", 1);
    24362446    //plane_render->remove_plane(index);
    24372447
  • branches/blt4/packages/vizservers/nanovis/nanovis.h

    r1823 r2409  
    6868#include "config.h"
    6969
     70#define NANOVIS_VERSION         "1.0"
    7071
    7172//defines for the image based flow visualization
  • branches/blt4/packages/vizservers/pymolproxy/pymolproxy.c

    r2003 r2409  
    6767#include <sys/wait.h>
    6868#include <time.h>
     69#include <syslog.h>
    6970#include <unistd.h>
    7071#include <tcl.h>
     
    9596static Stats stats;
    9697
     98#define READTRACE       0
     99#define EXPECTTRACE     0
     100#define WRITETRACE      0
     101
     102static int debug = FALSE;
     103
    97104static FILE *flog;
    98 static int debug = FALSE;
    99105static FILE *scriptFile;
    100106static int savescript = FALSE;
     
    168174} PymolProxy;
    169175
     176#define ERROR(...)      LogMessage(LOG_ERR, __FILE__, __LINE__, __VA_ARGS__)
     177#define TRACE(...)      LogMessage(LOG_DEBUG, __FILE__, __LINE__, __VA_ARGS__)
     178#define WARN(...)       LogMessage(LOG_WARNING, __FILE__, __LINE__, __VA_ARGS__)
     179#define INFO(...)       LogMessage(LOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
     180
     181static const char *syslogLevels[] = {
     182    "emergency",                        /* System is unusable */
     183    "alert",                            /* Action must be taken immediately */
     184    "critical",                         /* Critical conditions */
     185    "error",                            /* Error conditions */
     186    "warning",                          /* Warning conditions */
     187    "notice",                           /* Normal but significant condition */
     188    "info",                             /* Informational */
     189    "debug",                            /* Debug-level messages */
     190};
     191
     192void
     193LogMessage(int priority, const char *path, int lineNum, const char* fmt, ...)
     194{
     195#define MSG_LEN (2047)
     196    char message[MSG_LEN+1];
     197    const char *s;
     198    int length;
     199    va_list lst;
     200
     201    va_start(lst, fmt);
     202    s = strrchr(path, '/');
     203    if (s == NULL) {
     204        s = path;
     205    } else {
     206        s++;
     207    }
     208    length = snprintf(message, MSG_LEN, "pymolproxy (%d) %s: %s:%d ",
     209                      getpid(), syslogLevels[priority],  s, lineNum);
     210    length += vsnprintf(message + length, MSG_LEN - length, fmt, lst);
     211    message[MSG_LEN] = '\0';
     212    if (debug) {
     213        fprintf(stderr, "%s\n", message);
     214    } else {
     215        syslog(priority, message, length);
     216    }
     217}
    170218
    171219static void PollForEvents(PymolProxy *proxyPtr);
    172220static void
    173 trace TCL_VARARGS_DEF(const char *, arg1)
     221Debug TCL_VARARGS_DEF(const char *, arg1)
    174222{
    175223    if (debug) {
     
    219267    ssize_t nRead;
    220268
    221 #ifdef notdef
    222     trace("Entering FillBuffer (mark=%d, fill=%d)\n", readPtr->mark,
     269#if READTRACE
     270    Debug("Entering FillBuffer (mark=%d, fill=%d)\n", readPtr->mark,
    223271          readPtr->fill);
    224272#endif
     
    242290    if (nRead <= 0) {
    243291        if (errno != EAGAIN) {
    244 #ifdef notdef
    245             trace("in FillBuffer: read failed %d: %s", errno, strerror(errno));
    246             trace("Leaving FillBuffer FAIL(read %d bytes) mark=%d, fill=%d\n",
     292#if READTRACE
     293            Debug("in FillBuffer: read failed %d: %s", errno, strerror(errno));
     294            Debug("Leaving FillBuffer FAIL(read %d bytes) mark=%d, fill=%d\n",
    247295                  nRead, readPtr->mark, readPtr->fill);
    248296#endif
     
    252300    }
    253301    readPtr->fill += nRead;
    254 #ifdef notdef
    255     trace("Leaving FillBuffer (read %d bytes) mark=%d, fill=%d\n",
     302#if READTRACE
     303    Debug("Leaving FillBuffer (read %d bytes) mark=%d, fill=%d\n",
    256304          nRead, readPtr->mark, readPtr->fill);
    257305#endif
     
    265313    int status;
    266314
    267 #ifdef notdef
    268     trace("Entering GetLine (mark=%d, fill=%d)\n",readPtr->mark, readPtr->fill);
     315#if READTRACE
     316    Debug("Entering GetLine (mark=%d, fill=%d)\n",readPtr->mark, readPtr->fill);
    269317#endif
    270318    status = BUFFER_OK;
    271319    for (;;) {
    272320        /* Look for the next newline (the next full line). */
    273 #ifdef notdef
    274         trace("in GetLine: mark=%d fill=%d\n", readPtr->mark, readPtr->fill);
     321#if READTRACE
     322        Debug("in GetLine: mark=%d fill=%d\n", readPtr->mark, readPtr->fill);
    275323#endif
    276324        for (i = readPtr->mark; i < readPtr->fill; i++) {
     
    283331                *nBytesPtr = i - readPtr->mark;
    284332                readPtr->mark = i;
    285 #ifdef notdef
    286                 trace("Leaving GetLine(%.*s)\n", *nBytesPtr, p);
     333#if READTRACE
     334                Debug("Leaving GetLine(%.*s)\n", *nBytesPtr, p);
    287335#endif
    288336                return p;
     
    300348        }
    301349    }
    302 #ifdef notdef
    303     trace("Leaving GetLine failed to read line\n");
     350#if READTRACE
     351    Debug("Leaving GetLine failed to read line\n");
    304352#endif
    305353    *nBytesPtr = BUFFER_CONTINUE;
     
    310358GetBytes(ReadBuffer *readPtr, char *out, int nBytes)
    311359{
    312 #ifdef notdef
    313     trace("Entering GetBytes(%d)\n", nBytes);
     360#if READTRACE
     361    Debug("Entering GetBytes(%d)\n", nBytes);
    314362#endif
    315363    while (nBytes > 0) {
     
    329377        if (nBytes == 0) {
    330378            /* Received requested # bytes. */
    331 #ifdef notdef
    332             trace("Leaving GetBytes(%d)\n", nBytes);
     379#if READTRACE
     380            Debug("Leaving GetBytes(%d)\n", nBytes);
    333381#endif
    334382            return BUFFER_OK;
     
    339387            return BUFFER_ERROR;
    340388        }
    341 #ifdef notdef
    342         trace("in GetBytes: mark=%d fill=%d\n", readPtr->mark, readPtr->fill);
     389#if READTRACE
     390        Debug("in GetBytes: mark=%d fill=%d\n", readPtr->mark, readPtr->fill);
    343391#endif
    344392    }
    345 #ifdef notdef
    346     trace("Leaving GetBytes(%d)\n", nBytes);
     393#if READTRACE
     394    Debug("Leaving GetBytes(%d)\n", nBytes);
    347395#endif
    348396    return BUFFER_OK;
     
    376424    sprintf(cmd, "/bin/rm -rf /tmp/pymol%d", getpid());
    377425    if (system(cmd) < 0) {
    378         trace("can't delete tmp directory: %s\n", strerror(errno));
     426        ERROR("can't delete tmp directory: %s\n", strerror(errno));
    379427    }
    380428}
     
    389437        return proxyPtr->status;
    390438    }
    391 #ifndef notdef
    392     trace("Entering Expect(want=\"%s\", maxSize=%d)\n", match, maxSize);
     439#if EXPECTTRACE
     440    Debug("Entering Expect(want=\"%s\", maxSize=%d)\n", match, maxSize);
    393441#endif
    394442    c = match[0];
     
    400448        line = GetLine(&proxyPtr->server, &nBytes);
    401449        if (line != NULL) {
    402 #ifndef notdef
    403             trace("pymol says (read %d bytes):%.*s", nBytes, nBytes, line);
     450#if EXPECTTRACE
     451            Debug("pymol says (read %d bytes):%.*s", nBytes, nBytes, line);
    404452#endif
    405453            if ((c == line[0]) && (strncmp(line, match, length) == 0)) {
     
    409457                memcpy(out, line, nBytes);
    410458                clear_error(proxyPtr);
    411 #ifndef notdef
    412                 trace("Leaving Expect: got (%.*s)\n", nBytes, out);
     459#if EXPECTTRACE
     460                Debug("Leaving Expect: got (%.*s)\n", nBytes, out);
    413461#endif
    414462                return BUFFER_OK;
     
    420468        }
    421469    }
    422     trace("Leaving Expect: failed to find (%s)\n", match);
     470    ERROR("Leaving Expect: failed to find (%s)\n", match);
    423471    proxyPtr->error = 2;
    424472    proxyPtr->status = TCL_ERROR;
     
    556604    start = CVT2SECS(tv);
    557605
    558     trace("command from client is (%s)", cmd);
     606    Debug("command from client is (%s)", cmd);
    559607    result = Tcl_Eval(interp, cmd);
    560608
     
    574622    imgPtr = malloc(sizeof(Image) + dataLength);
    575623    if (imgPtr == NULL) {
    576         fprintf(stderr, "can't allocate image of %lu bytes",
    577                 (unsigned long)(sizeof(Image) + dataLength));
     624        ERROR("can't allocate image of %lu bytes",
     625              (unsigned long)(sizeof(Image) + dataLength));
    578626        abort();
    579627    }
     
    605653
    606654    if (proxyPtr->tailPtr == NULL) {
    607         trace("Should not be here: no image available to write");
     655        ERROR("Should not be here: no image available to write");
    608656        return;
    609657    }
     
    613661        assert(imgPtr->nextPtr == NULL);
    614662        prevPtr = imgPtr->prevPtr;
    615 #ifdef notdef
    616         trace("WriteImage: want to write %d bytes.", imgPtr->bytesLeft);
     663#if WRITETRACE
     664        Debug("WriteImage: want to write %d bytes.", imgPtr->bytesLeft);
    617665#endif
    618666        for (bytesLeft = imgPtr->bytesLeft; bytesLeft > 0; /*empty*/) {
    619667            ssize_t nWritten;
    620 #ifdef notdef
    621             trace("WriteImage: try to write %d bytes.", bytesLeft);
     668#if WRITETRACE
     669            Debug("WriteImage: try to write %d bytes.", bytesLeft);
    622670#endif
    623671            nWritten = write(fd, imgPtr->data + imgPtr->nWritten, bytesLeft);
    624 #ifdef notdef
    625             trace("WriteImage: wrote %d bytes.", nWritten);
     672#if WRITETRACE
     673            Debug("WriteImage: wrote %d bytes.", nWritten);
    626674#endif
    627675            if (nWritten < 0) {
    628                 trace("Error writing fd(%d), %d/%s.", fd, errno,
     676                ERROR("Error writing fd(%d), %d/%s.", fd, errno,
    629677                      strerror(errno));
    630678                return;
     
    668716    va_end(ap);
    669717   
    670     trace("to-pymol>(%s) code=%d", buffer, result);
     718    Debug("to-pymol>(%s) code=%d", buffer, result);
    671719    script("%s\n", buffer);
    672720   
     
    676724    nWritten = write(proxyPtr->sin, buffer, length);
    677725    if (nWritten != length) {
    678         trace("short write to pymol (wrote=%d, should have been %d)",
     726        ERROR("short write to pymol (wrote=%d, should have been %d)",
    679727              nWritten, length);
    680728    }
     
    689737    result = Expect(proxyPtr, expect, buffer, BUFSIZ);
    690738    if (result == BUFFER_ERROR) {
    691         trace("timeout reading data (buffer=%s)", buffer);
     739        ERROR("timeout reading data (buffer=%s)", buffer);
    692740        proxyPtr->error = 1;
    693741        proxyPtr->status = TCL_ERROR;
     
    801849    Pymol(proxyPtr, "bmp -\n");
    802850    if (Expect(proxyPtr, "bmp image follows: ", buffer, BUFSIZ) != BUFFER_OK) {
    803         trace("can't find image follows line (%s)", buffer);
     851        ERROR("can't find image follows line (%s)", buffer);
    804852    }
    805853    if (sscanf(buffer, "bmp image follows: %d\n", &nBytes) != 1) {
     
    815863    strcpy(imgPtr->data, buffer);
    816864    if (GetBytes(&proxyPtr->server, imgPtr->data + length, nBytes)!=BUFFER_OK){
    817         trace("can't read %d bytes for \"image follows\" buffer", nBytes);
     865        ERROR("can't read %d bytes for \"image follows\" buffer", nBytes);
    818866        return  TCL_ERROR;
    819867    }
     
    12951343    strcpy(imgPtr->data, buffer);
    12961344    if (GetBytes(&proxyPtr->server, imgPtr->data + length, nBytes)!=BUFFER_OK){
    1297         trace("can't read %d bytes for \"image follows\" buffer", nBytes);
     1345        ERROR("can't read %d bytes for \"image follows\" buffer", nBytes);
    12981346        return  TCL_ERROR;
    12991347    }
     
    13541402    sprintf(buffer, "nv>image %d print \"%s\" %d\n", nBytes, token,
    13551403            proxyPtr->rockOffset);
    1356     trace("header is png is (%s)\n", buffer);
     1404    Debug("header is png is (%s)\n", buffer);
    13571405    length = strlen(buffer);
    13581406    imgPtr = NewImage(proxyPtr, nBytes + length);
    13591407    strcpy(imgPtr->data, buffer);
    13601408    if (GetBytes(&proxyPtr->server, imgPtr->data + length, nBytes)!=BUFFER_OK){
    1361         trace("can't read %d bytes for \"image follows\" buffer", nBytes);
     1409        ERROR("can't read %d bytes for \"image follows\" buffer", nBytes);
    13621410        return  TCL_ERROR;
    13631411    }
     
    19241972    child = fork();
    19251973    if (child < 0) {
    1926         fprintf(stderr, "can't fork process: %s\n", strerror(errno));
     1974        ERROR("can't fork process: %s\n", strerror(errno));
    19271975        return -3;
    19281976    }
     
    19511999       
    19522000        execvp(argv[0], argv);
    1953         trace("Failed to start pymol `%s'", argv[0]);
     2001        ERROR("Failed to start pymol `%s'", argv[0]);
    19542002        exit(-1);
    19552003    }
    19562004    stats.child = child;
     2005
     2006    Debug("Started %s DISPLAY=%s\n", argv[0], getenv("DISPLAY"));
    19572007
    19582008    /* close opposite end of pipe, these now belong to the child process  */
     
    19612011    close(serr[1]);
    19622012
     2013#ifdef notdef
    19632014    signal(SIGPIPE, SIG_IGN); /* ignore SIGPIPE (e.g. nanoscale terminates)*/
     2015#endif
    19642016
    19652017    memset(&proxy, 0, sizeof(PymolProxy));
     
    19732025    interp = Tcl_CreateInterp();
    19742026    if (CreateTmpDir(interp) != TCL_OK) {
    1975         trace(Tcl_GetStringResult(interp));
     2027        ERROR(Tcl_GetStringResult(interp));
    19762028    }
    19772029    Tcl_MakeSafe(interp);
     
    20072059    stats.start = end;
    20082060
     2061    if (write(cout, "PyMol 1.0\n", 10) != 10) {
     2062        ERROR("short write of signature");
     2063    }
     2064   
    20092065    // Main Proxy Loop
    20102066    //  accept tcl commands from socket
     
    20212077    status = waitpid(child, &result, WNOHANG);
    20222078    if (status == -1) {
    2023         trace("error waiting on pymol server to exit: %s", strerror(errno));
     2079        ERROR("error waiting on pymol server to exit: %s", strerror(errno));
    20242080    } else if (status == 0) {
    2025         trace("attempting to signal (SIGTERM) pymol server.");
     2081        ERROR("attempting to signal (SIGTERM) pymol server.");
    20262082        kill(-child, SIGTERM);          // Kill process group
    20272083        alarm(5);
     
    20302086       
    20312087        while ((status == -1) && (errno == EINTR)) {
    2032             trace("Attempting to signal (SIGKILL) pymol server.");
     2088            ERROR("Attempting to signal (SIGKILL) pymol server.");
    20332089            kill(-child, SIGKILL);      // Kill process group
    20342090            alarm(10);
     
    20382094    }
    20392095   
    2040     trace("pymol server process ended (result=%d)", result);
     2096    ERROR("pymol server process ended (result=%d)", result);
    20412097    DestroyTmpDir();
    20422098
     
    20502106}
    20512107
    2052 #ifdef STANDALONE
     2108
     2109static void
     2110PollForEvents(PymolProxy *proxyPtr)
     2111{
     2112    Tcl_DString clientCmds;
     2113    struct pollfd pollResults[4];
     2114    int flags;
     2115
     2116    flags = fcntl(proxyPtr->cin, F_GETFL);
     2117    fcntl(proxyPtr->cin, F_SETFL, flags|O_NONBLOCK);
     2118
     2119    pollResults[0].fd = proxyPtr->cout;
     2120    pollResults[1].fd = proxyPtr->sout;
     2121    pollResults[2].fd = proxyPtr->serr;
     2122    pollResults[0].events = pollResults[1].events =
     2123        pollResults[2].events = POLLIN;
     2124
     2125    pollResults[3].fd = proxyPtr->cin;
     2126    pollResults[3].events = POLLOUT;
     2127
     2128    InitBuffer(&proxyPtr->client, proxyPtr->cout);
     2129    InitBuffer(&proxyPtr->server, proxyPtr->sout);
     2130
     2131    Tcl_DStringInit(&clientCmds);
     2132    for (;;) {
     2133        int timeout, nChannels;
     2134
     2135        nChannels =  (proxyPtr->headPtr != NULL) ? 4 : 3;
     2136
     2137#define PENDING_TIMEOUT         10  /* milliseconds. */
     2138        timeout = (proxyPtr->flags & UPDATE_PENDING) ? PENDING_TIMEOUT : -1;
     2139        nChannels = poll(pollResults, nChannels, timeout);
     2140        if (nChannels < 0) {
     2141            ERROR("POLL ERROR: %s", strerror(errno));
     2142            continue;           /* or exit? */
     2143        }
     2144
     2145        /*
     2146         * The next two sections are to drain any leftover data in
     2147         * the pymol server process' stdout or stderr.  We don't want the
     2148         * the pymol server to block writing to stderr or stdout.
     2149         */
     2150        if (pollResults[1].revents & POLLIN) {
     2151            int nBytes;
     2152            char *line;
     2153           
     2154            Debug("Reading pymol stdout\n");
     2155            /* Don't care what's in the server output buffer. */
     2156            FlushBuffer(&proxyPtr->server);
     2157            line = GetLine(&proxyPtr->server, &nBytes);
     2158            if (line != NULL) {
     2159                Debug("STDOUT>%.*s", nBytes, line);
     2160                Debug("Done with pymol stdout\n");
     2161            } else if (nBytes == BUFFER_CONTINUE) {
     2162                Debug("Done with pymol stdout\n");
     2163            } else {
     2164                ERROR("Failed reading pymol stdout (nBytes=%d)\n", nBytes);
     2165                goto error;     /* Get out on EOF or error. */
     2166            }
     2167        }
     2168
     2169        if (pollResults[2].revents & POLLIN) {
     2170            ssize_t nRead;
     2171            char buf[BUFSIZ];
     2172           
     2173            Debug("Reading pymol stderr\n");
     2174            /* pyMol Stderr Connection: pymol standard error output */
     2175           
     2176            nRead = read(pollResults[2].fd, buf, BUFSIZ-1);
     2177            if (nRead <= 0) {
     2178                ERROR("unexpected read error from server (stderr): %s",
     2179                      strerror(errno));
     2180                if (errno != EINTR) {
     2181                    ERROR("lost connection (stderr) to pymol server.");
     2182                    return;
     2183                }
     2184            }
     2185            buf[nRead] = '\0';
     2186            Debug("stderr>%s", buf);
     2187            Debug("Done reading pymol stderr\n");
     2188        }
     2189
     2190        /* We have some descriptors ready. */
     2191        if (pollResults[0].revents & POLLIN) {
     2192            Debug("Reading client stdout\n");
     2193            for (;;) {
     2194                int nBytes;
     2195                char *line;
     2196               
     2197                line = GetLine(&proxyPtr->client, &nBytes);
     2198                if (line != NULL) {
     2199                    const char *cmd;
     2200
     2201                    Tcl_DStringAppend(&clientCmds, line, nBytes);
     2202                    cmd = Tcl_DStringValue(&clientCmds);
     2203                    if (Tcl_CommandComplete(cmd)) {
     2204                        /* May execute more than one command. */
     2205                        ExecuteCommand(proxyPtr->interp, cmd);
     2206                        Tcl_DStringSetLength(&clientCmds, 0);
     2207                    }
     2208                    continue;
     2209                }
     2210                if (nBytes == BUFFER_CONTINUE) {
     2211                    break;
     2212                }
     2213                ERROR("Failed reading client stdout (nBytes=%d)\n", nBytes);
     2214                goto error;             /* Get out on EOF or error. */
     2215            }
     2216            Debug("done with client stdout\n");
     2217        }
     2218        /*
     2219         * Write the currently queued image if there is one.
     2220         *
     2221         * We want to transmit the current image back to the client.  But if
     2222         * the client's busy (e.g. sending us another command), there's a
     2223         * chance we'll deadlock.  Therefore, the file descriptor is
     2224         * non-blocking and we write only what we can.  Must be careful not to
     2225         * refresh the image until we're done.
     2226         */
     2227
     2228        /* Handle all the pending setting changes now. */
     2229        UpdateSettings(proxyPtr);
     2230
     2231        /* Write the current image buffer. */
     2232        if (proxyPtr->headPtr == NULL) {
     2233            /* We might want to refresh the image if we're not currently
     2234             * transmitting an image back to the client. The image will be
     2235             * refreshed after the image has been completely transmitted. */
     2236            if ((nChannels == 0) || (proxyPtr->flags & FORCE_UPDATE)) {
     2237                if (proxyPtr->flags & UPDATE_PENDING) {
     2238                    Tcl_Eval(proxyPtr->interp, "bmp");
     2239                    proxyPtr->flags &= ~UPDATE_PENDING;
     2240                }
     2241                proxyPtr->flags &= ~FORCE_UPDATE;
     2242                continue;
     2243            }
     2244        }
     2245        if ((proxyPtr->headPtr != NULL) &&
     2246            (pollResults[3].revents & POLLOUT)) {
     2247            WriteImage(proxyPtr, pollResults[3].fd);
     2248        }
     2249    }
     2250 error:
     2251    Tcl_DStringFree(&clientCmds);
     2252    return;
     2253}
    20532254
    20542255int
     
    20722273}
    20732274
    2074 #endif
    2075 
    2076 
    2077 static void
    2078 PollForEvents(PymolProxy *proxyPtr)
    2079 {
    2080     Tcl_DString clientCmds;
    2081     struct pollfd pollResults[4];
    2082     int flags;
    2083 
    2084     flags = fcntl(proxyPtr->cin, F_GETFL);
    2085     fcntl(proxyPtr->cin, F_SETFL, flags|O_NONBLOCK);
    2086 
    2087     pollResults[0].fd = proxyPtr->cout;
    2088     pollResults[1].fd = proxyPtr->sout;
    2089     pollResults[2].fd = proxyPtr->serr;
    2090     pollResults[0].events = pollResults[1].events =
    2091         pollResults[2].events = POLLIN;
    2092 
    2093     pollResults[3].fd = proxyPtr->cin;
    2094     pollResults[3].events = POLLOUT;
    2095 
    2096     InitBuffer(&proxyPtr->client, proxyPtr->cout);
    2097     InitBuffer(&proxyPtr->server, proxyPtr->sout);
    2098 
    2099     Tcl_DStringInit(&clientCmds);
    2100     for (;;) {
    2101         int timeout, nChannels;
    2102 
    2103         nChannels =  (proxyPtr->headPtr != NULL) ? 4 : 3;
    2104 
    2105 #define PENDING_TIMEOUT         10  /* milliseconds. */
    2106         timeout = (proxyPtr->flags & UPDATE_PENDING) ? PENDING_TIMEOUT : -1;
    2107         nChannels = poll(pollResults, nChannels, timeout);
    2108         if (nChannels < 0) {
    2109             trace("POLL ERROR: %s", strerror(errno));
    2110             continue;           /* or exit? */
    2111         }
    2112 
    2113         /*
    2114          * The next two sections are to drain any leftover data in
    2115          * the pymol server process' stdout or stderr.  We don't want the
    2116          * the pymol server to block writing to stderr or stdout.
    2117          */
    2118         if (pollResults[1].revents & POLLIN) {
    2119             int nBytes;
    2120             char *line;
    2121            
    2122             trace("Reading pymol stdout\n");
    2123             /* Don't care what's in the server output buffer. */
    2124             FlushBuffer(&proxyPtr->server);
    2125             line = GetLine(&proxyPtr->server, &nBytes);
    2126             if (line != NULL) {
    2127                 trace("STDOUT>%.*s", nBytes, line);
    2128                 trace("Done with pymol stdout\n");
    2129             } else if (nBytes == BUFFER_CONTINUE) {
    2130                 trace("Done with pymol stdout\n");
    2131             } else {
    2132                 trace("Failed reading pymol stdout (nBytes=%d)\n", nBytes);
    2133                 goto error;     /* Get out on EOF or error. */
    2134             }
    2135         }
    2136 
    2137         if (pollResults[2].revents & POLLIN) {
    2138             ssize_t nRead;
    2139             char buf[BUFSIZ];
    2140            
    2141             trace("Reading pymol stderr\n");
    2142             /* pyMol Stderr Connection: pymol standard error output */
    2143            
    2144             nRead = read(pollResults[2].fd, buf, BUFSIZ-1);
    2145             if (nRead <= 0) {
    2146                 trace("unexpected read error from server (stderr): %s",
    2147                       strerror(errno));
    2148                 if (errno != EINTR) {
    2149                     trace("lost connection (stderr) to pymol server.");
    2150                     return;
    2151                 }
    2152             }
    2153             buf[nRead] = '\0';
    2154             trace("stderr>%s", buf);
    2155             trace("Done reading pymol stderr\n");
    2156         }
    2157 
    2158         /* We have some descriptors ready. */
    2159         if (pollResults[0].revents & POLLIN) {
    2160             trace("Reading client stdout\n");
    2161             for (;;) {
    2162                 int nBytes;
    2163                 char *line;
    2164                
    2165                 line = GetLine(&proxyPtr->client, &nBytes);
    2166                 if (line != NULL) {
    2167                     const char *cmd;
    2168 
    2169                     Tcl_DStringAppend(&clientCmds, line, nBytes);
    2170                     cmd = Tcl_DStringValue(&clientCmds);
    2171                     if (Tcl_CommandComplete(cmd)) {
    2172                         /* May execute more than one command. */
    2173                         ExecuteCommand(proxyPtr->interp, cmd);
    2174                         Tcl_DStringSetLength(&clientCmds, 0);
    2175                     }
    2176                     continue;
    2177                 }
    2178                 if (nBytes == BUFFER_CONTINUE) {
    2179                     break;
    2180                 }
    2181                 trace("Failed reading client stdout (nBytes=%d)\n", nBytes);
    2182                 goto error;             /* Get out on EOF or error. */
    2183             }
    2184             trace("done with client stdout\n");
    2185         }
    2186         /*
    2187          * Write the currently queued image if there is one.
    2188          *
    2189          * We want to transmit the current image back to the client.  But if
    2190          * the client's busy (e.g. sending us another command), there's a
    2191          * chance we'll deadlock.  Therefore, the file descriptor is
    2192          * non-blocking and we write only what we can.  Must be careful not to
    2193          * refresh the image until we're done.
    2194          */
    2195 
    2196         /* Handle all the pending setting changes now. */
    2197         UpdateSettings(proxyPtr);
    2198 
    2199         /* Write the current image buffer. */
    2200         if (proxyPtr->headPtr == NULL) {
    2201             /* We might want to refresh the image if we're not currently
    2202              * transmitting an image back to the client. The image will be
    2203              * refreshed after the image has been completely transmitted. */
    2204             if ((nChannels == 0) || (proxyPtr->flags & FORCE_UPDATE)) {
    2205                 if (proxyPtr->flags & UPDATE_PENDING) {
    2206                     Tcl_Eval(proxyPtr->interp, "bmp");
    2207                     proxyPtr->flags &= ~UPDATE_PENDING;
    2208                 }
    2209                 proxyPtr->flags &= ~FORCE_UPDATE;
    2210                 continue;
    2211             }
    2212         }
    2213         if ((proxyPtr->headPtr != NULL) &&
    2214             (pollResults[3].revents & POLLOUT)) {
    2215             WriteImage(proxyPtr, pollResults[3].fd);
    2216         }
    2217     }
    2218  error:
    2219     Tcl_DStringFree(&clientCmds);
    2220     return;
    2221 }
    2222 
  • branches/blt4/packages/vizservers/vtkvis/ColorMap.cpp

    r2322 r2409  
    248248 * \brief Perform linear interpolation of two color control points
    249249 */
    250 void ColorMap::lerp(double *result, const ControlPoint& cp1, const ControlPoint& cp2, double value)
     250void ColorMap::lerp(double *result,
     251                    const ControlPoint& cp1,
     252                    const ControlPoint& cp2,
     253                    double value)
    251254{
    252255    double factor = (value - cp1.value) / (cp2.value - cp1.value);
     
    259262 * \brief Perform linear interpolation of two opacity control points
    260263 */
    261 void ColorMap::lerp(double *result, const OpacityControlPoint& cp1, const OpacityControlPoint& cp2, double value)
     264void ColorMap::lerp(double *result,
     265                    const OpacityControlPoint& cp1,
     266                    const OpacityControlPoint& cp2,
     267                    double value)
    262268{
    263269    double factor = (value - cp1.value) / (cp2.value - cp1.value);
  • branches/blt4/packages/vizservers/vtkvis/Makefile.in

    r2322 r2409  
    2323MKDIR_P         = @MKDIR_P@
    2424
    25 GL_LIB_SPEC     = -lGL
     25GL_LIB_SPEC     = -lGL -lm
    2626
    2727TCL_LIB_SPEC    = @TCL_LIB_SPEC@
     
    3232VTK_INC_SPEC    = @VTK_INC_SPEC@
    3333
    34 LD_RUN_PATH     = $(VTK_LIB_DIR)
     34LD_RUN_PATH     = $(VTK_LIB_DIR):$(libdir)
    3535
    3636LIBS            = \
     
    5151USE_OFFSCREEN_RENDERING = yes
    5252
    53 EXTRA_CFLAGS    = -Wall -Wno-deprecated #vtk uses deprecated strstream header (instead of sstream)
     53#vtk uses deprecated strstream header (instead of sstream)
     54EXTRA_CFLAGS    = -Wall -Wno-deprecated
    5455DEFINES         =
    5556ifdef DEBUG
     
    129130ColorMap.o: ColorMap.h RpMolecule.h Trace.h
    130131PPMWriter.o: PPMWriter.h Trace.h
    131 RpContour2D.o: RpContour2D.h RpVtkDataSet.h Trace.h
    132 RpContour3D.o: RpContour3D.h RpVtkDataSet.h Trace.h
    133 RpGlyphs.o: RpGlyphs.h RpVtkDataSet.h ColorMap.h Trace.h
    134 RpHeightMap.o: RpHeightMap.h RpVtkDataSet.h Trace.h
    135 RpLIC.o: RpLIC.h RpVtkDataSet.h Trace.h RpVtkRenderServer.h
    136 RpMolecule.o: RpMolecule.h RpMoleculeData.h RpVtkDataSet.h ColorMap.h Trace.h
    137 RpPolyData.o: RpPolyData.h RpVtkDataSet.h Trace.h
    138 RpPseudoColor.o: RpPseudoColor.h RpVtkDataSet.h Trace.h
    139 RpStreamlines.o: RpStreamlines.h RpVtkDataSet.h Trace.h
    140 RpVolume.o: RpVolume.h RpVtkDataSet.h ColorMap.h Trace.h
     132RpContour2D.o: RpContour2D.h RpVtkGraphicsObject.h RpVtkDataSet.h Trace.h
     133RpContour3D.o: RpContour3D.h RpVtkGraphicsObject.h RpVtkDataSet.h Trace.h
     134RpGlyphs.o: RpGlyphs.h RpVtkGraphicsObject.h RpVtkDataSet.h ColorMap.h Trace.h
     135RpHeightMap.o: RpHeightMap.h RpVtkGraphicsObject.h RpVtkDataSet.h Trace.h
     136RpLIC.o: RpLIC.h RpVtkGraphicsObject.h RpVtkDataSet.h Trace.h RpVtkRenderServer.h
     137RpMolecule.o: RpMolecule.h RpMoleculeData.h RpVtkGraphicsObject.h RpVtkDataSet.h ColorMap.h Trace.h
     138RpPolyData.o: RpPolyData.h RpVtkGraphicsObject.h RpVtkDataSet.h Trace.h
     139RpPseudoColor.o: RpPseudoColor.h RpVtkGraphicsObject.h RpVtkDataSet.h Trace.h
     140RpStreamlines.o: RpStreamlines.h RpVtkGraphicsObject.h RpVtkDataSet.h Trace.h
     141RpVolume.o: RpVolume.h RpVtkGraphicsObject.h RpVtkDataSet.h ColorMap.h Trace.h
    141142RpVtkDataSet.o: RpVtkDataSet.h Trace.h
    142143RpVtkRenderer.o: RpVtkRenderer.h RpVtkDataSet.h RpContour2D.h RpContour3D.h RpGlyphs.h RpHeightMap.h RpLIC.h RpMolecule.h RpPolyData.h RpPseudoColor.h RpStreamlines.h RpVolume.h ColorMap.h Trace.h
  • branches/blt4/packages/vizservers/vtkvis/RpContour2D.cpp

    r2322 r2409  
    2626
    2727Contour2D::Contour2D() :
    28     _dataSet(NULL),
    29     _numContours(0),
    30     _edgeWidth(1.0f),
    31     _opacity(1.0)
     28    VtkGraphicsObject(),
     29    _numContours(0)
    3230{
    3331    _dataRange[0] = 0;
    3432    _dataRange[1] = 1;
    35     _edgeColor[0] = 0;
    36     _edgeColor[1] = 0;
    37     _edgeColor[2] = 0;
    3833}
    3934
     
    6863
    6964/**
    70  * \brief Returns the DataSet this Contour2D renders
    71  */
    72 DataSet *Contour2D::getDataSet()
    73 {
    74     return _dataSet;
    75 }
    76 
    77 /**
    78  * \brief Get the VTK Prop for the contour lines
    79  */
    80 vtkProp *Contour2D::getProp()
    81 {
    82     return _contourActor;
    83 }
    84 
    85 /**
    8665 * \brief Create and initialize a VTK Prop to render isolines
    8766 */
    8867void Contour2D::initProp()
    8968{
    90     if (_contourActor == NULL) {
    91         _contourActor = vtkSmartPointer<vtkActor>::New();
    92         _contourActor->GetProperty()->EdgeVisibilityOn();
    93         _contourActor->GetProperty()->SetEdgeColor(_edgeColor[0], _edgeColor[1], _edgeColor[2]);
    94         _contourActor->GetProperty()->SetLineWidth(_edgeWidth);
    95         _contourActor->GetProperty()->SetOpacity(_opacity);
    96         _contourActor->GetProperty()->SetAmbient(.2);
    97         _contourActor->GetProperty()->LightingOff();
     69    if (_prop == NULL) {
     70        _prop = vtkSmartPointer<vtkActor>::New();
     71        vtkProperty *property = getActor()->GetProperty();
     72        property->EdgeVisibilityOn();
     73        property->SetEdgeColor(_edgeColor[0], _edgeColor[1], _edgeColor[2]);
     74        property->SetLineWidth(_edgeWidth);
     75        property->SetOpacity(_opacity);
     76        property->SetAmbient(.2);
     77        property->LightingOff();
    9878    }
    9979}
     
    189169        _contourMapper->SetResolveCoincidentTopologyToPolygonOffset();
    190170        _contourMapper->SetInputConnection(_contourFilter->GetOutputPort());
    191         _contourActor->SetMapper(_contourMapper);
     171        getActor()->SetMapper(_contourMapper);
    192172    }
    193173
     
    263243
    264244/**
    265  * \brief Turn on/off rendering of this contour set
    266  */
    267 void Contour2D::setVisibility(bool state)
    268 {
    269     if (_contourActor != NULL) {
    270         _contourActor->SetVisibility((state ? 1 : 0));
    271     }
    272 }
    273 
    274 /**
    275  * \brief Get visibility state of the contour set
    276  *
    277  * \return Is contour set visible?
    278  */
    279 bool Contour2D::getVisibility() const
    280 {
    281     if (_contourActor == NULL) {
    282         return false;
    283     } else {
    284         return (_contourActor->GetVisibility() != 0);
    285     }
    286 }
    287 
    288 /**
    289  * \brief Set opacity used to render contour lines
    290  */
    291 void Contour2D::setOpacity(double opacity)
    292 {
    293     _opacity = opacity;
    294     if (_contourActor != NULL)
    295         _contourActor->GetProperty()->SetOpacity(opacity);
    296 }
    297 
    298 /**
    299  * \brief Set RGB color of contour lines
    300  */
    301 void Contour2D::setEdgeColor(float color[3])
    302 {
    303     _edgeColor[0] = color[0];
    304     _edgeColor[1] = color[1];
    305     _edgeColor[2] = color[2];
    306     if (_contourActor != NULL)
    307         _contourActor->GetProperty()->SetEdgeColor(_edgeColor[0], _edgeColor[1], _edgeColor[2]);
    308 }
    309 
    310 /**
    311  * \brief Set pixel width of contour lines (may be a no-op)
    312  */
    313 void Contour2D::setEdgeWidth(float edgeWidth)
    314 {
    315     _edgeWidth = edgeWidth;
    316     if (_contourActor != NULL)
    317         _contourActor->GetProperty()->SetLineWidth(_edgeWidth);
    318 }
    319 
    320 /**
    321245 * \brief Set a group of world coordinate planes to clip rendering
    322246 *
     
    329253    }
    330254}
    331 
    332 /**
    333  * \brief Turn on/off lighting of this object
    334  */
    335 void Contour2D::setLighting(bool state)
    336 {
    337     if (_contourActor != NULL)
    338         _contourActor->GetProperty()->SetLighting((state ? 1 : 0));
    339 }
  • branches/blt4/packages/vizservers/vtkvis/RpContour2D.h

    r2302 r2409  
    1717#include <vector>
    1818
    19 #include "RpVtkDataSet.h"
     19#include "RpVtkGraphicsObject.h"
    2020
    2121namespace Rappture {
     
    2525 * \brief 2D Contour lines (isolines)
    2626 */
    27 class Contour2D {
     27class Contour2D : public VtkGraphicsObject {
    2828public:
    2929    Contour2D();
    3030    virtual ~Contour2D();
    3131
    32     void setDataSet(DataSet *dataset);
     32    virtual const char *getClassName() const
     33    {
     34        return "Contour2D";
     35    }
    3336
    34     DataSet *getDataSet();
     37    virtual void setDataSet(DataSet *dataset);
    3538
    36     vtkProp *getProp();
     39    virtual void setClippingPlanes(vtkPlaneCollection *planes);
    3740
    3841    void setContours(int numContours);
     
    4649    const std::vector<double>& getContourList() const;
    4750
    48     void setVisibility(bool state);
    49 
    50     bool getVisibility() const;
    51 
    52     void setOpacity(double opacity);
    53 
    54     void setEdgeColor(float color[3]);
    55 
    56     void setEdgeWidth(float edgeWidth);
    57 
    58     void setClippingPlanes(vtkPlaneCollection *planes);
    59 
    60     void setLighting(bool state);
    61 
    6251private:
    63     void initProp();
    64     void update();
    65 
    66     DataSet *_dataSet;
     52    virtual void initProp();
     53    virtual void update();
    6754
    6855    int _numContours;
     
    7057    double _dataRange[2];
    7158
    72     float _edgeColor[3];
    73     float _edgeWidth;
    74     double _opacity;
    7559    vtkSmartPointer<vtkContourFilter> _contourFilter;
    7660    vtkSmartPointer<vtkPolyDataMapper> _contourMapper;
    77     vtkSmartPointer<vtkActor> _contourActor;
    7861};
    7962
  • branches/blt4/packages/vizservers/vtkvis/RpContour3D.cpp

    r2322 r2409  
    2626
    2727Contour3D::Contour3D() :
    28     _dataSet(NULL),
    29     _numContours(0),
    30     _edgeWidth(1.0f),
    31     _opacity(1.0),
    32     _lighting(true)
     28    VtkGraphicsObject(),
     29    _numContours(0)
    3330{
    3431    _dataRange[0] = 0;
    3532    _dataRange[1] = 1;
    36     _color[0] = 0;
    37     _color[1] = 0;
    38     _color[2] = 1;
    39     _edgeColor[0] = 0;
    40     _edgeColor[1] = 0;
    41     _edgeColor[2] = 0;
     33    _color[0] = 0.0f;
     34    _color[1] = 0.0f;
     35    _color[2] = 1.0f;
    4236}
    4337
     
    7266
    7367/**
    74  * \brief Returns the DataSet this Contour3D renders
    75  */
    76 DataSet *Contour3D::getDataSet()
    77 {
    78     return _dataSet;
    79 }
    80 
    81 /**
    82  * \brief Get the VTK Prop for the isosurfaces
    83  */
    84 vtkProp *Contour3D::getProp()
    85 {
    86     return _contourActor;
    87 }
    88 
    89 /**
    9068 * \brief Create and initialize a VTK Prop to render isosurfaces
    9169 */
    9270void Contour3D::initProp()
    9371{
    94     if (_contourActor == NULL) {
    95         _contourActor = vtkSmartPointer<vtkActor>::New();
    96         _contourActor->GetProperty()->EdgeVisibilityOff();
    97         _contourActor->GetProperty()->SetColor(_color[0], _color[1], _color[2]);
    98         _contourActor->GetProperty()->SetEdgeColor(_edgeColor[0], _edgeColor[1], _edgeColor[2]);
    99         _contourActor->GetProperty()->SetLineWidth(_edgeWidth);
    100         _contourActor->GetProperty()->SetOpacity(_opacity);
    101         _contourActor->GetProperty()->SetAmbient(.2);
     72    if (_prop == NULL) {
     73        _prop = vtkSmartPointer<vtkActor>::New();
     74        vtkProperty *property = getActor()->GetProperty();
     75        property->EdgeVisibilityOff();
     76        property->SetColor(_color[0], _color[1], _color[2]);
     77        property->SetEdgeColor(_edgeColor[0], _edgeColor[1], _edgeColor[2]);
     78        property->SetLineWidth(_edgeWidth);
     79        property->SetOpacity(_opacity);
     80        property->SetAmbient(.2);
    10281        if (!_lighting)
    103             _contourActor->GetProperty()->LightingOff();
     82            property->LightingOff();
    10483    }
    10584}
     
    216195        _contourMapper->SetResolveCoincidentTopologyToPolygonOffset();
    217196        _contourMapper->SetInputConnection(_contourFilter->GetOutputPort());
    218         _contourActor->SetMapper(_contourMapper);
     197        getActor()->SetMapper(_contourMapper);
    219198    }
    220199
     
    317296
    318297/**
    319  * \brief Turn on/off rendering of this contour set
    320  */
    321 void Contour3D::setVisibility(bool state)
    322 {
    323     if (_contourActor != NULL) {
    324         _contourActor->SetVisibility((state ? 1 : 0));
    325     }
    326 }
    327 
    328 /**
    329  * \brief Get visibility state of the contour set
    330  *
    331  * \return Is contour set visible?
    332  */
    333 bool Contour3D::getVisibility() const
    334 {
    335     if (_contourActor == NULL) {
    336         return false;
    337     } else {
    338         return (_contourActor->GetVisibility() != 0);
    339     }
    340 }
    341 
    342 /**
    343  * \brief Set opacity used to render isosurfaces
    344  */
    345 void Contour3D::setOpacity(double opacity)
    346 {
    347     _opacity = opacity;
    348     if (_contourActor != NULL)
    349         _contourActor->GetProperty()->SetOpacity(opacity);
    350 }
    351 
    352 /**
    353  * \brief Switch between wireframe and surface representations
    354  */
    355 void Contour3D::setWireframe(bool state)
    356 {
    357     if (_contourActor != NULL) {
    358         if (state) {
    359             _contourActor->GetProperty()->SetRepresentationToWireframe();
    360             _contourActor->GetProperty()->LightingOff();
    361         } else {
    362             _contourActor->GetProperty()->SetRepresentationToSurface();
    363             _contourActor->GetProperty()->SetLighting((_lighting ? 1 : 0));
    364         }
    365     }
    366 }
    367 
    368 /**
    369  * \brief Set RGB color of isosurfaces
    370  */
    371 void Contour3D::setColor(float color[3])
    372 {
    373     _color[0] = color[0];
    374     _color[1] = color[1];
    375     _color[2] = color[2];
    376     if (_contourActor != NULL)
    377         _contourActor->GetProperty()->SetColor(_color[0], _color[1], _color[2]);
    378 }
    379 
    380 /**
    381  * \brief Turn on/off rendering of mesh edges
    382  */
    383 void Contour3D::setEdgeVisibility(bool state)
    384 {
    385     if (_contourActor != NULL) {
    386         _contourActor->GetProperty()->SetEdgeVisibility((state ? 1 : 0));
    387     }
    388 }
    389 
    390 /**
    391  * \brief Set RGB color of isosurface edges
    392  */
    393 void Contour3D::setEdgeColor(float color[3])
    394 {
    395     _edgeColor[0] = color[0];
    396     _edgeColor[1] = color[1];
    397     _edgeColor[2] = color[2];
    398     if (_contourActor != NULL)
    399         _contourActor->GetProperty()->SetEdgeColor(_edgeColor[0], _edgeColor[1], _edgeColor[2]);
    400 }
    401 
    402 /**
    403  * \brief Set pixel width of contour lines (may be a no-op)
    404  */
    405 void Contour3D::setEdgeWidth(float edgeWidth)
    406 {
    407     _edgeWidth = edgeWidth;
    408     if (_contourActor != NULL)
    409         _contourActor->GetProperty()->SetLineWidth(_edgeWidth);
    410 }
    411 
    412 /**
    413298 * \brief Set a group of world coordinate planes to clip rendering
    414299 *
     
    421306    }
    422307}
    423 
    424 /**
    425  * \brief Turn on/off lighting of this object
    426  */
    427 void Contour3D::setLighting(bool state)
    428 {
    429     _lighting = state;
    430     if (_contourActor != NULL)
    431         _contourActor->GetProperty()->SetLighting((state ? 1 : 0));
    432 }
  • branches/blt4/packages/vizservers/vtkvis/RpContour3D.h

    r2302 r2409  
    1818#include <vector>
    1919
    20 #include "RpVtkDataSet.h"
     20#include "RpVtkGraphicsObject.h"
    2121
    2222namespace Rappture {
     
    2626 * \brief 3D Contour isosurfaces (geometry)
    2727 */
    28 class Contour3D {
     28class Contour3D : public VtkGraphicsObject {
    2929public:
    3030    Contour3D();
    3131    virtual ~Contour3D();
    3232
    33     void setDataSet(DataSet *dataset);
     33    virtual const char *getClassName() const
     34    {
     35        return "Contour3D";
     36    }
    3437
    35     DataSet *getDataSet();
     38    virtual void setDataSet(DataSet *dataset);
    3639
    37     vtkProp *getProp();
     40    virtual void setClippingPlanes(vtkPlaneCollection *planes);
    3841
    3942    void setContours(int numContours);
     
    4750    const std::vector<double>& getContourList() const;
    4851
    49     void setVisibility(bool state);
    50 
    51     bool getVisibility() const;
    52 
    53     void setOpacity(double opacity);
    54 
    55     void setWireframe(bool state);
    56 
    5752    void setLookupTable(vtkLookupTable *lut);
    5853
    5954    vtkLookupTable *getLookupTable();
    6055
    61     void setColor(float color[3]);
    62 
    63     void setEdgeVisibility(bool state);
    64 
    65     void setEdgeColor(float color[3]);
    66 
    67     void setEdgeWidth(float edgeWidth);
    68 
    69     void setClippingPlanes(vtkPlaneCollection *planes);
    70 
    71     void setLighting(bool state);
    72 
    7356private:
    74     void initProp();
    75     void update();
    76 
    77     DataSet *_dataSet;
     57    virtual void initProp();
     58    virtual void update();
    7859
    7960    int _numContours;
     
    8162    double _dataRange[2];
    8263
    83     float _color[3];
    84     float _edgeColor[3];
    85     float _edgeWidth;
    86     double _opacity;
    87     bool _lighting;
    88 
    8964    vtkSmartPointer<vtkContourFilter> _contourFilter;
    9065    vtkSmartPointer<vtkLookupTable> _lut;
    9166    vtkSmartPointer<vtkPolyDataMapper> _contourMapper;
    92     vtkSmartPointer<vtkActor> _contourActor;
    9367};
    9468
  • branches/blt4/packages/vizservers/vtkvis/RpGlyphs.cpp

    r2322 r2409  
    2727
    2828Glyphs::Glyphs() :
    29     _dataSet(NULL),
    30     _opacity(1.0),
    31     _lighting(true),
     29    VtkGraphicsObject(),
    3230    _glyphShape(ARROW),
    33     _scaleFactor(1.0)
    34 {
     31    _scaleFactor(1.0),
     32    _colorMode(COLOR_BY_SCALAR)
     33{
     34    _faceCulling = true;
    3535}
    3636
    3737Glyphs::~Glyphs()
    3838{
    39 }
    40 
    41 /**
    42  * \brief Get the VTK Prop for the Glyphs
    43  */
    44 vtkProp *Glyphs::getProp()
    45 {
    46     return _prop;
    47 }
    48 
    49 /**
    50  * \brief Create and initialize a VTK Prop to render Glyphs
    51  */
    52 void Glyphs::initProp()
    53 {
    54     if (_prop == NULL) {
    55         _prop = vtkSmartPointer<vtkActor>::New();
    56         _prop->GetProperty()->EdgeVisibilityOff();
    57         _prop->GetProperty()->SetOpacity(_opacity);
    58         _prop->GetProperty()->SetAmbient(.2);
    59         if (!_lighting)
    60             _prop->GetProperty()->LightingOff();
    61     }
    62 }
    63 
    64 /**
    65  * \brief Specify input DataSet
    66  *
    67  * The DataSet must be a PolyData point set
    68  * with vectors and/or scalars
    69  */
    70 void Glyphs::setDataSet(DataSet *dataSet)
    71 {
    72     if (_dataSet != dataSet) {
    73         _dataSet = dataSet;
    74         update();
    75     }
    76 }
    77 
    78 /**
    79  * \brief Returns the DataSet this Glyphs renders
    80  */
    81 DataSet *Glyphs::getDataSet()
    82 {
    83     return _dataSet;
    8439}
    8540
     
    12782        return;
    12883    }
     84
     85    if (_glyphShape == ICOSAHEDRON ||
     86        _glyphShape == TETRAHEDRON) {
     87        // These shapes are created with front faces pointing inside
     88        setCullFace(CULL_FRONT);
     89    } else {
     90        setCullFace(CULL_BACK);
     91    }
     92
    12993    if (_glyphGenerator != NULL) {
    13094        _glyphGenerator->SetSourceConnection(_glyphSource->GetOutputPort());
     
    142106
    143107    vtkDataSet *ds = _dataSet->getVtkDataSet();
    144     double dataRange[2];
    145     _dataSet->getDataRange(dataRange);
    146108
    147109    if (_glyphGenerator == NULL) {
    148110        _glyphGenerator = vtkSmartPointer<vtkGlyph3D>::New();
    149111    }
     112
     113    initProp();
    150114
    151115    setGlyphShape(_glyphShape);
     
    180144
    181145    if (ds->GetPointData()->GetScalars() == NULL) {
     146        TRACE("Setting color mode to vector magnitude");
    182147        _glyphGenerator->SetColorModeToColorByVector();
    183     } else {
     148        _colorMode = COLOR_BY_VECTOR;
     149    } else {
     150        TRACE("Setting color mode to scalar");
    184151        _glyphGenerator->SetColorModeToColorByScalar();
    185      }
     152        _colorMode = COLOR_BY_SCALAR;
     153    }
    186154    if (_glyphShape == SPHERE) {
    187155        _glyphGenerator->OrientOff();
     
    212180
    213181    if (ds->GetPointData()->GetScalars() == NULL) {
    214         _pdMapper->UseLookupTableScalarRangeOff();
    215     } else {
     182        double dataRange[2];
     183        _dataSet->getVectorMagnitudeRange(dataRange);
    216184        _lut->SetRange(dataRange);
    217         _pdMapper->UseLookupTableScalarRangeOn();
    218     }
    219 
     185        //_pdMapper->SetScalarModeToUsePointFieldData();
     186        //_pdMapper->SelectColorArray(ds->GetPointData()->GetVectors()->GetName());
     187    } else {
     188        double dataRange[2];
     189        _dataSet->getDataRange(dataRange);
     190        _lut->SetRange(dataRange);
     191        //_pdMapper->SetScalarModeToDefault();
     192    }
     193
     194    //_lut->SetVectorModeToMagnitude();
    220195    _pdMapper->SetLookupTable(_lut);
    221 
    222     initProp();
    223 
    224     _prop->SetMapper(_pdMapper);
     196    _pdMapper->UseLookupTableScalarRangeOn();
     197
     198    getActor()->SetMapper(_pdMapper);
    225199    _pdMapper->Update();
     200}
     201
     202/**
     203 * \brief Control how glyphs are scaled
     204 */
     205void Glyphs::setScalingMode(ScalingMode mode)
     206{
     207    if (_glyphGenerator != NULL) {
     208        switch (mode) {
     209        case SCALE_BY_SCALAR:
     210            _glyphGenerator->SetScaleModeToScaleByScalar();
     211            _glyphGenerator->ScalingOn();
     212            break;
     213        case SCALE_BY_VECTOR:
     214            _glyphGenerator->SetScaleModeToScaleByVector();
     215            _glyphGenerator->ScalingOn();
     216            break;
     217        case SCALE_BY_VECTOR_COMPONENTS:
     218            _glyphGenerator->SetScaleModeToScaleByVectorComponents();
     219            _glyphGenerator->ScalingOn();
     220            break;
     221        case SCALING_OFF:
     222        default:
     223            _glyphGenerator->SetScaleModeToDataScalingOff();
     224            _glyphGenerator->ScalingOff();
     225        }
     226        _pdMapper->Update();
     227    }
     228}
     229
     230/**
     231 * \brief Control how glyphs are colored
     232 */
     233void Glyphs::setColorMode(ColorMode mode)
     234{
     235    _colorMode = mode;
     236    if (_glyphGenerator != NULL) {
     237        switch (mode) {
     238        case COLOR_BY_SCALE:
     239            _glyphGenerator->SetColorModeToColorByScale();
     240            _pdMapper->ScalarVisibilityOn();
     241            break;
     242        case COLOR_BY_VECTOR: {
     243            _glyphGenerator->SetColorModeToColorByVector();
     244           _pdMapper->ScalarVisibilityOn();
     245            double dataRange[2];
     246            _dataSet->getVectorMagnitudeRange(dataRange);
     247            _lut->SetRange(dataRange);
     248        }
     249            break;
     250        case COLOR_BY_SCALAR: {
     251            _glyphGenerator->SetColorModeToColorByScalar();
     252           _pdMapper->ScalarVisibilityOn();
     253            double dataRange[2];
     254            _dataSet->getDataRange(dataRange);
     255            _lut->SetRange(dataRange);
     256        }
     257            break;
     258        case COLOR_CONSTANT:
     259        default:
     260            _pdMapper->ScalarVisibilityOff();
     261        }
     262        _pdMapper->Update();
     263    }
    226264}
    227265
     
    257295    }
    258296
     297    switch (_colorMode) {
     298    case COLOR_BY_VECTOR: {
     299        double dataRange[2];
     300        _dataSet->getVectorMagnitudeRange(dataRange);
     301        _lut->SetRange(dataRange);
     302    }
     303        break;
     304    case COLOR_BY_SCALAR:
     305    default: {
     306        double dataRange[2];
     307        _dataSet->getDataRange(dataRange);
     308        _lut->SetRange(dataRange);
     309    }
     310        break;
     311    }
     312
    259313    if (_pdMapper != NULL) {
    260314        _pdMapper->SetLookupTable(_lut);
    261315    }
    262 }
    263 
    264 /**
    265  * \brief Turn on/off rendering of this Glyphs
    266  */
    267 void Glyphs::setVisibility(bool state)
    268 {
    269     if (_prop != NULL) {
    270         _prop->SetVisibility((state ? 1 : 0));
    271     }
    272 }
    273 
    274 /**
    275  * \brief Get visibility state of the Glyphs
    276  *
    277  * \return Are the glyphs visible?
    278  */
    279 bool Glyphs::getVisibility()
    280 {
    281     if (_prop == NULL) {
    282         return false;
    283     } else {
    284         return (_prop->GetVisibility() != 0);
    285     }
    286 }
    287 
    288 /**
    289  * \brief Set opacity used to render the Glyphs
    290  */
    291 void Glyphs::setOpacity(double opacity)
    292 {
    293     _opacity = opacity;
    294     if (_prop != NULL)
    295         _prop->GetProperty()->SetOpacity(opacity);
    296 }
    297 
    298 /**
    299  * \brief Get opacity used to render the Glyphs
    300  */
    301 double Glyphs::getOpacity()
    302 {
    303     return _opacity;
    304316}
    305317
     
    315327    }
    316328}
    317 
    318 /**
    319  * \brief Turn on/off lighting of this object
    320  */
    321 void Glyphs::setLighting(bool state)
    322 {
    323     _lighting = state;
    324     if (_prop != NULL)
    325         _prop->GetProperty()->SetLighting((state ? 1 : 0));
    326 }
  • branches/blt4/packages/vizservers/vtkvis/RpGlyphs.h

    r2322 r2409  
    1818#include <vtkPlaneCollection.h>
    1919
    20 #include "RpVtkDataSet.h"
     20#include "RpVtkGraphicsObject.h"
    2121#include "ColorMap.h"
    2222
     
    2626/**
    2727 * \brief Oriented and scaled 3D glyph shapes
     28 *
     29 * The DataSet must be a PolyData point set
     30 * with vectors and/or scalars
    2831 */
    29 class Glyphs {
     32class Glyphs : public VtkGraphicsObject {
    3033public:
    3134    enum GlyphShape {
     
    4043        TETRAHEDRON
    4144    };
     45    enum ScalingMode {
     46        SCALE_BY_SCALAR,
     47        SCALE_BY_VECTOR,
     48        SCALE_BY_VECTOR_COMPONENTS,
     49        SCALING_OFF
     50    };
     51    enum ColorMode {
     52        COLOR_BY_SCALE,
     53        COLOR_BY_SCALAR,
     54        COLOR_BY_VECTOR,
     55        COLOR_CONSTANT
     56    };
    4257
    4358    Glyphs();
    4459    virtual ~Glyphs();
    4560
    46     void setDataSet(DataSet *dataset);
     61    virtual const char *getClassName() const
     62    {
     63        return "Glyphs";
     64    }
    4765
    48     DataSet *getDataSet();
     66    virtual void setClippingPlanes(vtkPlaneCollection *planes);
    4967
    50     vtkProp *getProp();
     68    void setScalingMode(ScalingMode mode);
     69
     70    void setColorMode(ColorMode mode);
    5171
    5272    void setGlyphShape(GlyphShape shape);
     
    5878    vtkLookupTable *getLookupTable();
    5979
    60     void setOpacity(double opacity);
    61 
    62     double getOpacity();
    63 
    64     void setVisibility(bool state);
    65 
    66     bool getVisibility();
    67 
    68     void setClippingPlanes(vtkPlaneCollection *planes);
    69 
    70     void setLighting(bool state);
    71 
    7280private:
    73     void initProp();
    74     void update();
    75 
    76     DataSet *_dataSet;
    77 
    78     double _opacity;
    79     bool _lighting;
     81    virtual void update();
    8082
    8183    GlyphShape _glyphShape;
    8284    double _scaleFactor;
     85    ColorMode _colorMode;
    8386
    8487    vtkSmartPointer<vtkLookupTable> _lut;
    85     vtkSmartPointer<vtkActor> _prop;
    8688    vtkSmartPointer<vtkGlyph3D> _glyphGenerator;
    8789    vtkSmartPointer<vtkPolyDataAlgorithm> _glyphSource;
  • branches/blt4/packages/vizservers/vtkvis/RpHeightMap.cpp

    r2322 r2409  
    3636
    3737HeightMap::HeightMap() :
    38     _dataSet(NULL),
     38    VtkGraphicsObject(),
    3939    _numContours(0),
    40     _edgeWidth(1.0),
    4140    _contourEdgeWidth(1.0),
    42     _opacity(1.0),
    4341    _warpScale(1.0),
    4442    _sliceAxis(Z_AXIS),
     
    4745    _dataRange[0] = 0.0;
    4846    _dataRange[1] = 1.0;
    49     _edgeColor[0] = 0.0;
    50     _edgeColor[1] = 0.0;
    51     _edgeColor[2] = 0.0;
    52     _contourEdgeColor[0] = 1.0;
    53     _contourEdgeColor[1] = 0.0;
    54     _contourEdgeColor[2] = 0.0;
     47    _contourEdgeColor[0] = 1.0f;
     48    _contourEdgeColor[1] = 0.0f;
     49    _contourEdgeColor[2] = 0.0f;
    5550}
    5651
     
    107102
    108103/**
    109  * \brief Returns the DataSet this HeightMap renders
    110  */
    111 DataSet *HeightMap::getDataSet()
    112 {
    113     return _dataSet;
     104 * \brief Create and initialize VTK Props to render the colormapped dataset
     105 */
     106void HeightMap::initProp()
     107{
     108    if (_dsActor == NULL) {
     109        _dsActor = vtkSmartPointer<vtkActor>::New();
     110        _dsActor->GetProperty()->SetOpacity(_opacity);
     111        _dsActor->GetProperty()->SetEdgeColor(_edgeColor[0],
     112                                              _edgeColor[1],
     113                                              _edgeColor[2]);
     114        _dsActor->GetProperty()->SetLineWidth(_edgeWidth);
     115        _dsActor->GetProperty()->EdgeVisibilityOff();
     116        _dsActor->GetProperty()->SetAmbient(.2);
     117        _dsActor->GetProperty()->LightingOn();
     118    }
     119    if (_contourActor == NULL) {
     120        _contourActor = vtkSmartPointer<vtkActor>::New();
     121        _contourActor->GetProperty()->SetOpacity(_opacity);
     122        _contourActor->GetProperty()->SetEdgeColor(_contourEdgeColor[0],
     123                                                   _contourEdgeColor[1],
     124                                                   _contourEdgeColor[2]);
     125        _contourActor->GetProperty()->SetLineWidth(_contourEdgeWidth);
     126        _contourActor->GetProperty()->EdgeVisibilityOn();
     127        _contourActor->GetProperty()->SetAmbient(.2);
     128        _contourActor->GetProperty()->LightingOff();
     129    }
    114130}
    115131
     
    372388    _dsActor->SetMapper(_dsMapper);
    373389
    374     if (_props == NULL) {
    375         _props = vtkSmartPointer<vtkPropAssembly>::New();
    376         _props->AddPart(_dsActor);
    377         _props->AddPart(_contourActor);
     390    if (_prop == NULL) {
     391        _prop = vtkSmartPointer<vtkAssembly>::New();
     392        getAssembly()->AddPart(_dsActor);
     393        getAssembly()->AddPart(_contourActor);
    378394    }
    379395
     
    599615
    600616/**
    601  * \brief Get the VTK Prop for the colormapped dataset
    602  */
    603 vtkProp *HeightMap::getProp()
    604 {
    605     return _props;
    606 }
    607 
    608 /**
    609  * \brief Create and initialize VTK Props to render the colormapped dataset
    610  */
    611 void HeightMap::initProp()
    612 {
    613     if (_dsActor == NULL) {
    614         _dsActor = vtkSmartPointer<vtkActor>::New();
    615         _dsActor->GetProperty()->SetOpacity(_opacity);
    616         _dsActor->GetProperty()->SetEdgeColor(_edgeColor[0],
    617                                               _edgeColor[1],
    618                                               _edgeColor[2]);
    619         _dsActor->GetProperty()->SetLineWidth(_edgeWidth);
    620         _dsActor->GetProperty()->EdgeVisibilityOff();
    621         _dsActor->GetProperty()->SetAmbient(.2);
    622         _dsActor->GetProperty()->LightingOn();
    623     }
    624     if (_contourActor == NULL) {
    625         _contourActor = vtkSmartPointer<vtkActor>::New();
    626         _contourActor->GetProperty()->SetOpacity(_opacity);
    627         _contourActor->GetProperty()->SetEdgeColor(_contourEdgeColor[0],
    628                                                    _contourEdgeColor[1],
    629                                                    _contourEdgeColor[2]);
    630         _contourActor->GetProperty()->SetLineWidth(_contourEdgeWidth);
    631         _contourActor->GetProperty()->EdgeVisibilityOn();
    632         _contourActor->GetProperty()->SetAmbient(.2);
    633         _contourActor->GetProperty()->LightingOff();
    634     }
    635 }
    636 
    637 /**
    638617 * \brief Get the VTK colormap lookup table in use
    639618 */
     
    728707
    729708/**
    730  * \brief Turn on/off rendering of this HeightMap
    731  */
    732 void HeightMap::setVisibility(bool state)
    733 {
    734     if (_dsActor != NULL) {
    735         _dsActor->SetVisibility((state ? 1 : 0));
    736     }
    737     if (_contourActor != NULL) {
    738         _contourActor->SetVisibility((state ? 1 : 0));
    739     }
    740 }
    741 
    742 /**
    743  * \brief Get visibility state of the HeightMap
    744  *
    745  * \return Is HeightMap visible?
    746  */
    747 bool HeightMap::getVisibility()
    748 {
    749     if (_dsActor != NULL &&
    750         _dsActor->GetVisibility() != 0) {
    751         return true;
    752     } else if (_contourActor != NULL &&
    753                _contourActor->GetVisibility() != 0) {
    754         return true;
    755     }
    756     return false;
    757 }
    758 
    759 /**
    760  * \brief Set opacity used to render the HeightMap
    761  */
    762 void HeightMap::setOpacity(double opacity)
    763 {
    764     _opacity = opacity;
    765     if (_dsActor != NULL) {
    766         _dsActor->GetProperty()->SetOpacity(opacity);
    767     }
    768     if (_contourActor != NULL) {
    769         _contourActor->GetProperty()->SetOpacity(opacity);
    770     }
     709 * \brief Turn on/off lighting of this object
     710 */
     711void HeightMap::setLighting(bool state)
     712{
     713    if (_dsActor != NULL)
     714        _dsActor->GetProperty()->SetLighting((state ? 1 : 0));
    771715}
    772716
     
    852796}
    853797
    854 /**
    855  * \brief Turn on/off lighting of this object
    856  */
    857 void HeightMap::setLighting(bool state)
    858 {
    859     if (_dsActor != NULL)
    860         _dsActor->GetProperty()->SetLighting((state ? 1 : 0));
    861 }
  • branches/blt4/packages/vizservers/vtkvis/RpHeightMap.h

    r2302 r2409  
    2020#include <vtkExtractVOI.h>
    2121#include <vtkWarpScalar.h>
    22 #include <vtkPropAssembly.h>
     22#include <vtkAssembly.h>
    2323#include <vtkPolyData.h>
    2424
    2525#include <vector>
    2626
    27 #include "RpVtkDataSet.h"
     27#include "RpVtkGraphicsObject.h"
    2828
    2929namespace Rappture {
     
    3333 * \brief Color-mapped plot of data set
    3434 */
    35 class HeightMap {
     35class HeightMap : public VtkGraphicsObject {