Changeset 5007 for branches


Ignore:
Timestamp:
Feb 11, 2015 3:10:11 PM (6 years ago)
Author:
ldelgass
Message:

merge -r4998:r5006 from trunk (whitespace)

Location:
branches/1.4
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/1.4

  • branches/1.4/gui/scripts/field.tcl

    r4985 r5007  
    1 # -*- mode: tcl; indent-tabs-mode: nil -*- 
     1# -*- mode: tcl; indent-tabs-mode: nil -*-
    22# ----------------------------------------------------------------------
    33#  COMPONENT: field - extracts data from an XML description of a field
     
    2525#       unirect2d       (deprecated)
    2626#       cloud           (x,y point coordinates) (deprecated)
    27 #       mesh 
     27#       mesh
    2828# 3D Datasets
    29 #       vtk 
     29#       vtk
    3030#       unirect3d       (deprecated)
    3131#       cloud           (x,y,z coordinates) (deprecated)
    32 #       mesh 
     32#       mesh
    3333#       dx              (FIXME: make dx-to-vtk converter work)
    3434#       ucd avs
     
    4646# With <views>, can specify which viewer for specific datasets.  So it's OK
    4747# for the same dataset to be viewed in more than one way.
    48 #  o Any 2D dataset can be viewed as a contour/heightmap. 
     48#  o Any 2D dataset can be viewed as a contour/heightmap.
    4949#  o Any 3D dataset can be viewed as a isosurface.
    50 #  o Any 2D dataset with vector data can be streamlines or flow. 
     50#  o Any 2D dataset with vector data can be streamlines or flow.
    5151#  o Any 3D uniform rectilinear dataset can be viewed as a volume.
    5252#  o Any 3D dataset with vector data can be streamlines or flow.
     
    5959package require BLT
    6060
    61 namespace eval Rappture { 
    62     # forward declaration 
     61namespace eval Rappture {
     62    # forward declaration
    6363}
    6464
     
    6868    private variable _limits;           # maps axis name => {z0 z1} limits
    6969    private variable _field ""
    70     private variable _comp2fldName ;    # cname => field names.
    71     private variable _comp2type ;       # cname => type (e.g. "vectors")
    72     private variable _comp2size ;       # cname => # of components in element
    73     private variable _comp2assoc;       # cname => association (e.g. pointdata)
     70    private variable _comp2fldName ;    # cname => field names.
     71    private variable _comp2type ;       # cname => type (e.g. "vectors")
     72    private variable _comp2size ;       # cname => # of components in element
     73    private variable _comp2assoc;       # cname => association (e.g. pointdata)
    7474    private variable _fld2Components;   # field name => number of components
    7575    private variable _fld2Label;        # field name => label
    7676    private variable _fld2Units;        # field name => units
    77     private variable _hints 
     77    private variable _hints
    7878    private variable _viewer "";        # Hints which viewer to use
    79     private variable _xv "";            # For 1D meshes only.  Holds the points
    8079    private variable _isValid 0;        # Indicates if the field contains
    8180                                        # valid data.
     
    8382    private variable _alwaysConvertDX 0;
    8483
    85     constructor {xmlobj path} { 
    86         # defined below
    87     }
    88     destructor { 
    89         # defined below
     84    constructor {xmlobj path} {
     85        # defined below
     86    }
     87    destructor {
     88        # defined below
    9089    }
    9190    public method blob { cname }
     
    127126    }
    128127    public method viewer {} {
    129         return $_viewer
     128        return $_viewer
    130129    }
    131130    protected method Build {}
    132131    protected method _getValue {expr}
    133132
    134     private variable _path "";          # Path of this object in the XML 
     133    private variable _path "";          # Path of this object in the XML
    135134    private variable _units ""   ;      # system of units for this field
    136135    private variable _zmax 0     ;# length of the device
     
    144143    private variable _comp2style ;# maps component name => style settings
    145144    private variable _comp2cntls ;# maps component name => x,y control points
    146     private variable _comp2extents
    147     private variable _comp2limits;      #  Array of limits per component
    148     private variable _type ""
    149     private variable _comp2flowhints
    150     private variable _comp2mesh
     145    private variable _comp2extents
     146    private variable _comp2limits;        #  Array of limits per component
     147    private variable _type ""
     148    private variable _comp2flowhints
     149    private variable _comp2mesh  ;# list of: mesh object, BLT vector of values
     150    private variable _values ""  ;# Only used for unirect2d - list of values
    151151    private common _counter 0    ;# counter for unique vector names
    152152
    153     private method AvsToVtk { cname contents } 
    154     private method DicomToVtk { cname contents } 
    155     private method BuildPointsOnMesh { cname } 
    156     protected method GetAssociation { cname } 
    157     protected method GetTypeAndSize { cname } 
    158     protected method ReadVtkDataSet { cname contents } 
    159     private method InitHints {} 
    160 
    161     private method VerifyVtkDataSet { contents } 
     153    private method AvsToVtk { cname contents }
     154    private method DicomToVtk { cname contents }
     155    private method BuildPointsOnMesh { cname }
     156    protected method GetAssociation { cname }
     157    protected method GetTypeAndSize { cname }
     158    protected method ReadVtkDataSet { cname contents }
     159    private method InitHints {}
     160
     161    private method VerifyVtkDataSet { contents }
    162162    private method VectorLimits { vector vectorsize {comp -1} }
    163     private variable _values ""
    164163}
    165164
     
    229228    }
    230229    foreach name [array names _comp2mesh] {
    231         # Data is in the form of a mesh and a vector.
    232         foreach { mesh vector } $_comp2mesh($name) break
    233         # Release the mesh (may be shared)
     230        # Data is in the form of a mesh and a vector.
     231        foreach { mesh vector } $_comp2mesh($name) break
     232        # Release the mesh (may be shared)
    234233        set class [$mesh info class]
    235234        ${class}::release $mesh
    236         # Destroy the vector
     235        # Destroy the vector
    237236        blt::vector destroy $vector
    238237    }
     
    285284    # Now handle the tests.
    286285    switch -- $params(what) {
    287         -name { 
     286        -name {
    288287            set rlist $components
    289288        }
    290         -style { 
     289        -style {
    291290            foreach cname $components {
    292291                if { [info exists _comp2style($cname)] } {
    293                     lappend rlist $_comp2style($cname) 
     292                    lappend rlist $_comp2style($cname)
    294293                }
    295294            }
     
    302301# USAGE: mesh ?<name>?
    303302#
    304 # Returns a list {xvec yvec} for the specified field component <name>.
    305 # If the name is not specified, then it returns the vectors for the
    306 # overall field (sum of all components).
     303# For 1D data (curve), returns a BLT vector of x values for the field
     304# component <name>.  Otherwise, this method is unused
    307305# ----------------------------------------------------------------------
    308306itcl::body Rappture::Field::mesh {{cname -overall}} {
     
    313311        return [lindex $_comp2xy($cname) 0]  ;# return xv
    314312    }
    315     if { [info exists _comp2vtk($cname)] } {
    316         # FIXME: extract mesh from VTK file data.
    317         if { $_comp2dims($cname) == "1D" } {
    318             return $_xv
    319         }
     313    if {[info exists _comp2vtk($cname)]} {
     314        # FIXME: extract mesh from VTK file data.
    320315        error "method \"mesh\" is not implemented for VTK file data"
    321316    }
    322317    if {[info exists _comp2dx($cname)]} {
    323         return ""  ;# no mesh -- it's embedded in the blob data
     318        error "method \"mesh\" is not implemented for DX file data"
    324319    }
    325320    if {[info exists _comp2mesh($cname)]} {
    326         return ""  ;# no mesh -- it's embedded in the value data
     321        # FIXME: This only works for cloud
     322        set mesh [lindex $_comp2mesh($cname) 0]
     323        return [$mesh points]
    327324    }
    328325    if {[info exists _comp2unirect2d($cname)]} {
    329         set mobj [lindex $_comp2unirect2d($cname) 0]
    330         return [$mobj mesh]
     326        # FIXME: unirect2d mesh is a list: xMin xMax xNum yMin yMax yNum
     327        return [$_comp2unirect2d($cname) mesh]
    331328    }
    332329    if {[info exists _comp2unirect3d($cname)]} {
    333         set mobj [lindex $_comp2unirect3d($cname) 0]
    334         return [$mobj mesh]
     330        # This returns a list of x,y,z points
     331        return [$_comp2unirect3d($cname) mesh]
    335332    }
    336333    error "can't get field mesh: Unknown component \"$cname\": should be one of [join [lsort [array names _comp2dims]] {, }]"
     
    340337# USAGE: values ?<name>?
    341338#
    342 # Returns a list {xvec yvec} for the specified field component <name>.
    343 # If the name is not specified, then it returns the vectors for the
    344 # overall field (sum of all components).
     339# For 1D data (curve), returns a BLT vector of field values (y coords)
     340# for the field component <name>.  Otherwise, this method is unused
    345341# ----------------------------------------------------------------------
    346342itcl::body Rappture::Field::values {cname} {
     
    351347        return [lindex $_comp2xy($cname) 1]  ;# return yv
    352348    }
    353     # VTK file data
    354349    if { [info exists _comp2vtk($cname)] } {
    355         # FIXME: extract the values from the VTK file data
    356         if { $_comp2dims($cname) == "1D" } {
    357             return $_values
    358         }
    359         error "method \"values\" is not implemented for vtk file data"
    360     }
    361     # Points-on-mesh
     350        # FIXME: extract the values from the VTK file data
     351        error "method \"values\" is not implemented for VTK file data"
     352    }
     353    if {[info exists _comp2dx($cname)]} {
     354        error "method \"values\" is not implemented for DX file data"
     355    }
    362356    if { [info exists _comp2mesh($cname)] } {
    363         set vector [lindex $_comp2mesh($cname) 1]
     357        set vector [lindex $_comp2mesh($cname) 1]
    364358        return [$vector range 0 end]
    365     }
    366     if {[info exists _comp2dx($cname)]} {
    367         error "method \"values\" is not implemented for dx file data"
    368359    }
    369360    if {[info exists _comp2unirect2d($cname)]} {
     
    373364        return [$_comp2unirect3d($cname) blob]
    374365    }
    375     error "can't get field values. Unknown component \"$cname\": should be [join [lsort [array names _comp2dims]] {, }]"
     366    error "can't get field values. Unknown component \"$cname\": should be one of [join [lsort [array names _comp2dims]] {, }]"
    376367}
    377368
     
    389380    }
    390381    if { [info exists _comp2vtk($cname)] } {
    391         error "blob not implemented for VTK file data"
     382        error "blob not implemented for VTK file data"
    392383    }
    393384    if {[info exists _comp2dx($cname)]} {
     
    408399# USAGE: valueLimits <cname>
    409400#
    410 # Returns an array for the requested component with a list {min max} 
     401# Returns an array for the requested component with a list {min max}
    411402# representing the limits for each axis.
    412403# ----------------------------------------------------------------------
     
    432423            1D {
    433424                switch -- $which {
    434                     x - xlin { 
    435                         set pos 0; set log 0; set axis x
    436                     }
    437                     xlog { 
    438                         set pos 0; set log 1; set axis x
    439                     }
    440                     y - ylin - v - vlin { 
    441                         set pos 1; set log 0; set axis y
    442                     }
    443                     ylog - vlog { 
    444                         set pos 1; set log 1; set axis y
    445                     }
     425                    x - xlin {
     426                        set pos 0; set log 0; set axis x
     427                    }
     428                    xlog {
     429                        set pos 0; set log 1; set axis x
     430                    }
     431                    y - ylin - v - vlin {
     432                        set pos 1; set log 0; set axis y
     433                    }
     434                    ylog - vlog {
     435                        set pos 1; set log 1; set axis y
     436                    }
    446437                    default {
    447438                        error "bad axis \"$which\": should be x, xlin, xlog, y, ylin, ylog, v, vlin, vlog"
     
    480471            default {
    481472                if {[info exists _comp2limits($cname)]} {
    482                     array set limits $_comp2limits($cname)
    483                     switch -- $which {
     473                    array set limits $_comp2limits($cname)
     474                    switch -- $which {
    484475                        x - xlin - xlog {
    485476                            set axis x
    486                             foreach {axisMin axisMax} $limits(x) break
     477                            foreach {axisMin axisMax} $limits(x) break
    487478                        }
    488479                        y - ylin - ylog {
    489480                            set axis y
    490                             foreach {axisMin axisMax} $limits(y) break
     481                            foreach {axisMin axisMax} $limits(y) break
    491482                        }
    492483                        z - zlin - zlog {
    493484                            set axis z
    494                             foreach {axisMin axisMax} $limits(z) break
     485                            foreach {axisMin axisMax} $limits(z) break
    495486                        }
    496487                        v - vlin - vlog {
    497488                            set axis v
    498                             foreach {axisMin axisMax} $limits(v) break
    499                         }
    500                         default {
    501                             if { ![info exists limits($which)] } {
    502                                 error "limits: unknown axis \"$which\""
    503                             }
     489                            foreach {axisMin axisMax} $limits(v) break
     490                        }
     491                        default {
     492                            if { ![info exists limits($which)] } {
     493                                error "limits: unknown axis \"$which\""
     494                            }
    504495                            set axis v
    505                             foreach {axisMin axisMax} $limits($which) break
    506                         }
    507                     }
     496                            foreach {axisMin axisMax} $limits($which) break
     497                        }
     498                    }
    508499                } else {
    509500                    set axisMin 0  ;# HACK ALERT! must be OpenDX data
     
    545536itcl::body Rappture::Field::fieldlimits {} {
    546537    foreach cname [array names _comp2limits] {
    547         array set limits $_comp2limits($cname) 
     538        array set limits $_comp2limits($cname)
    548539        foreach fname [fieldnames $cname] {
    549540            if { ![info exists limits($fname)] } {
     
    571562    return ""
    572563}
    573  
     564
    574565# ----------------------------------------------------------------------
    575566# USAGE: controls get ?<name>?
     
    779770        set type ""
    780771        if { ([$_field element $cname.constant] != "" &&
    781               [$_field element $cname.domain] != "") ||
    782               [$_field element $cname.xy] != "" } {
     772              [$_field element $cname.domain] != "") ||
     773              [$_field element $cname.xy] != "" } {
    783774            set type "1D"
    784775        } elseif { [$_field element $cname.mesh] != "" &&
    785                    [$_field element $cname.values] != ""} {
     776                   [$_field element $cname.values] != ""} {
    786777            set type "points-on-mesh"
    787778        } elseif { [$_field element $cname.vtk] != ""} {
    788             set type "vtk"
    789             set viewer [$_field get "about.view"]
    790             if { $viewer != "" } {
    791                 set _viewer $viewer
    792             }
     779            set type "vtk"
     780            set viewer [$_field get "about.view"]
     781            if { $viewer != "" } {
     782                set _viewer $viewer
     783            }
    793784        } elseif {[$_field element $cname.opendx] != ""} {
    794785            global env
    795786            if { [info exists env(VTKVOLUME)] } {
    796787                set _viewer "vtkvolume"
    797             } 
     788            }
    798789            set type "opendx"
    799790        } elseif {[$_field element $cname.dx] != ""} {
     
    807798        } elseif {[$_field element $cname.dicom] != ""} {
    808799            set type "dicom"
    809         }
     800        }
    810801        set _comp2style($cname) ""
    811802        if { $type == "" } {
     
    817808            set extents [$_field get $cname.extents]
    818809        } else {
    819             set extents 1 
     810            set extents 1
    820811        }
    821812        set _comp2extents($cname) $extents
     
    880871            }
    881872        } elseif {$type == "points-on-mesh"} {
    882             if { ![BuildPointsOnMesh $cname] } {
     873            if { ![BuildPointsOnMesh $cname] } {
    883874                continue;               # Ignore this component
    884875            }
     
    981972        return 0
    982973    }
    983     # Sanity check.  Verify that all components of the field have the same 
     974    # Sanity check.  Verify that all components of the field have the same
    984975    # dimension.
    985976    set dim ""
     
    998989    #        the label and units for each field will be specified there.
    999990    #
    1000     # FIXME: Test that every <field><component> has the same field names, 
     991    # FIXME: Test that every <field><component> has the same field names,
    1001992    #        units, components.
    1002993    #
     
    10701061# isunirect2d  --
    10711062#
    1072 # Returns if the field is a unirect2d object. 
     1063# Returns if the field is a unirect2d object.
    10731064#
    10741065itcl::body Rappture::Field::isunirect2d { } {
     
    10791070# isunirect3d  --
    10801071#
    1081 # Returns if the field is a unirect3d object. 
     1072# Returns if the field is a unirect3d object.
    10821073#
    10831074itcl::body Rappture::Field::isunirect3d { } {
     
    10881079# flowhints  --
    10891080#
    1090 # Returns the hints associated with a flow vector field. 
     1081# Returns the hints associated with a flow vector field.
    10911082#
    10921083itcl::body Rappture::Field::flowhints { cname } {
     
    11001091# style  --
    11011092#
    1102 # Returns the style associated with a component of the field. 
     1093# Returns the style associated with a component of the field.
    11031094#
    11041095itcl::body Rappture::Field::style { cname } {
     
    11371128# extents --
    11381129#
    1139 # Returns if the field is a unirect2d object. 
     1130# Returns if the field is a unirect2d object.
    11401131#
    11411132itcl::body Rappture::Field::extents {{cname -overall}} {
     
    11531144        }
    11541145        return $max
    1155     } 
     1146    }
    11561147    if { $cname == "component0"} {
    11571148        set cname [lindex [components -name] 0]
     
    11701161    set f [open "$tmpfile" "w"]
    11711162    fconfigure $f -translation binary -encoding binary
    1172     puts $f $contents 
     1163    puts $f $contents
    11731164    close $f
    11741165
     
    11871178    set dataAttrs [$dataset GetPointData]
    11881179    if { $dataAttrs == ""} {
    1189         puts stderr "WARNING: No point data found in \"$_path\""
     1180        puts stderr "WARNING: No point data found in \"$_path\""
    11901181        rename $reader ""
    11911182        return 0
     
    12041195    set f [open "$tmpfile" "w"]
    12051196    fconfigure $f -translation binary -encoding binary
    1206     puts $f $contents 
     1197    puts $f $contents
    12071198    close $f
    12081199
     
    12241215    set _dim 0
    12251216    if { $xmax > $xmin } {
    1226         incr _dim
     1217        incr _dim
    12271218    }
    12281219    if { $ymax > $ymin } {
    1229         incr _dim
     1220        incr _dim
    12301221    }
    12311222    if { $zmax > $zmin } {
    1232         incr _dim
     1223        incr _dim
    12331224    }
    12341225    if { $_viewer == "" } {
    1235         if { $_dim == 2 } {
    1236             set _viewer contour
    1237         } else {
    1238             set _viewer isosurface
    1239         }
     1226        if { $_dim == 2 } {
     1227            set _viewer contour
     1228        } else {
     1229            set _viewer isosurface
     1230        }
    12401231    }
    12411232    set _comp2dims($cname) ${_dim}D
     
    12451236        for { set i 0 } { $i < $numPoints } { incr i } {
    12461237            set point [$dataset GetPoint $i]
    1247             $xv append [lindex $point 0] 
     1238            $xv append [lindex $point 0]
    12481239        }
    12491240        set yv [blt::vector create \#auto]
     
    12621253        set numTuples [$array GetNumberOfTuples]
    12631254        for { set i 0 } { $i < $numTuples } { incr i } {
    1264             $yv append [$array GetComponent $i 0] 
     1255            $yv append [$array GetComponent $i 0]
    12651256        }
    12661257        $xv sort $yv
    12671258        set _comp2xy($cname) [list $xv $yv]
    12681259    }
    1269     lappend limits x [list $xmin $xmax] 
    1270     lappend limits y [list $ymin $ymax] 
     1260    lappend limits x [list $xmin $xmax]
     1261    lappend limits y [list $ymin $ymax]
    12711262    lappend limits z [list $zmin $zmax]
    12721263    set dataAttrs [$dataset GetPointData]
    12731264    if { $dataAttrs == ""} {
    1274         puts stderr "WARNING: No point data found in \"$_path\""
     1265        puts stderr "WARNING: No point data found in \"$_path\""
    12751266        rename $reader ""
    12761267        return 0
     
    12801271    set numArrays [$dataAttrs GetNumberOfArrays]
    12811272    if { $numArrays > 0 } {
    1282         for {set i 0} {$i < [$dataAttrs GetNumberOfArrays] } {incr i} {
    1283             set array [$dataAttrs GetArray $i]
    1284             set fname  [$dataAttrs GetArrayName $i]
    1285             foreach {min max} [$array GetRange -1] break
     1273        for {set i 0} {$i < [$dataAttrs GetNumberOfArrays] } {incr i} {
     1274            set array [$dataAttrs GetArray $i]
     1275            set fname  [$dataAttrs GetArrayName $i]
     1276            foreach {min max} [$array GetRange -1] break
    12861277            if {$i == 0} {
    12871278                set vmin $min
    12881279                set vmax $max
    12891280            }
    1290             lappend limits $fname [list $min $max]
     1281            lappend limits $fname [list $min $max]
    12911282            set _fld2Units($fname) ""
    1292             set _fld2Label($fname) $fname
     1283            set _fld2Label($fname) $fname
    12931284            # Let the VTK file override the <type> designated.
    12941285            set _fld2Components($fname) [$array GetNumberOfComponents]
    12951286            lappend _comp2fldName($cname) $fname
    1296         }
    1297     }
    1298    
     1287        }
     1288    }
     1289
    12991290    lappend limits v [list $vmin $vmax]
    13001291    set _comp2limits($cname) $limits
     
    13061297# vtkdata --
    13071298#
    1308 #       Returns a string representing the mesh and field data for a specific
    1309 #       component in the legacy VTK file format.
     1299#        Returns a string representing the mesh and field data for a specific
     1300#        component in the legacy VTK file format.
    13101301#
    13111302itcl::body Rappture::Field::vtkdata {cname} {
     
    13131304        set cname "component"
    13141305    }
    1315     # DX: Convert DX to VTK 
     1306    # DX: Convert DX to VTK
    13161307    if {[info exists _comp2dx($cname)]} {
    13171308        set data $_comp2dx($cname)
     
    13191310        return [Rappture::DxToVtk $data]
    13201311    }
    1321     # Unirect3d: isosurface
    1322     if {[info exists _comp2unirect3d($cname)]} {
    1323         return [$_comp2unirect3d($cname) vtkdata]
    1324     }
    1325     # VTK file data:
     1312    # VTK file data:
    13261313    if { [info exists _comp2vtk($cname)] } {
    13271314        return $_comp2vtk($cname)
     
    13291316    # Points on mesh:  Construct VTK file output.
    13301317    if { [info exists _comp2mesh($cname)] } {
    1331         # Data is in the form mesh and vector
    1332         foreach {mesh vector} $_comp2mesh($cname) break
     1318        # Data is in the form mesh and vector
     1319        foreach {mesh vector} $_comp2mesh($cname) break
    13331320        set label $cname
    13341321        regsub -all { } $label {_} label
    1335         append out "# vtk DataFile Version 3.0\n"
    1336         append out "[hints label]\n"
    1337         append out "ASCII\n"
    1338         append out [$mesh vtkdata]
     1322        append out "# vtk DataFile Version 3.0\n"
     1323        append out "[hints label]\n"
     1324        append out "ASCII\n"
     1325        append out [$mesh vtkdata]
    13391326
    13401327        if { $_comp2assoc($cname) == "pointdata" } {
     
    13771364            }
    13781365        }
    1379         append out [$vector range 0 end] 
     1366        append out [$vector range 0 end]
    13801367        append out "\n"
    13811368        if 0 {
    13821369            VerifyVtkDataSet $out
    13831370        }
    1384         return $out
    1385     }
    1386     error "can't find vtkdata for $cname. This method should only be called by the vtkheightmap widget"
     1371        return $out
     1372    }
     1373    error "can't find vtkdata for $cname"
    13871374}
    13881375
     
    13901377# BuildPointsOnMesh --
    13911378#
    1392 #       Parses the field XML description to build a mesh and values vector
    1393 #       representing the field.  Right now we handle the deprecated types
    1394 #       of "cloud", "unirect2d", and "unirect3d" (mostly for flows).
     1379#        Parses the field XML description to build a mesh and values vector
     1380#        representing the field.  Right now we handle the deprecated types
     1381#        of "cloud", "unirect2d", and "unirect3d" (mostly for flows).
    13951382#
    13961383itcl::body Rappture::Field::BuildPointsOnMesh {cname} {
     
    14011388    set path [$_field get $cname.mesh]
    14021389    if {[$_xmlobj element $path] == ""} {
    1403         # Unknown mesh designated.
    1404         return 0
     1390        # Unknown mesh designated.
     1391        return 0
    14051392    }
    14061393    set viewer [$_field get "about.view"]
     
    14221409    # Handle bizarre cases that hopefully will be deprecated.
    14231410    if { $element == "unirect3d" } {
    1424         # Special case: unirect3d (should be deprecated) + flow.
     1411        # Special case: unirect3d (should be deprecated) + flow.
    14251412        if { [$_field element $cname.extents] != "" } {
    14261413            set vectorsize [$_field get $cname.extents]
    14271414        } else {
    1428             set vectorsize 1 
     1415            set vectorsize 1
    14291416        }
    14301417        set _type unirect3d
    1431         set _dim 3
     1418        set _dim 3
    14321419        if { $_viewer == "" } {
    14331420            set _viewer flowvis
    14341421        }
    1435         set _comp2dims($cname) "3D"
    1436         set _comp2unirect3d($cname) \
    1437             [Rappture::Unirect3d \#auto $_xmlobj $_field $cname $vectorsize]
    1438         set _comp2style($cname) [$_field get $cname.style]
     1422        set _comp2dims($cname) "3D"
     1423        set _comp2unirect3d($cname) \
     1424            [Rappture::Unirect3d \#auto $_xmlobj $_field $cname $vectorsize]
     1425        set _comp2style($cname) [$_field get $cname.style]
    14391426        set limits {}
    14401427        foreach axis { x y z } {
    14411428            lappend limits $axis [$_comp2unirect3d($cname) limits $axis]
    14421429        }
    1443         # Get the data limits 
     1430        # Get the data limits
    14441431        set vector [$_comp2unirect3d($cname) valuesObj]
    14451432        set minmax [VectorLimits $vector $vectorsize]
     
    14471434        lappend limits v      $minmax
    14481435        set _comp2limits($cname) $limits
    1449         if {[$_field element $cname.flow] != ""} {
    1450             set _comp2flowhints($cname) \
    1451                 [Rappture::FlowHints ::\#auto $_field $cname $_units]
    1452         }
    1453         incr _counter
    1454         return 1
     1436        if {[$_field element $cname.flow] != ""} {
     1437            set _comp2flowhints($cname) \
     1438                [Rappture::FlowHints ::\#auto $_field $cname $_units]
     1439        }
     1440        incr _counter
     1441        return 1
    14551442    }
    14561443    if { $element == "unirect2d" && [$_field element $cname.flow] != "" } {
    1457         # Special case: unirect2d (normally deprecated) + flow.
     1444        # Special case: unirect2d (normally deprecated) + flow.
    14581445        if { [$_field element $cname.extents] != "" } {
    14591446            set vectorsize [$_field get $cname.extents]
    14601447        } else {
    1461             set vectorsize 1 
     1448            set vectorsize 1
    14621449        }
    14631450        set _type unirect2d
    1464         set _dim 2
     1451        set _dim 2
    14651452        if { $_viewer == "" } {
    14661453            set _viewer "flowvis"
    14671454        }
    1468         set _comp2dims($cname) "2D"
    1469         set _comp2unirect2d($cname) \
    1470             [Rappture::Unirect2d \#auto $_xmlobj $path]
    1471         set _comp2style($cname) [$_field get $cname.style]
    1472         set _comp2flowhints($cname) \
    1473             [Rappture::FlowHints ::\#auto $_field $cname $_units]
    1474         set _values [$_field get $cname.values]
     1455        set _comp2dims($cname) "2D"
     1456        set _comp2unirect2d($cname) \
     1457            [Rappture::Unirect2d \#auto $_xmlobj $path]
     1458        set _comp2style($cname) [$_field get $cname.style]
     1459        set _comp2flowhints($cname) \
     1460            [Rappture::FlowHints ::\#auto $_field $cname $_units]
     1461        set _values [$_field get $cname.values]
    14751462        set limits {}
    14761463        foreach axis { x y z } {
     
    14841471        blt::vector destroy $xv
    14851472        set _comp2limits($cname) $limits
    1486         incr _counter
    1487         return 1
     1473        incr _counter
     1474        return 1
    14881475    }
    14891476    switch -- $element {
    1490         "cloud" {
    1491             set mesh [Rappture::Cloud::fetch $_xmlobj $path]
     1477        "cloud" {
     1478            set mesh [Rappture::Cloud::fetch $_xmlobj $path]
    14921479            set _type cloud
    1493         }
    1494         "mesh" {
    1495             set mesh [Rappture::Mesh::fetch $_xmlobj $path]
     1480        }
     1481        "mesh" {
     1482            set mesh [Rappture::Mesh::fetch $_xmlobj $path]
    14961483            set _type mesh
    1497         }           
    1498         "unirect2d" {
     1484        }
     1485        "unirect2d" {
    14991486            if { $_viewer == "" } {
    15001487                set _viewer "heightmap"
    15011488            }
    1502             set mesh [Rappture::Unirect2d::fetch $_xmlobj $path]
     1489            set mesh [Rappture::Unirect2d::fetch $_xmlobj $path]
    15031490            set _type unirect2d
    1504         }
     1491        }
    15051492    }
    15061493    if { ![$mesh isvalid] } {
     
    15101497    set _dim [$mesh dimensions]
    15111498    if { $_dim == 3 } {
    1512         set dim 0 
     1499        set dim 0
    15131500        foreach axis {x y z} {
    15141501            foreach {min max} [$mesh limits $axis] {
     
    15271514        return 0
    15281515
    1529         # 1D data: Create vectors for graph widget.
    1530         # The prophet tool currently outputs 1D clouds with fields
     1516        # 1D data: Create vectors for graph widget.
     1517        # The prophet tool currently outputs 1D clouds with fields
    15311518        # Band Structure Lab used to (see isosurface1 test in rappture-bat)
    1532         #
    1533         # Is there a natural growth path in generating output from 1D to
    1534         # higher dimensions?  If there isn't, let's kill this in favor
    1535         # or explicitly using a <curve> instead.  Otherwise, the features
    1536         # (methods such as xmarkers) or the <curve> need to be added
    1537         # to the <field>.
    1538         #
    1539         #set xv [blt::vector create x$_counter]
    1540         #set yv [blt::vector create y$_counter]
     1519        #
     1520        # Is there a natural growth path in generating output from 1D to
     1521        # higher dimensions?  If there isn't, let's kill this in favor
     1522        # or explicitly using a <curve> instead.  Otherwise, the features
     1523        # (methods such as xmarkers) or the <curve> need to be added
     1524        # to the <field>.
     1525        #
     1526        #set xv [blt::vector create x$_counter]
     1527        #set yv [blt::vector create y$_counter]
    15411528
    15421529        # This only works with a Cloud mesh type, since the points method
    15431530        # is not implemented for the Mesh object
    1544         #$xv set [$mesh points]
     1531        #$xv set [$mesh points]
    15451532        # TODO: Put field values in yv
    1546         #set _comp2dims($cname) "1D"
    1547         #set _comp2xy($cname) [list $xv $yv]
    1548         #incr _counter
    1549         #return 1
    1550     } 
     1533        #set _comp2dims($cname) "1D"
     1534        #set _comp2xy($cname) [list $xv $yv]
     1535        #incr _counter
     1536        #return 1
     1537    }
    15511538    if {$_dim == 2} {
    1552         # 2D data: By default surface or contour plot using heightmap widget.
    1553         set v [blt::vector create \#auto]
    1554         $v set [$_field get $cname.values]
     1539        # 2D data: By default surface or contour plot using heightmap widget.
     1540        set v [blt::vector create \#auto]
     1541        $v set [$_field get $cname.values]
    15551542        if { [$v length] == 0 } {
    15561543            return 0
     
    15791566            }
    15801567        }
    1581         set _comp2dims($cname) "[$mesh dimensions]D"
    1582         set _comp2mesh($cname) [list $mesh $v]
    1583         set _comp2style($cname) [$_field get $cname.style]
     1568        set _comp2dims($cname) "[$mesh dimensions]D"
     1569        set _comp2mesh($cname) [list $mesh $v]
     1570        set _comp2style($cname) [$_field get $cname.style]
    15841571        if {[$_field element $cname.flow] != ""} {
    15851572            set _comp2flowhints($cname) \
    15861573                [Rappture::FlowHints ::\#auto $_field $cname $_units]
    15871574        }
    1588         incr _counter
    1589         array unset _comp2limits $cname
     1575        incr _counter
     1576        array unset _comp2limits $cname
    15901577        foreach axis { x y z } {
    15911578            lappend _comp2limits($cname) $axis [$mesh limits $axis]
     
    15941581        lappend _comp2limits($cname) $cname $minmax
    15951582        lappend _comp2limits($cname) v $minmax
    1596         return 1
    1597     } 
     1583        return 1
     1584    }
    15981585    if {$_dim == 3} {
    1599         # 3D data: By default isosurfaces plot using isosurface widget.
     1586        # 3D data: By default isosurfaces plot using isosurface widget.
    16001587        if { $_viewer == "" } {
    16011588            set _viewer "isosurface"
    16021589        }
    1603         set v [blt::vector create \#auto]
    1604         $v set [$_field get $cname.values]
     1590        set v [blt::vector create \#auto]
     1591        $v set [$_field get $cname.values]
    16051592        if { [$v length] == 0 } {
    16061593            return 0
     
    16401627        lappend _comp2limits($cname) $cname $minmax
    16411628        lappend _comp2limits($cname) v $minmax
    1642         return 1
     1629        return 1
    16431630    }
    16441631    error "unhandled case in field dim=$_dim element=$element"
     
    17321719        "tcoords"              2
    17331720        "tensors"              9
    1734         "vectors"              3 
     1721        "vectors"              3
    17351722    }
    17361723    set type [$_field get $cname.elemtype]
    17371724    if { $type == "" } {
    17381725        set type "scalars"
    1739     } 
     1726    }
    17401727    if { ![info exists type2components($type)] } {
    17411728        error "unknown <elemtype> \"$type\" in field"
     
    17541741        set _comp2assoc($cname) "pointdata"
    17551742        return
    1756     } 
     1743    }
    17571744    switch -- $assoc {
    17581745        "pointdata" - "celldata" - "fielddata" {
  • branches/1.4/gui/scripts/mesh.tcl

    r4788 r5007  
    1 # -*- mode: tcl; indent-tabs-mode: nil -*- 
     1# -*- mode: tcl; indent-tabs-mode: nil -*-
    22
    33# ----------------------------------------------------------------------
     
    1818package require Itcl
    1919
    20 namespace eval Rappture { 
    21     # forward declaration 
     20namespace eval Rappture {
     21    # forward declaration
    2222}
    2323
    2424itcl::class Rappture::Mesh {
    25     private variable _xmlobj ""  ;      # Ref to XML obj with device data
    26     private variable _mesh ""    ;      # Lib obj representing this mesh
    27     private variable _dim       0;      # Dimension of mesh (1, 2, or 3)
    28     private variable _type "";          # Indicates the type of mesh.
    29     private variable _axis2units;       # System of units for x, y, z
    30     private variable _axis2labels;      # 
    31     private variable _hints 
    32     private variable _limits        ;   # Array of mesh limits. Keys are
    33                                         # xmin, xmax, ymin, ymax, ...
    34     private variable _numPoints 0   ;   # # of points in mesh
    35     private variable _numCells 0   ;    # # of cells in mesh
    36     private variable _vtkdata "";       # Mesh in vtk file format.
     25    private variable _xmlobj ""  ;      # Ref to XML obj with device data
     26    private variable _mesh ""    ;      # Lib obj representing this mesh
     27    private variable _dim        0;     # Dimension of mesh (1, 2, or 3)
     28    private variable _type "";          # Indicates the type of mesh.
     29    private variable _axis2units;       # System of units for x, y, z
     30    private variable _axis2labels;      #
     31    private variable _hints
     32    private variable _limits        ;   # Array of mesh limits. Keys are
     33                                        # xmin, xmax, ymin, ymax, ...
     34    private variable _numPoints 0   ;   # # of points in mesh
     35    private variable _numCells 0   ;    # # of cells in mesh
     36    private variable _vtkdata "";       # Mesh in vtk file format.
    3737    private variable _isValid 0;        # Indicates if the mesh is valid.
    38     constructor {xmlobj path} { 
    39         # defined below
    40     }
    41     destructor { 
    42         # defined below
     38    constructor {xmlobj path} {
     39        # defined below
     40    }
     41    destructor {
     42        # defined below
    4343    }
    4444    public method points {}
     
    5858    public method vtkdata {{what -partial}}
    5959    public method type {} {
    60         return $_type
     60        return $_type
    6161    }
    6262    public method numpoints {} {
    63         return $_numPoints
     63        return $_numPoints
    6464    }
    6565    public method numcells {} {
    66         return $_numCells
    67     }
    68 
    69     private common _xp2obj       ;      # used for fetch/release ref counting
    70     private common _obj2ref      ;      # used for fetch/release ref counting
    71     private variable _xv        ""
    72     private variable _yv        ""
    73     private variable _zv        ""
    74     private variable _xCoords   "";     # For the blt contour only
    75     private variable _yCoords   "";     # For the blt contour only
    76    
     66        return $_numCells
     67    }
     68
     69    private common _xp2obj       ;        # used for fetch/release ref counting
     70    private common _obj2ref      ;        # used for fetch/release ref counting
     71    private variable _xv        ""
     72    private variable _yv        ""
     73    private variable _zv        ""
     74    private variable _xCoords        "";  # For the blt contour only
     75    private variable _yCoords        "";  # For the blt contour only
     76
    7777    private method ReadNodesElements {path}
    78     private method GetDimension { path } 
    79     private method GetDouble { path } 
    80     private method GetInt { path } 
    81     private method InitHints {} 
     78    private method GetDimension { path }
     79    private method GetDouble { path }
     80    private method GetInt { path }
     81    private method InitHints {}
    8282    private method ReadGrid { path }
    8383    private method ReadUnstructuredGrid { path }
     
    164164    foreach u $units axis { x y z } {
    165165        if { $u != "" } {
    166             set _axis2units($axis) $u 
     166            set _axis2units($axis) $u
    167167        } else {
    168             set _axis2units($axis) $first 
     168            set _axis2units($axis) $first
    169169        }
    170170    }
     
    179179    # Meshes comes in a variety of flavors
    180180    #
    181     # Dimensionality is determined from the <dimension> tag. 
     181    # Dimensionality is determined from the <dimension> tag.
    182182    #
    183183    # <vtk> described mesh
    184184    # <element> +  <node> definitions
    185     # <grid>            rectangular mesh 
     185    # <grid>            rectangular mesh
    186186    # <unstructured>    homogeneous cell type mesh.
    187187
     
    189189    set subcount 0
    190190    foreach cname [$_mesh children] {
    191         foreach type { vtk grid unstructured } {
    192             if { $cname == $type } {
    193                 incr subcount
    194                 break
    195             }
    196         }
     191        foreach type { vtk grid unstructured } {
     192            if { $cname == $type } {
     193                incr subcount
     194                break
     195            }
     196        }
    197197    }
    198198    if {[$_mesh element "node"] != "" ||
     
    206206    }
    207207    if { $subcount > 1 } {
    208         puts stderr "WARNING: too many mesh types specified for \"$path\"."
     208        puts stderr "WARNING: too many mesh types specified for \"$path\"."
    209209        return
    210210    }
    211211    set result 0
    212212    if { [$_mesh element "vtk"] != ""} {
    213         set result [ReadVtk $path]
     213        set result [ReadVtk $path]
    214214    } elseif {[$_mesh element "grid"] != "" } {
    215         set result [ReadGrid $path]
     215        set result [ReadGrid $path]
    216216    } elseif {[$_mesh element "unstructured"] != "" } {
    217         set result [ReadUnstructuredGrid $path]
     217        set result [ReadUnstructuredGrid $path]
    218218    } elseif {[$_mesh element "node"] != "" && [$_mesh element "element"] != ""} {
    219219        set result [ReadNodesElements $path]
     
    231231
    232232    if { $_xCoords != "" } {
    233         blt::vector destroy $_xCoords
     233        blt::vector destroy $_xCoords
    234234    }
    235235    if { $_yCoords != "" } {
    236         blt::vector destroy $_yCoords
    237     }
    238 }
    239 
    240 #
    241 # vtkdata -- 
    242 #
    243 #       This is called by the field object to generate a VTK file to send to
    244 #       the remote render server.  Returns the vtkDataSet object containing
    245 #       (at this point) just the mesh.  The field object doesn't know (or
    246 #       care) what type of mesh is used.  The field object will add field
    247 #       arrays before generating output to send to the remote render server.
     236        blt::vector destroy $_yCoords
     237    }
     238}
     239
     240#
     241# vtkdata --
     242#
     243#        This is called by the field object to generate a VTK file to send to
     244#        the remote render server.  Returns the vtkDataSet object containing
     245#        (at this point) just the mesh.  The field object doesn't know (or
     246#        care) what type of mesh is used.  The field object will add field
     247#        arrays before generating output to send to the remote render server.
    248248#
    249249itcl::body Rappture::Mesh::vtkdata {{what -partial}} {
    250250    if {$what == "-full"} {
    251251        append out "# vtk DataFile Version 3.0\n"
    252         append out "[hints label]\n"
    253         append out "ASCII\n"
     252        append out "[hints label]\n"
     253        append out "ASCII\n"
    254254        append out $_vtkdata
    255255        return $out
     
    340340itcl::body Rappture::Mesh::mesh { {type "vtk"} } {
    341341    switch $type {
    342         "vtk" {
    343             return ""
    344         }
    345         default {
    346             error "Requested mesh type \"$type\" is unknown."
    347         }
     342        "vtk" {
     343            return ""
     344        }
     345        default {
     346            error "Requested mesh type \"$type\" is unknown."
     347        }
    348348    }
    349349}
     
    443443    set string [$_xmlobj get $path.dim]
    444444    if { $string == "" } {
    445         puts stderr "WARNING: no tag <dim> found in mesh \"$path\"."
     445        puts stderr "WARNING: no tag <dim> found in mesh \"$path\"."
    446446        return 0
    447447    }
     
    479479        return 0
    480480    }
    481     # Create a VTK file with the mesh in it. 
     481    # Create a VTK file with the mesh in it.
    482482    set _vtkdata [$_xmlobj get $path.vtk]
    483483    append out "# vtk DataFile Version 3.0\n"
     
    521521    set numCurvilinear 0
    522522    foreach axis { x y z } {
    523         set min    [$_xmlobj get "$path.grid.${axis}axis.min"]
    524         set max    [$_xmlobj get "$path.grid.${axis}axis.max"]
    525         set num    [$_xmlobj get "$path.grid.${axis}axis.numpoints"]
    526         set coords [$_xmlobj get "$path.grid.${axis}coords"]
    527         set dim    [$_xmlobj get "$path.grid.${axis}dim"]
    528         if { $min != "" && $max != "" && $num != "" && $num > 0 } {
    529             set ${axis}Min $min
    530             set ${axis}Max $max
    531             set ${axis}Num $num
     523        set min    [$_xmlobj get "$path.grid.${axis}axis.min"]
     524        set max    [$_xmlobj get "$path.grid.${axis}axis.max"]
     525        set num    [$_xmlobj get "$path.grid.${axis}axis.numpoints"]
     526        set coords [$_xmlobj get "$path.grid.${axis}coords"]
     527        set dim    [$_xmlobj get "$path.grid.${axis}dim"]
     528        if { $min != "" && $max != "" && $num != "" && $num > 0 } {
     529            set ${axis}Min $min
     530            set ${axis}Max $max
     531            set ${axis}Num $num
    532532            if {$min > $max} {
    533533                puts stderr "ERROR: grid $axis axis minimum larger than maximum"
    534534                return 0
    535535            }
    536             incr numUniform
    537         } elseif { $coords != "" } {
    538             incr numRectilinear
    539             set ${axis}Coords $coords
    540         } elseif { $dim != "" } {
     536            incr numUniform
     537        } elseif { $coords != "" } {
     538            incr numRectilinear
     539            set ${axis}Coords $coords
     540        } elseif { $dim != "" } {
    541541            set ${axis}Num $dim
    542542            incr numCurvilinear
     
    545545    set _dim [expr $numRectilinear + $numUniform + $numCurvilinear]
    546546    if { $_dim == 0 } {
    547         # No data found.
     547        # No data found.
    548548        puts stderr "WARNING: bad grid \"$path\": no data found"
    549         return 0
     549        return 0
    550550    }
    551551    if { $numCurvilinear > 0 } {
     
    560560            return 0
    561561        }
    562         if { ![info exists xNum] } {
     562        if { ![info exists xNum] } {
    563563            puts stderr "WARNING: bad grid \"$path\": invalid dimensions for curvilinear grid: missing <xdim> from grid description."
    564564            return 0
     
    572572        if { [info exists zNum] } {
    573573            set _dim 3
    574             set _numPoints [expr $xNum * $yNum * $zNum]
     574            set _numPoints [expr $xNum * $yNum * $zNum]
    575575            set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1) * ($zNum > 1 ? ($zNum - 1) : 1)]
    576576            if { ($_numPoints*3) != $numCoords } {
     
    583583            }
    584584            $all split $xv $yv $zv
    585             foreach axis {x y z} {
     585            foreach axis {x y z} {
    586586                set vector [set ${axis}v]
    587587                set _limits($axis) [$vector limits]
    588             }
    589             append out "DATASET STRUCTURED_GRID\n"
    590             append out "DIMENSIONS $xNum $yNum $zNum\n"
    591             append out "POINTS $_numPoints double\n"
     588            }
     589            append out "DATASET STRUCTURED_GRID\n"
     590            append out "DIMENSIONS $xNum $yNum $zNum\n"
     591            append out "POINTS $_numPoints double\n"
    592592            append out [$all range 0 end]
    593593            append out "\n"
    594             set _vtkdata $out
     594            set _vtkdata $out
    595595        } elseif { [info exists yNum] } {
    596596            set _dim 2
    597             set _numPoints [expr $xNum * $yNum]
     597            set _numPoints [expr $xNum * $yNum]
    598598            set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1)]
    599599            if { ($_numPoints*2) != $numCoords } {
     
    605605                return 0
    606606            }
    607             foreach axis {x y} {
     607            foreach axis {x y} {
    608608                set vector [set ${axis}v]
    609609                set _limits($axis) [$vector limits]
    610             }
     610            }
    611611            set _limits(z) [list 0 0]
    612612            $zv seq 0 0 [$xv length]
    613613            $all merge $xv $yv $zv
    614             append out "DATASET STRUCTURED_GRID\n"
    615             append out "DIMENSIONS $xNum $yNum 1\n"
    616             append out "POINTS $_numPoints double\n"
     614            append out "DATASET STRUCTURED_GRID\n"
     615            append out "DIMENSIONS $xNum $yNum 1\n"
     616            append out "POINTS $_numPoints double\n"
    617617            append out [$all range 0 end]
    618618            append out "\n"
    619             set _vtkdata $out
     619            set _vtkdata $out
    620620        } else {
    621621            set _dim 1
     
    632632            $zv seq 0 0 [$xv length]
    633633            $all merge $xv $yv $zv
    634             append out "DATASET STRUCTURED_GRID\n"
    635             append out "DIMENSIONS $xNum 1 1\n"
    636             append out "POINTS $_numPoints double\n"
     634            append out "DATASET STRUCTURED_GRID\n"
     635            append out "DIMENSIONS $xNum 1 1\n"
     636            append out "POINTS $_numPoints double\n"
    637637            append out [$all range 0 end]
    638638            append out "\n"
    639             set _vtkdata $out
    640         }
     639            set _vtkdata $out
     640        }
    641641        blt::vector destroy $all $xv $yv $zv
    642         return 1
     642        return 1
    643643    }
    644644    if { $numRectilinear == 0 && $numUniform > 0} {
    645         # This is the special case where all axes 2D/3D are uniform. 
     645        # This is the special case where all axes 2D/3D are uniform.
    646646        # This results in a STRUCTURED_POINTS
    647647        if { $_dim == 1 } {
     
    651651                set xSpace [expr ($xMax - $xMin) / double($xNum - 1)]
    652652            }
    653             set _numPoints $xNum
     653            set _numPoints $xNum
    654654            set _numCells [expr $xNum - 1]
    655             append out "DATASET STRUCTURED_POINTS\n"
    656             append out "DIMENSIONS $xNum 1 1\n"
    657             append out "ORIGIN $xMin 0 0\n"
    658             append out "SPACING $xSpace 0 0\n"
    659             set _vtkdata $out
     655            append out "DATASET STRUCTURED_POINTS\n"
     656            append out "DIMENSIONS $xNum 1 1\n"
     657            append out "ORIGIN $xMin 0 0\n"
     658            append out "SPACING $xSpace 0 0\n"
     659            set _vtkdata $out
    660660            set _limits(x) [list $xMin $xMax]
    661661            set _limits(y) [list 0 0]
    662662            set _limits(z) [list 0 0]
    663         } elseif { $_dim == 2 } {
     663        } elseif { $_dim == 2 } {
    664664            if {$xNum == 1} {
    665665                set xSpace 0
     
    672672                set ySpace [expr ($yMax - $yMin) / double($yNum - 1)]
    673673            }
    674             set _numPoints [expr $xNum * $yNum]
     674            set _numPoints [expr $xNum * $yNum]
    675675            set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1)]
    676             append out "DATASET STRUCTURED_POINTS\n"
    677             append out "DIMENSIONS $xNum $yNum 1\n"
    678             append out "ORIGIN $xMin $yMin 0\n"
    679             append out "SPACING $xSpace $ySpace 0\n"
    680             set _vtkdata $out
    681             foreach axis {x y} {
    682                 set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
    683             }
     676            append out "DATASET STRUCTURED_POINTS\n"
     677            append out "DIMENSIONS $xNum $yNum 1\n"
     678            append out "ORIGIN $xMin $yMin 0\n"
     679            append out "SPACING $xSpace $ySpace 0\n"
     680            set _vtkdata $out
     681            foreach axis {x y} {
     682                set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
     683            }
    684684            set _limits(z) [list 0 0]
    685         } elseif { $_dim == 3 } {
     685        } elseif { $_dim == 3 } {
    686686            if {$xNum == 1} {
    687687                set xSpace 0
     
    699699                set zSpace [expr ($zMax - $zMin) / double($zNum - 1)]
    700700            }
    701             set _numPoints [expr $xNum * $yNum * $zNum]
     701            set _numPoints [expr $xNum * $yNum * $zNum]
    702702            set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1) * ($zNum > 1 ? ($zNum - 1) : 1)]
    703             append out "DATASET STRUCTURED_POINTS\n"
    704             append out "DIMENSIONS $xNum $yNum $zNum\n"
    705             append out "ORIGIN $xMin $yMin $zMin\n"
    706             append out "SPACING $xSpace $ySpace $zSpace\n"
    707             set _vtkdata $out
    708             foreach axis {x y z} {
    709                 set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
    710             }
    711         } else {
    712             puts stderr "WARNING: bad grid \"$path\": bad dimension \"$_dim\""
     703            append out "DATASET STRUCTURED_POINTS\n"
     704            append out "DIMENSIONS $xNum $yNum $zNum\n"
     705            append out "ORIGIN $xMin $yMin $zMin\n"
     706            append out "SPACING $xSpace $ySpace $zSpace\n"
     707            set _vtkdata $out
     708            foreach axis {x y z} {
     709                set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
     710            }
     711        } else {
     712            puts stderr "WARNING: bad grid \"$path\": bad dimension \"$_dim\""
    713713            return 0
    714         }
    715         return 1
     714        }
     715        return 1
    716716    }
    717717    # This is the hybrid case.  Some axes are uniform, others are nonuniform.
    718718    set xv [blt::vector create \#auto]
    719719    if { [info exists xMin] } {
    720         $xv seq $xMin $xMax $xNum
    721     } else {
    722         $xv set [$_xmlobj get $path.grid.xcoords]
    723         set xMin [$xv min]
    724         set xMax [$xv max]
    725         set xNum [$xv length]
     720        $xv seq $xMin $xMax $xNum
     721    } else {
     722        $xv set [$_xmlobj get $path.grid.xcoords]
     723        set xMin [$xv min]
     724        set xMax [$xv max]
     725        set xNum [$xv length]
    726726    }
    727727    set yv [blt::vector create \#auto]
     
    740740    set zv [blt::vector create \#auto]
    741741    if { $_dim == 3 } {
    742         if { [info exists zMin] } {
    743             $zv seq $zMin $zMax $zNum
    744         }  else {
    745             $zv set [$_xmlobj get $path.grid.zcoords]
    746             set zMin [$zv min]
    747             set zMax [$zv max]
    748             set zNum [$zv length]
    749         }
    750     } else {
    751         set zNum 1
     742        if { [info exists zMin] } {
     743            $zv seq $zMin $zMax $zNum
     744        }  else {
     745            $zv set [$_xmlobj get $path.grid.zcoords]
     746            set zMin [$zv min]
     747            set zMax [$zv max]
     748            set zNum [$zv length]
     749        }
     750    } else {
     751        set zNum 1
    752752    }
    753753    if { $_dim == 3 } {
    754         set _numPoints [expr $xNum * $yNum * $zNum]
     754        set _numPoints [expr $xNum * $yNum * $zNum]
    755755        set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1) * ($zNum > 1 ? ($zNum - 1) : 1)]
    756         append out "DATASET RECTILINEAR_GRID\n"
    757         append out "DIMENSIONS $xNum $yNum $zNum\n"
    758         append out "X_COORDINATES $xNum double\n"
    759         append out [$xv range 0 end]
    760         append out "\n"
    761         append out "Y_COORDINATES $yNum double\n"
    762         append out [$yv range 0 end]
    763         append out "\n"
    764         append out "Z_COORDINATES $zNum double\n"
    765         append out [$zv range 0 end]
    766         append out "\n"
    767         set _vtkdata $out
    768         foreach axis {x y z} {
    769             if { [info exists ${axis}Min] } {
    770                 set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
    771             }
    772         }
     756        append out "DATASET RECTILINEAR_GRID\n"
     757        append out "DIMENSIONS $xNum $yNum $zNum\n"
     758        append out "X_COORDINATES $xNum double\n"
     759        append out [$xv range 0 end]
     760        append out "\n"
     761        append out "Y_COORDINATES $yNum double\n"
     762        append out [$yv range 0 end]
     763        append out "\n"
     764        append out "Z_COORDINATES $zNum double\n"
     765        append out [$zv range 0 end]
     766        append out "\n"
     767        set _vtkdata $out
     768        foreach axis {x y z} {
     769            if { [info exists ${axis}Min] } {
     770                set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
     771            }
     772        }
    773773    } elseif { $_dim == 2 } {
    774         set _numPoints [expr $xNum * $yNum]
     774        set _numPoints [expr $xNum * $yNum]
    775775        set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1)]
    776         append out "DATASET RECTILINEAR_GRID\n"
    777         append out "DIMENSIONS $xNum $yNum 1\n"
    778         append out "X_COORDINATES $xNum double\n"
    779         append out [$xv range 0 end]
    780         append out "\n"
    781         append out "Y_COORDINATES $yNum double\n"
    782         append out [$yv range 0 end]
    783         append out "\n"
    784         append out "Z_COORDINATES 1 double\n"
    785         append out "0\n"
    786         foreach axis {x y} {
    787             if { [info exists ${axis}Min] } {
    788                 set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
    789             }
    790         }
     776        append out "DATASET RECTILINEAR_GRID\n"
     777        append out "DIMENSIONS $xNum $yNum 1\n"
     778        append out "X_COORDINATES $xNum double\n"
     779        append out [$xv range 0 end]
     780        append out "\n"
     781        append out "Y_COORDINATES $yNum double\n"
     782        append out [$yv range 0 end]
     783        append out "\n"
     784        append out "Z_COORDINATES 1 double\n"
     785        append out "0\n"
     786        foreach axis {x y} {
     787            if { [info exists ${axis}Min] } {
     788                set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
     789            }
     790        }
    791791        set _limits(z) [list 0 0]
    792         set _vtkdata $out
     792        set _vtkdata $out
    793793    } elseif { $_dim == 1 } {
    794794        set _numPoints $xNum
    795795        set _numCells [expr $xNum - 1]
    796         append out "DATASET RECTILINEAR_GRID\n"
    797         append out "DIMENSIONS $xNum 1 1\n"
    798         append out "X_COORDINATES $xNum double\n"
    799         append out [$xv range 0 end]
    800         append out "\n"
    801         append out "Y_COORDINATES 1 double\n"
    802         append out "0\n"
    803         append out "Z_COORDINATES 1 double\n"
    804         append out "0\n"
     796        append out "DATASET RECTILINEAR_GRID\n"
     797        append out "DIMENSIONS $xNum 1 1\n"
     798        append out "X_COORDINATES $xNum double\n"
     799        append out [$xv range 0 end]
     800        append out "\n"
     801        append out "Y_COORDINATES 1 double\n"
     802        append out "0\n"
     803        append out "Z_COORDINATES 1 double\n"
     804        append out "0\n"
    805805        if { [info exists xMin] } {
    806806            set _limits(x) [list $xMin $xMax]
     
    808808        set _limits(y) [list 0 0]
    809809        set _limits(z) [list 0 0]
    810         set _vtkdata $out
    811     } else {
    812         puts stderr "WARNING: bad grid \"$path\": invalid dimension \"$_dim\""
     810        set _vtkdata $out
     811    } else {
     812        puts stderr "WARNING: bad grid \"$path\": invalid dimension \"$_dim\""
    813813        return 0
    814814    }
    815     blt::vector destroy $xv $yv $zv 
     815    blt::vector destroy $xv $yv $zv
    816816    return 1
    817817}
     
    847847    set celltypes {}
    848848    foreach { a b c } $triangles {
    849         append data " 3 $a $b $c\n"
    850         append celltypes "5\n"
    851         incr _numCells
     849        append data " 3 $a $b $c\n"
     850        append celltypes "5\n"
     851        incr _numCells
    852852    }
    853853    append out "DATASET UNSTRUCTURED_GRID\n"
    854854    append out "POINTS $_numPoints double\n"
    855855    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    856         append out " $x $y $z\n"
     856        append out " $x $y $z\n"
    857857    }
    858858    set count [expr $_numCells * 4]
     
    879879    set celltypes {}
    880880    foreach { a b c d } $quads {
    881         append data " 4 $a $b $c $d\n"
    882         append celltypes "9\n"
    883         incr _numCells
     881        append data " 4 $a $b $c $d\n"
     882        append celltypes "9\n"
     883        incr _numCells
    884884    }
    885885    append out "DATASET UNSTRUCTURED_GRID\n"
    886886    append out "POINTS $_numPoints double\n"
    887887    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    888         append out " $x $y $z\n"
     888        append out " $x $y $z\n"
    889889    }
    890890    set count [expr $_numCells * 5]
     
    916916            continue
    917917        }
    918         append data " $numIndices $line\n"
    919         incr _numCells
     918        append data " $numIndices $line\n"
     919        incr _numCells
    920920        set count [expr $count + $numIndices + 1]
    921921    }
     
    923923    append out "POINTS $_numPoints double\n"
    924924    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    925         append out " $x $y $z\n"
     925        append out " $x $y $z\n"
    926926    }
    927927    append out "VERTICES $_numCells $count\n"
     
    950950            continue
    951951        }
    952         append data " $numIndices $line\n"
    953         incr _numCells
     952        append data " $numIndices $line\n"
     953        incr _numCells
    954954        set count [expr $count + $numIndices + 1]
    955955    }
     
    957957    append out "POINTS $_numPoints double\n"
    958958    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    959         append out " $x $y $z\n"
     959        append out " $x $y $z\n"
    960960    }
    961961    append out "LINES $_numCells $count\n"
     
    984984            continue
    985985        }
    986         append data " $numIndices $line\n"
    987         incr _numCells
     986        append data " $numIndices $line\n"
     987        incr _numCells
    988988        set count [expr $count + $numIndices + 1]
    989989    }
     
    991991    append out "POINTS $_numPoints double\n"
    992992    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    993         append out " $x $y $z\n"
     993        append out " $x $y $z\n"
    994994    }
    995995    append out "POLYGONS $_numCells $count\n"
     
    10181018            continue
    10191019        }
    1020         append data " $numIndices $line\n"
    1021         incr _numCells
     1020        append data " $numIndices $line\n"
     1021        incr _numCells
    10221022        set count [expr $count + $numIndices + 1]
    10231023    }
     
    10251025    append out "POINTS $_numPoints double\n"
    10261026    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    1027         append out " $x $y $z\n"
     1027        append out " $x $y $z\n"
    10281028    }
    10291029    append out "TRIANGLE_STRIPS $_numCells $count\n"
     
    10471047    set celltypes {}
    10481048    foreach { a b c d } $tetras {
    1049         append data " 4 $a $b $c $d\n"
    1050         append celltypes "10\n"
    1051         incr _numCells
     1049        append data " 4 $a $b $c $d\n"
     1050        append celltypes "10\n"
     1051        incr _numCells
    10521052    }
    10531053    append out "DATASET UNSTRUCTURED_GRID\n"
    10541054    append out "POINTS $_numPoints double\n"
    10551055    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    1056         append out " $x $y $z\n"
     1056        append out " $x $y $z\n"
    10571057    }
    10581058    set count [expr $_numCells * 5]
     
    10761076    set celltypes {}
    10771077    foreach { a b c d e f g h } $hexas {
    1078         append data " 8 $a $b $c $d $e $f $g $h\n"
    1079         append celltypes "12\n"
    1080         incr _numCells
     1078        append data " 8 $a $b $c $d $e $f $g $h\n"
     1079        append celltypes "12\n"
     1080        incr _numCells
    10811081    }
    10821082    append out "DATASET UNSTRUCTURED_GRID\n"
    10831083    append out "POINTS $_numPoints double\n"
    10841084    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    1085         append out " $x $y $z\n"
     1085        append out " $x $y $z\n"
    10861086    }
    10871087    set count [expr $_numCells * 9]
     
    11051105    set celltypes {}
    11061106    foreach { a b c d e f } $wedges {
    1107         append data " 6 $a $b $c $d $e $f\n"
    1108         append celltypes "13\n"
    1109         incr _numCells
     1107        append data " 6 $a $b $c $d $e $f\n"
     1108        append celltypes "13\n"
     1109        incr _numCells
    11101110    }
    11111111    append out "DATASET UNSTRUCTURED_GRID\n"
    11121112    append out "POINTS $_numPoints double\n"
    11131113    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    1114         append out " $x $y $z\n"
     1114        append out " $x $y $z\n"
    11151115    }
    11161116    set count [expr $_numCells * 7]
     
    11341134    set celltypes {}
    11351135    foreach { a b c d e } $pyramids {
    1136         append data " 5 $a $b $c $d $e\n"
    1137         append celltypes "14\n"
    1138         incr _numCells
     1136        append data " 5 $a $b $c $d $e\n"
     1137        append celltypes "14\n"
     1138        incr _numCells
    11391139    }
    11401140    append out "DATASET UNSTRUCTURED_GRID\n"
    11411141    append out "POINTS $_numPoints double\n"
    11421142    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
    1143         append out " $x $y $z\n"
     1143        append out " $x $y $z\n"
    11441144    }
    11451145    set count [expr $_numCells * 6]
     
    11531153
    11541154    set _vtkdata $out
    1155     return 1 
     1155    return 1
    11561156}
    11571157
     
    12411241    set celltypes [$_xmlobj get $path.unstructured.celltypes]
    12421242    if { $numCells == 0 && $celltypes != "" } {
    1243         puts stderr "WARNING: bad unstuctured grid \"$path\": no <cells> description found."
     1243        puts stderr "WARNING: bad unstuctured grid \"$path\": no <cells> description found."
    12441244        return 0
    12451245    }
     
    12661266        }
    12671267    }
    1268     # Step 2: Allow points to be specified as <points> or 
     1268    # Step 2: Allow points to be specified as <points> or
    12691269    #         <xcoords>, <ycoords>, <zcoords>.  Split and convert into
    12701270    #         3 vectors, one for each coordinate.
     
    14141414    set data {}
    14151415    foreach cname [$_xmlobj children -type node $path] {
    1416         append data "[$_xmlobj get $path.$cname]\n"
    1417     }   
     1416        append data "[$_xmlobj get $path.$cname]\n"
     1417    }
    14181418    Rappture::ReadPoints $data _dim points
    14191419    if { $_dim == 2 } {
    1420         set all [blt::vector create \#auto]
    1421         set xv [blt::vector create \#auto]
    1422         set yv [blt::vector create \#auto]
    1423         set zv [blt::vector create \#auto]
    1424         $all set $points
    1425         $all split $xv $yv
    1426         set _numPoints [$xv length]
     1420        set all [blt::vector create \#auto]
     1421        set xv [blt::vector create \#auto]
     1422        set yv [blt::vector create \#auto]
     1423        set zv [blt::vector create \#auto]
     1424        $all set $points
     1425        $all split $xv $yv
     1426        set _numPoints [$xv length]
    14271427        set _limits(x) [$xv limits]
    14281428        set _limits(y) [$yv limits]
    14291429        set _limits(z) [list 0 0]
    1430         # 2D Dataset. All Z coordinates are 0
    1431         $zv seq 0.0 0.0 $_numPoints
    1432         $all merge $xv $yv $zv
    1433         set points [$all range 0 end]
    1434         blt::vector destroy $all $xv $yv $zv
     1430        # 2D Dataset. All Z coordinates are 0
     1431        $zv seq 0.0 0.0 $_numPoints
     1432        $all merge $xv $yv $zv
     1433        set points [$all range 0 end]
     1434        blt::vector destroy $all $xv $yv $zv
    14351435    } elseif { $_dim == 3 } {
    1436         set all [blt::vector create \#auto]
    1437         set xv [blt::vector create \#auto]
    1438         set yv [blt::vector create \#auto]
    1439         set zv [blt::vector create \#auto]
    1440         $all set $points
    1441         $all split $xv $yv $zv
    1442         set _numPoints [$xv length]
     1436        set all [blt::vector create \#auto]
     1437        set xv [blt::vector create \#auto]
     1438        set yv [blt::vector create \#auto]
     1439        set zv [blt::vector create \#auto]
     1440        $all set $points
     1441        $all split $xv $yv $zv
     1442        set _numPoints [$xv length]
    14431443        set _limits(x) [$xv limits]
    14441444        set _limits(y) [$yv limits]
    14451445        set _limits(z) [$zv limits]
    1446         set points [$all range 0 end]
    1447         blt::vector destroy $all $xv $yv $zv
    1448     } else {
    1449         error "bad dimension \"$_dim\" for nodes mesh"
     1446        set points [$all range 0 end]
     1447        blt::vector destroy $all $xv $yv $zv
     1448    } else {
     1449        error "bad dimension \"$_dim\" for nodes mesh"
    14501450    }
    14511451    array set node2celltype {
    1452         3 5
    1453         4 10
    1454         8 12
    1455         6 13
    1456         5 14
     1452        3 5
     1453        4 10
     1454        8 12
     1455        6 13
     1456        5 14
    14571457    }
    14581458    set count 0
     
    14631463    foreach cname [$_xmlobj children -type element $path] {
    14641464        set nodeList [$_mesh get $cname.nodes]
    1465         set numNodes [llength $nodeList]
    1466         if { ![info exists node2celltype($numNodes)] } {
    1467             puts stderr "WARNING: bad nodes/elements mesh \$path\": unknown number of indices \"$_numNodes\": should be 3, 4, 5, 6, or 8"
    1468             return 0
    1469         }
    1470         set celltype $node2celltype($numNodes)
    1471         append celltypes "  $celltype\n"
     1465        set numNodes [llength $nodeList]
     1466        if { ![info exists node2celltype($numNodes)] } {
     1467            puts stderr "WARNING: bad nodes/elements mesh \$path\": unknown number of indices \"$_numNodes\": should be 3, 4, 5, 6, or 8"
     1468            return 0
     1469        }
     1470        set celltype $node2celltype($numNodes)
     1471        append celltypes "  $celltype\n"
    14721472        if { $celltype == 12 } {
    14731473            # Formerly used voxels instead of hexahedrons. We're converting
     
    14791479            }
    14801480            set nodeList $newList
    1481         } 
    1482         append data "  $numNodes $nodeList\n"
    1483         incr _numCells
    1484         incr count $numNodes
    1485         incr count;                     # One extra for the VTK celltype id.
     1481        }
     1482        append data "  $numNodes $nodeList\n"
     1483        incr _numCells
     1484        incr count $numNodes
     1485        incr count;                        # One extra for the VTK celltype id.
    14861486    }
    14871487
     
    14961496    append out "\n"
    14971497    set _vtkdata $out
    1498     set _isValid 1 
     1498    set _isValid 1
    14991499}
    15001500
  • branches/1.4/gui/scripts/visviewer.tcl

    r4761 r5007  
    1 # -*- mode: tcl; indent-tabs-mode: nil -*- 
     1# -*- mode: tcl; indent-tabs-mode: nil -*-
    22
    33# ----------------------------------------------------------------------
    4 #  VisViewer - 
    5 #
    6 #  This class is the base class for the various visualization viewers 
     4#  VisViewer -
     5#
     6#  This class is the base class for the various visualization viewers
    77#  that use the nanoserver render farm.
    88#
     
    3131    private common _done            ;   # Used to indicate status of send.
    3232    private variable _buffer        ;   # buffer for incoming/outgoing commands
    33     private variable _initialized 
     33    private variable _initialized
    3434    private variable _isOpen 0
    3535    private variable _afterId -1
     
    7171    private method SendHelper {}
    7272    private method SendHelper.old {}
    73     private method WaitDialog { state } 
    74 
    75     protected method ToggleConsole {} 
    76     private method DebugConsole {} 
    77     private method BuildConsole {} 
    78     private method HideConsole {} 
    79     private method TraceComm { channel {data {}} } 
    80     private method SendDebugCommand {} 
     73    private method WaitDialog { state }
     74
     75    protected method ToggleConsole {}
     76    private method DebugConsole {}
     77    private method BuildConsole {}
     78    private method HideConsole {}
     79    private method TraceComm { channel {data {}} }
     80    private method SendDebugCommand {}
    8181
    8282    protected method CheckConnection {}
     
    8585    protected method Connect { servers }
    8686    protected method Disconnect {}
    87     protected method EnableWaitDialog { timeout } 
     87    protected method EnableWaitDialog { timeout }
    8888    protected method Euler2XYZ { theta phi psi }
    8989    protected method Flush {}
     
    9999    protected method SendEcho { channel {data ""} }
    100100    protected method StartBufferingCommands {}
    101     protected method StartWaiting {} 
     101    protected method StartWaiting {}
    102102    protected method StopBufferingCommands {}
    103     protected method StopWaiting {} 
    104 
    105     private method Waiting { option widget } 
     103    protected method StopWaiting {}
     104
     105    private method Waiting { option widget }
    106106
    107107    private proc CheckNameList { namelist }  {
     
    197197    global env
    198198    if { [info exists env(VISRECORDER)] } {
    199         set _logging 1
    200         if { [file exists /tmp/recording.log] } {
    201             file delete /tmp/recording.log
    202         }
     199        set _logging 1
     200        if { [file exists /tmp/recording.log] } {
     201            file delete /tmp/recording.log
     202        }
    203203    }
    204204    eval itk_initialize $args
     
    256256#    Connect to the visualization server (e.g. nanovis, pymolproxy).
    257257#    Creates an event callback that is triggered when we are idle
    258 #    (no I/O with the server) for some specified time. 
     258#    (no I/O with the server) for some specified time.
    259259#
    260260itcl::body Rappture::VisViewer::Connect { servers } {
     
    279279        set _hostname $server
    280280        fconfigure $_sid -translation binary -encoding binary
    281        
     281
    282282        # Read back the server identification string.
    283283        if { [gets $_sid data] <= 0 } {
     
    315315    after cancel $_afterId
    316316    $_dispatcher cancel !timeout
    317     catch {close $_sid} 
     317    catch {close $_sid}
    318318    set _sid ""
    319319    set _buffer(in) ""
     
    340340# CheckConection --
    341341#
    342 #   This routine is called whenever we're about to send/receive data on 
    343 #   the socket connection to the visualization server.  If we're connected, 
    344 #   then reset the timeout event.  Otherwise try to reconnect to the 
     342#   This routine is called whenever we're about to send/receive data on
     343#   the socket connection to the visualization server.  If we're connected,
     344#   then reset the timeout event.  Otherwise try to reconnect to the
    345345#   visualization server.
    346346#
     
    398398    }
    399399    puts -nonewline $_sid $_buffer(out)
    400     flush $_sid 
     400    flush $_sid
    401401    set _done($this) 1;                 # Success
    402402}
     
    478478# StartWaiting --
    479479#
    480 #    Read some number of bytes from the visualization server. 
     480#    Read some number of bytes from the visualization server.
    481481#
    482482
    483483itcl::body Rappture::VisViewer::StartWaiting {} {
    484484    if { $_waitTimeout > 0 } {
    485         after cancel $_afterId 
     485        after cancel $_afterId
    486486        set _afterId [after $_waitTimeout [itcl::code $this WaitDialog on]]
    487487    }
    488488}
    489489
    490 itcl::body Rappture::VisViewer::StopWaiting {} { 
     490itcl::body Rappture::VisViewer::StopWaiting {} {
    491491    if { $_waitTimeout > 0 } {
    492492        WaitDialog off
     
    494494}
    495495
    496 itcl::body Rappture::VisViewer::EnableWaitDialog { value } { 
     496itcl::body Rappture::VisViewer::EnableWaitDialog { value } {
    497497    set _waitTimeout $value
    498498}
     
    501501# ReceiveBytes --
    502502#
    503 #    Read some number of bytes from the visualization server. 
     503#    Read some number of bytes from the visualization server.
    504504#
    505505itcl::body Rappture::VisViewer::ReceiveBytes { size } {
     
    619619}
    620620
    621 # 
     621#
    622622# ReceiveEcho --
    623623#
     
    642642        }
    643643        set inner [frame $itk_component(plotarea).view.splash]
    644         $inner configure -relief raised -bd 2 
     644        $inner configure -relief raised -bd 2
    645645        label $inner.text1 -text "Working...\nPlease wait." \
    646             -font "Arial 10" 
    647         label $inner.icon 
     646            -font "Arial 10"
     647        label $inner.icon
    648648        pack $inner -expand yes -anchor c
    649649        blt::table $inner \
    650650            0,0 $inner.text1 -anchor w \
    651             0,1 $inner.icon 
     651            0,1 $inner.icon
    652652        Waiting start $inner.icon
    653653    } else {
     
    709709    pack $f.send.l -side left
    710710    itk_component add command {
    711         entry $f.send.e -background white
     711        entry $f.send.e -background white
    712712    } {
    713         ignore -background
     713        ignore -background
    714714    }
    715715    pack $f.send.e -side left -expand yes -fill x
     
    719719    pack $f.sb -side right -fill y
    720720    itk_component add trace {
    721         text $f.comm -wrap char -yscrollcommand "$f.sb set" -background white
     721        text $f.comm -wrap char -yscrollcommand "$f.sb set" -background white
    722722    } {
    723         ignore -background
     723        ignore -background
    724724    }
    725725    pack $f.comm -expand yes -fill both
     
    729729
    730730    $itk_component(trace) tag configure error -foreground red \
    731         -font -*-courier-medium-o-normal-*-*-120-*
     731        -font -*-courier-medium-o-normal-*-*-120-*
    732732    $itk_component(trace) tag configure incoming -foreground blue
    733733}
     
    741741itcl::body Rappture::VisViewer::ToggleConsole {} {
    742742    if { $_debugConsole } {
    743         set _debugConsole 0
     743        set _debugConsole 0
    744744    } else {
    745         set _debugConsole 1
     745        set _debugConsole 1
    746746    }
    747747    DebugConsole
     
    751751# DebugConsole --
    752752#
    753 #    Based on the value of the variable _debugConsole, turns on/off 
    754 #    debugging. This is done by setting/unsetting a procedure that 
    755 #    is called whenever new characters are received or sent on the 
     753#    Based on the value of the variable _debugConsole, turns on/off
     754#    debugging. This is done by setting/unsetting a procedure that
     755#    is called whenever new characters are received or sent on the
    756756#    socket to the render server.  Additionally, the debug console
    757757#    is created if necessary and hidden/shown.
     
    759759itcl::body Rappture::VisViewer::DebugConsole {} {
    760760    if { ![winfo exists .renderconsole] } {
    761         BuildConsole
     761        BuildConsole
    762762    }
    763763    if { $_debugConsole } {
    764         $this configure -sendcommand [itcl::code $this TraceComm]
    765         $this configure -receivecommand [itcl::code $this TraceComm]
    766         wm deiconify .renderconsole
     764        $this configure -sendcommand [itcl::code $this TraceComm]
     765        $this configure -receivecommand [itcl::code $this TraceComm]
     766        wm deiconify .renderconsole
    767767    } else {
    768         $this configure -sendcommand ""
    769         $this configure -receivecommand ""
    770         wm withdraw .renderconsole
     768        $this configure -sendcommand ""
     769        $this configure -receivecommand ""
     770        wm withdraw .renderconsole
    771771    }
    772772}
     
    850850                -title "Render Server Error"
    851851            set inner [$popup component inner]
    852             label $inner.summary -text "" -anchor w 
     852            label $inner.summary -text "" -anchor w
    853853
    854854            Rappture::Scroller $inner.scrl \
    855                 -xscrollmode auto -yscrollmode auto 
     855                -xscrollmode auto -yscrollmode auto
    856856            text $inner.scrl.text \
    857857                -font "Arial 9 " -background white -relief sunken -bd 1 \
     
    862862            blt::table $inner \
    863863                0,0 $inner.scrl -fill both \
    864                 1,0 $inner.ok 
    865             $inner.scrl.text tag configure normal -font "Arial 9" 
    866             $inner.scrl.text tag configure italic -font "Arial 9 italic" 
     864                1,0 $inner.ok
     865            $inner.scrl.text tag configure normal -font "Arial 9"
     866            $inner.scrl.text tag configure italic -font "Arial 9 italic"
    867867            $inner.scrl.text tag configure bold -font "Arial 10 bold"
    868868            $inner.scrl.text tag configure code -font "Courier 10 bold"
     
    873873        set inner [$popup component inner]
    874874        $inner.scrl.text delete 0.0 end
    875        
     875
    876876        $inner.scrl.text configure -state normal
    877877        $inner.scrl.text insert end "The following error was reported by the render server:\n\n" bold
     
    943943        "blue-to-grey" {
    944944            return {
    945                 0.0                     0.000 0.600 0.800 
    946                 0.14285714285714285     0.400 0.900 1.000 
    947                 0.2857142857142857      0.600 1.000 1.000 
    948                 0.42857142857142855     0.800 1.000 1.000 
    949                 0.5714285714285714      0.900 0.900 0.900 
    950                 0.7142857142857143      0.600 0.600 0.600 
    951                 0.8571428571428571      0.400 0.400 0.400 
     945                0.0                     0.000 0.600 0.800
     946                0.14285714285714285     0.400 0.900 1.000
     947                0.2857142857142857      0.600 1.000 1.000
     948                0.42857142857142855     0.800 1.000 1.000
     949                0.5714285714285714      0.900 0.900 0.900
     950                0.7142857142857143      0.600 0.600 0.600
     951                0.8571428571428571      0.400 0.400 0.400
    952952                1.0                     0.200 0.200 0.200
    953953            }
    954954        }
    955955        "white-to-blue" {
    956             return { 
    957                 0.0                     0.900 1.000 1.000 
    958                 0.1111111111111111      0.800 0.983 1.000 
    959                 0.2222222222222222      0.700 0.950 1.000 
    960                 0.3333333333333333      0.600 0.900 1.000 
    961                 0.4444444444444444      0.500 0.833 1.000 
    962                 0.5555555555555556      0.400 0.750 1.000 
    963                 0.6666666666666666      0.300 0.650 1.000 
    964                 0.7777777777777778      0.200 0.533 1.000 
    965                 0.8888888888888888      0.100 0.400 1.000 
     956            return {
     957                0.0                     0.900 1.000 1.000
     958                0.1111111111111111      0.800 0.983 1.000
     959                0.2222222222222222      0.700 0.950 1.000
     960                0.3333333333333333      0.600 0.900 1.000
     961                0.4444444444444444      0.500 0.833 1.000
     962                0.5555555555555556      0.400 0.750 1.000
     963                0.6666666666666666      0.300 0.650 1.000
     964                0.7777777777777778      0.200 0.533 1.000
     965                0.8888888888888888      0.100 0.400 1.000
    966966                1.0                     0.000 0.250 1.000
    967967            }
     
    969969        "brown-to-blue" {
    970970            return {
    971                 0.0                             0.200   0.100   0.000 
    972                 0.09090909090909091             0.400   0.187   0.000 
    973                 0.18181818181818182             0.600   0.379   0.210 
    974                 0.2727272727272727              0.800   0.608   0.480 
    975                 0.36363636363636365             0.850   0.688   0.595 
    976                 0.45454545454545453             0.950   0.855   0.808 
    977                 0.5454545454545454              0.800   0.993   1.000 
    978                 0.6363636363636364              0.600   0.973   1.000 
    979                 0.7272727272727273              0.400   0.940   1.000 
    980                 0.8181818181818182              0.200   0.893   1.000 
    981                 0.9090909090909091              0.000   0.667   0.800 
    982                 1.0                             0.000   0.480   0.600 
     971                0.0                             0.200   0.100   0.000
     972                0.09090909090909091             0.400   0.187   0.000
     973                0.18181818181818182             0.600   0.379   0.210
     974                0.2727272727272727              0.800   0.608   0.480
     975                0.36363636363636365             0.850   0.688   0.595
     976                0.45454545454545453             0.950   0.855   0.808
     977                0.5454545454545454              0.800   0.993   1.000
     978                0.6363636363636364              0.600   0.973   1.000
     979                0.7272727272727273              0.400   0.940   1.000
     980                0.8181818181818182              0.200   0.893   1.000
     981                0.9090909090909091              0.000   0.667   0.800
     982                1.0                             0.000   0.480   0.600
    983983            }
    984984        }
    985985        "blue-to-brown" {
    986986            return {
    987                 0.0                             0.000   0.480   0.600 
    988                 0.09090909090909091             0.000   0.667   0.800 
    989                 0.18181818181818182             0.200   0.893   1.000 
    990                 0.2727272727272727              0.400   0.940   1.000 
    991                 0.36363636363636365             0.600   0.973   1.000 
    992                 0.45454545454545453             0.800   0.993   1.000 
    993                 0.5454545454545454              0.950   0.855   0.808 
    994                 0.6363636363636364              0.850   0.688   0.595 
    995                 0.7272727272727273              0.800   0.608   0.480 
    996                 0.8181818181818182              0.600   0.379   0.210 
    997                 0.9090909090909091              0.400   0.187   0.000 
    998                 1.0                             0.200   0.100   0.000 
     987                0.0                             0.000   0.480   0.600
     988                0.09090909090909091             0.000   0.667   0.800
     989                0.18181818181818182             0.200   0.893   1.000
     990                0.2727272727272727              0.400   0.940   1.000
     991                0.36363636363636365             0.600   0.973   1.000
     992                0.45454545454545453             0.800   0.993   1.000
     993                0.5454545454545454              0.950   0.855   0.808
     994                0.6363636363636364              0.850   0.688   0.595
     995                0.7272727272727273              0.800   0.608   0.480
     996                0.8181818181818182              0.600   0.379   0.210
     997                0.9090909090909091              0.400   0.187   0.000
     998                1.0                             0.200   0.100   0.000
    999999            }
    10001000        }
     
    10341034            set clist {
    10351035                "#EE82EE"
    1036                 "#4B0082" 
    1037                 "blue" 
    1038                 "#008000" 
    1039                 "yellow" 
    1040                 "#FFA500" 
    1041                 "red" 
     1036                "#4B0082"
     1037                "blue"
     1038                "#008000"
     1039                "yellow"
     1040                "#FFA500"
     1041                "red"
    10421042            }
    10431043        }
    10441044        "BGYOR" {
    10451045            set clist {
    1046                 "blue" 
    1047                 "#008000" 
    1048                 "yellow" 
    1049                 "#FFA500" 
    1050                 "red" 
     1046                "blue"
     1047                "#008000"
     1048                "yellow"
     1049                "#FFA500"
     1050                "red"
    10511051            }
    10521052        }
    10531053        "ROYGB" {
    10541054            set clist {
    1055                 "red" 
    1056                 "#FFA500" 
    1057                 "yellow" 
    1058                 "#008000" 
    1059                 "blue" 
     1055                "red"
     1056                "#FFA500"
     1057                "yellow"
     1058                "#008000"
     1059                "blue"
    10601060            }
    10611061        }
    10621062        "RYGCB" {
    10631063            set clist {
    1064                 "red" 
    1065                 "yellow" 
     1064                "red"
     1065                "yellow"
    10661066                "green"
    10671067                "cyan"
     
    10711071        "BCGYR" {
    10721072            set clist {
    1073                 "blue" 
     1073                "blue"
    10741074                "cyan"
    10751075                "green"
    1076                 "yellow" 
    1077                 "red" 
     1076                "yellow"
     1077                "red"
    10781078            }
    10791079        }
    10801080        "spectral" {
    10811081            return {
    1082                 0.0 0.150 0.300 1.000 
    1083                 0.1 0.250 0.630 1.000 
    1084                 0.2 0.450 0.850 1.000 
    1085                 0.3 0.670 0.970 1.000 
    1086                 0.4 0.880 1.000 1.000 
    1087                 0.5 1.000 1.000 0.750 
    1088                 0.6 1.000 0.880 0.600 
    1089                 0.7 1.000 0.680 0.450 
    1090                 0.8 0.970 0.430 0.370 
    1091                 0.9 0.850 0.150 0.196 
     1082                0.0 0.150 0.300 1.000
     1083                0.1 0.250 0.630 1.000
     1084                0.2 0.450 0.850 1.000
     1085                0.3 0.670 0.970 1.000
     1086                0.4 0.880 1.000 1.000
     1087                0.5 1.000 1.000 0.750
     1088                0.6 1.000 0.880 0.600
     1089                0.7 1.000 0.680 0.450
     1090                0.8 0.970 0.430 0.370
     1091                0.9 0.850 0.150 0.196
    10921092                1.0 0.650 0.000 0.130
    10931093            }
     
    10951095        "green-to-magenta" {
    10961096            return {
    1097                 0.0 0.000 0.316 0.000 
    1098                 0.06666666666666667 0.000 0.526 0.000 
    1099                 0.13333333333333333 0.000 0.737 0.000 
    1100                 0.2 0.000 0.947 0.000 
    1101                 0.26666666666666666 0.316 1.000 0.316 
    1102                 0.3333333333333333 0.526 1.000 0.526 
    1103                 0.4 0.737 1.000 0.737 
    1104                 0.4666666666666667 1.000 1.000 1.000 
    1105                 0.5333333333333333 1.000 0.947 1.000 
    1106                 0.6 1.000 0.737 1.000 
    1107                 0.6666666666666666 1.000 0.526 1.000 
    1108                 0.7333333333333333 1.000 0.316 1.000 
    1109                 0.8 0.947 0.000 0.947 
    1110                 0.8666666666666667 0.737 0.000 0.737 
    1111                 0.9333333333333333 0.526 0.000 0.526 
     1097                0.0 0.000 0.316 0.000
     1098                0.06666666666666667 0.000 0.526 0.000
     1099                0.13333333333333333 0.000 0.737 0.000
     1100                0.2 0.000 0.947 0.000
     1101                0.26666666666666666 0.316 1.000 0.316
     1102                0.3333333333333333 0.526 1.000 0.526
     1103                0.4 0.737 1.000 0.737
     1104                0.4666666666666667 1.000 1.000 1.000
     1105                0.5333333333333333 1.000 0.947 1.000
     1106                0.6 1.000 0.737 1.000
     1107                0.6666666666666666 1.000 0.526 1.000
     1108                0.7333333333333333 1.000 0.316 1.000
     1109                0.8 0.947 0.000 0.947
     1110                0.8666666666666667 0.737 0.000 0.737
     1111                0.9333333333333333 0.526 0.000 0.526
    11121112                1.0 0.316 0.000 0.316
    11131113            }
    11141114        }
    11151115        "greyscale" {
    1116             return { 
     1116            return {
    11171117                0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0
    11181118            }
     
    11441144#
    11451145itcl::body Rappture::VisViewer::StartBufferingCommands { } {
    1146     incr _buffering 
     1146    incr _buffering
    11471147    if { $_buffering == 1 } {
    11481148        set _outbuf ""
     
    11701170#
    11711171#       Send commands off to the rendering server.  If we're currently
    1172 #       sending data objects to the server, buffer the commands to be 
     1172#       sending data objects to the server, buffer the commands to be
    11731173#       sent later.
    11741174#
     
    11851185#
    11861186#       Send commands off to the rendering server.  If we're currently
    1187 #       sending data objects to the server, buffer the commands to be 
     1187#       sending data objects to the server, buffer the commands to be
    11881188#       sent later.
    11891189#
  • branches/1.4/gui/scripts/vtkheightmapviewer.tcl

    r4770 r5007  
    1 # -*- mode: tcl; indent-tabs-mode: nil -*- 
     1# -*- mode: tcl; indent-tabs-mode: nil -*-
    22# ----------------------------------------------------------------------
    33#  COMPONENT: vtkheightmapviewer - Vtk heightmap viewer
     
    5858    public method get {args}
    5959    public method isconnected {}
    60     public method parameters {title args} { 
    61         # do nothing 
     60    public method parameters {title args} {
     61        # do nothing
    6262    }
    6363    public method scale {args}
     
    6969    private method BuildColormap { name }
    7070    private method BuildContourTab {}
    71     private method BuildDownloadPopup { widget command } 
     71    private method BuildDownloadPopup { widget command }
    7272    private method CameraReset {}
    7373    private method Combo { option }
     
    7878    private method DoRotate {}
    7979    private method DrawLegend {}
    80     private method EnterLegend { x y } 
    81     private method EventuallyRequestLegend {} 
    82     private method EventuallyResize { w h } 
     80    private method EnterLegend { x y }
     81    private method EventuallyRequestLegend {}
     82    private method EventuallyResize { w h }
    8383    private method EventuallyRotate { q }
    84     private method GetHeightmapScale {} 
    85     private method GetImage { args } 
    86     private method GetVtkData { args } 
     84    private method GetHeightmapScale {}
     85    private method GetImage { args }
     86    private method GetVtkData { args }
    8787    private method InitSettings { args  }
    88     private method IsValidObject { dataobj } 
     88    private method IsValidObject { dataobj }
    8989    private method LeaveLegend {}
    90     private method MotionLegend { x y } 
     90    private method MotionLegend { x y }
    9191    private method Pan {option x y}
    9292    private method PanCamera {}
    9393    private method Pick {x y}
    94     private method QuaternionToView { q } { 
     94    private method QuaternionToView { q } {
    9595        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
    9696    }
     
    104104    private method SetCurrentColormap { color }
    105105    private method SetLegendTip { x y }
    106     private method SetObjectStyle { dataobj comp } 
     106    private method SetObjectStyle { dataobj comp }
    107107    private method SetOrientation { side }
    108108    private method UpdateContourList {}
    109     private method ViewToQuaternion {} { 
     109    private method ViewToQuaternion {} {
    110110        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
    111111    }
     
    116116    private variable _obj2datasets
    117117    private variable _obj2ovride   ;    # maps dataobj => style override
    118     private variable _comp2scale;       # maps dataset to the heightmap scale.
    119     private variable _datasets     ;    # contains all the dataobj-component 
     118    private variable _comp2scale;       # maps dataset to the heightmap scale.
     119    private variable _datasets     ;    # contains all the dataobj-component
    120120                                   ;    # datasets in the server
    121121    private variable _colormaps    ;    # contains all the colormaps
     
    133133
    134134    private variable _click        ;    # info used for rotate operations
    135     private variable _limits       ;    # Holds overall limits for all dataobjs 
     135    private variable _limits       ;    # Holds overall limits for all dataobjs
    136136                                        # using the viewer.
    137137    private variable _view         ;    # view params for 3D view
     
    158158    private variable _rotatePending 0
    159159    private variable _legendPending 0
    160     private variable _fieldNames {} 
    161     private variable _fields 
     160    private variable _fieldNames {}
     161    private variable _fields
    162162    private variable _curFldName ""
    163163    private variable _curFldLabel ""
     
    255255    } {
    256256        usual
    257         ignore -highlightthickness -borderwidth -background 
     257        ignore -highlightthickness -borderwidth -background
    258258    }
    259259
     
    261261        menu $itk_component(plotarea).menu \
    262262            -relief flat \
    263             -tearoff no 
     263            -tearoff no
    264264    } {
    265265        usual
     
    281281
    282282    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
    283     set _map(cwidth) -1 
    284     set _map(cheight) -1 
     283    set _map(cwidth) -1
     284    set _map(cheight) -1
    285285    set _map(zoom) 1.0
    286286    set _map(original) ""
     
    350350        BuildCameraTab
    351351    } errs] != 0 } {
    352         global errorInfo
     352        global errorInfo
    353353        puts stderr "errs=$errs errorInfo=$errorInfo"
    354354    }
    355355
    356     # Hack around the Tk panewindow.  The problem is that the requested 
     356    # Hack around the Tk panewindow.  The problem is that the requested
    357357    # size of the 3d view isn't set until an image is retrieved from
    358358    # the server.  So the panewindow uses the tiny size.
     
    360360    pack forget $itk_component(view)
    361361    blt::table $itk_component(plotarea) \
    362         0,0 $itk_component(view) -fill both -reqwidth $w 
     362        0,0 $itk_component(view) -fill both -reqwidth $w
    363363    blt::table configure $itk_component(plotarea) c1 -resize none
    364364
     
    444444
    445445itcl::body Rappture::VtkHeightmapViewer::DoRotate {} {
    446     SendCmd "camera orient [ViewToQuaternion]" 
     446    SendCmd "camera orient [ViewToQuaternion]"
    447447    set _rotatePending 0
    448448}
     
    471471    if { !$_rotatePending } {
    472472        set _rotatePending 1
    473         global rotate_delay 
     473        global rotate_delay
    474474        $_dispatcher event -after $rotate_delay !rotate
    475475    }
     
    570570                    continue
    571571                }
    572                 if {[info exists _obj2ovride($dataobj-raise)] && 
     572                if {[info exists _obj2ovride($dataobj-raise)] &&
    573573                    $_obj2ovride($dataobj-raise)} {
    574574                    set dlist [linsert $dlist 0 $dataobj]
     
    598598            }
    599599            return $dlist
    600         }           
     600        }
    601601        -image {
    602602            if {[llength $args] != 2} {
     
    618618}
    619619
    620 # 
     620#
    621621# scale  --
    622622#
    623623#       This gets called either incrementally as new simulations are
    624624#       added or all at once as a sequence of heightmaps.
    625 #       This  accounts for all objects--even those not showing on the 
    626 #       screen.  Because of this, the limits are appropriate for all 
     625#       This  accounts for all objects--even those not showing on the
     626#       screen.  Because of this, the limits are appropriate for all
    627627#       objects as the user scans through data in the ResultSet viewer.
    628628#
     
    816816    $_dispatcher cancel !legend
    817817    # disconnected -- no more data sitting on server
    818     array unset _datasets 
    819     array unset _data 
    820     array unset _colormaps 
    821     array unset _obj2datasets 
     818    array unset _datasets
     819    array unset _data
     820    array unset _colormaps
     821    array unset _obj2datasets
    822822    global readyForNextFrame
    823823    set readyForNextFrame 1
     
    851851        set time [clock seconds]
    852852        set date [clock format $time]
    853         #puts stderr "$date: received image [image width $_image(plot)]x[image height $_image(plot)] image>"       
     853        #puts stderr "$date: received image [image width $_image(plot)]x[image height $_image(plot)] image>"
    854854        if { $_start > 0 } {
    855855            set finish [clock clicks -milliseconds]
     
    922922    # Turn on buffering of commands to the server.  We don't want to
    923923    # be preempted by a server disconnect/reconnect (which automatically
    924     # generates a new call to Rebuild).   
     924    # generates a new call to Rebuild).
    925925    StartBufferingCommands
    926926
    927927    if { $_width != $w || $_height != $h || $_reset } {
    928         set _width $w
    929         set _height $h
    930         $_arcball resize $w $h
    931         DoResize
    932         if { $_settings(-stretchtofit) } {
    933             AdjustSetting -stretchtofit
    934         }
     928        set _width $w
     929        set _height $h
     930        $_arcball resize $w $h
     931        DoResize
     932        if { $_settings(-stretchtofit) } {
     933            AdjustSetting -stretchtofit
     934        }
    935935    }
    936936    if { $_reset } {
    937         #
    938         # Reset the camera and other view parameters
    939         #
     937        #
     938        # Reset the camera and other view parameters
     939        #
    940940        InitSettings -isheightmap -background
    941941
    942942        # Setting a custom exponent and label format for axes is causing
    943         # a problem with rounding.  Near zero ticks aren't rounded by 
     943        # a problem with rounding.  Near zero ticks aren't rounded by
    944944        # the %g format.  The VTK CubeAxes seem to currently work best
    945         # when allowed to automatically set the exponent and precision 
    946         # based on the axis ranges.  This does tend to result in less 
    947         # visual clutter, so I think it is best to use the automatic 
     945        # when allowed to automatically set the exponent and precision
     946        # based on the axis ranges.  This does tend to result in less
     947        # visual clutter, so I think it is best to use the automatic
    948948        # settings by default.  We can test more fine-grained
    949949        # controls on the axis settings tab if necessary.
     
    951951        #SendCmd "axis exp 0 0 0 1"
    952952
    953         SendCmd "axis lrot z 90"
    954         $_arcball quaternion [ViewToQuaternion]
     953        SendCmd "axis lrot z 90"
     954        $_arcball quaternion [ViewToQuaternion]
    955955        if {$_settings(-isheightmap) } {
    956956            if { $_view(-ortho)} {
     
    961961            DoRotate
    962962            SendCmd "camera reset"
    963         }
    964         PanCamera
     963        }
     964        PanCamera
    965965        StopBufferingCommands
    966966        SendCmd "imgflush"
     
    981981            if { ![info exists _datasets($tag)] } {
    982982                set bytes [$dataobj vtkdata $comp]
    983                 if 0 {
     983                if 0 {
    984984                    set f [open /tmp/vtkheightmap.vtk "w"]
    985985                    fconfigure $f -translation binary -encoding binary
    986986                    puts -nonewline $f $bytes
    987987                    close $f
    988                 }
     988                }
    989989                set length [string length $bytes]
    990990                if { $_reportClientInfo }  {
     
    10111011                SendCmd "dataset visible 1 $tag"
    10121012            }
    1013             if { ![info exists _comp2scale($tag)] ||
    1014                 $_comp2scale($tag) != $scale } {
    1015                 SendCmd "heightmap heightscale $scale $tag"
    1016                 set _comp2scale($tag) $scale
    1017             }
     1013            if { ![info exists _comp2scale($tag)] ||
     1014                $_comp2scale($tag) != $scale } {
     1015                SendCmd "heightmap heightscale $scale $tag"
     1016                set _comp2scale($tag) $scale
     1017            }
    10181018        }
    10191019    }
    10201020    if { $_first != ""  } {
    1021         $itk_component(field) choices delete 0 end
    1022         $itk_component(fieldmenu) delete 0 end
    1023         array unset _fields
     1021        $itk_component(field) choices delete 0 end
     1022        $itk_component(fieldmenu) delete 0 end
     1023        array unset _fields
    10241024        set _curFldName ""
    10251025        foreach cname [$_first components] {
     
    10501050
    10511051    if { $_reset } {
    1052         SendCmd "axis tickpos outside"
     1052        SendCmd "axis tickpos outside"
    10531053        #SendCmd "axis lformat all %g"
    1054        
    1055         foreach axis { x y z } {
     1054
     1055        foreach axis { x y z } {
    10561056            if { $axis == "z" } {
    10571057                set label [$_first hints label]
     
    10591059                set label [$_first hints ${axis}label]
    10601060            }
    1061             if { $label == "" } {
    1062                 if {$axis == "z"} {
     1061            if { $label == "" } {
     1062                if {$axis == "z"} {
    10631063                    if { [string match "component*" $_curFldName] } {
    10641064                        set label [string toupper $axis]
     
    10661066                        set label $_curFldLabel
    10671067                    }
    1068                 } else {
    1069                     set label [string toupper $axis]
    1070                 }
    1071             }
    1072             # May be a space in the axis label.
    1073             SendCmd [list axis name $axis $label]
    1074 
    1075             if {$axis == "z" && [$_first hints ${axis}units] == ""} {
     1068                } else {
     1069                    set label [string toupper $axis]
     1070                }
     1071            }
     1072            # May be a space in the axis label.
     1073            SendCmd [list axis name $axis $label]
     1074
     1075            if {$axis == "z" && [$_first hints ${axis}units] == ""} {
    10761076                if {$_curFldName != ""} {
    10771077                    set units [lindex $_fields($_curFldName) 1]
    10781078                }
    1079             } else {
    1080                 set units [$_first hints ${axis}units]
    1081             }
    1082             if { $units != "" } {
    1083                 # May be a space in the axis units.
    1084                 SendCmd [list axis units $axis $units]
    1085             }
    1086         }
    1087         #
    1088         # Reset the camera and other view parameters
    1089         #
    1090         ResetAxes
    1091         $_arcball quaternion [ViewToQuaternion]
     1079            } else {
     1080                set units [$_first hints ${axis}units]
     1081            }
     1082            if { $units != "" } {
     1083                # May be a space in the axis units.
     1084                SendCmd [list axis units $axis $units]
     1085            }
     1086        }
     1087        #
     1088        # Reset the camera and other view parameters
     1089        #
     1090        ResetAxes
     1091        $_arcball quaternion [ViewToQuaternion]
    10921092        if {$_settings(-isheightmap) } {
    10931093            if { $_view(-ortho)} {
     
    10991099            SendCmd "camera reset"
    11001100        }
    1101         PanCamera
    1102         InitSettings -xgrid -ygrid -zgrid \
    1103             -axisvisible -axislabels -heightmapscale -field -isheightmap \
     1101        PanCamera
     1102        InitSettings -xgrid -ygrid -zgrid \
     1103            -axisvisible -axislabels -heightmapscale -field -isheightmap \
    11041104            -numisolines
    11051105        if { [array size _fields] < 2 } {
     
    11101110    }
    11111111    global readyForNextFrame
    1112     set readyForNextFrame 0;            # Don't advance to the next frame
     1112    set readyForNextFrame 0;                # Don't advance to the next frame
    11131113
    11141114    # Actually write the commands to the server socket.  If it fails, we don't
     
    11281128itcl::body Rappture::VtkHeightmapViewer::CurrentDatasets {args} {
    11291129    set flag [lindex $args 0]
    1130     switch -- $flag { 
     1130    switch -- $flag {
    11311131        "-all" {
    11321132            if { [llength $args] > 1 } {
     
    11471147                set dlist [get -visible]
    11481148            }
    1149         }           
     1149        }
    11501150        default {
    11511151            set dlist $args
     
    12781278    foreach tag [CurrentDatasets -visible] {
    12791279        SendCmd "dataset getscalar pixel $x $y $tag"
    1280     } 
     1280    }
    12811281}
    12821282
     
    13821382        "-background" {
    13831383            set bg [$itk_component(background) value]
    1384             array set fgcolors {
    1385                 "black" "white"
    1386                 "white" "black"
    1387                 "grey"  "black"
    1388             }
     1384            array set fgcolors {
     1385                "black" "white"
     1386                "white" "black"
     1387                "grey"  "black"
     1388            }
    13891389            set fg $fgcolors($bg)
    13901390            configure -plotbackground $bg -plotforeground $fg
    1391             $itk_component(view) delete "legend"
     1391            $itk_component(view) delete "legend"
    13921392            SendCmd "screen bgcolor [Color2RGB $bg]"
    13931393            SendCmd "outline color [Color2RGB $fg]"
    13941394            SendCmd "axis color all [Color2RGB $fg]"
    1395             DrawLegend
     1395            DrawLegend
    13961396        }
    13971397        "-colormap" {
     
    14001400            set color [$itk_component(colormap) value]
    14011401            set _settings($what) $color
    1402             if { $color == "none" } {
    1403                 if { $_settings(-colormapvisible) } {
    1404                     SendCmd "heightmap surface 0"
    1405                     set _settings(-colormapvisible) 0
    1406                 }
    1407             } else {
    1408                 if { !$_settings(-colormapvisible) } {
    1409                     SendCmd "heightmap surface 1"
    1410                     set _settings(-colormapvisible) 1
    1411                 }
    1412                 SetCurrentColormap $color
     1402            if { $color == "none" } {
     1403                if { $_settings(-colormapvisible) } {
     1404                    SendCmd "heightmap surface 0"
     1405                    set _settings(-colormapvisible) 0
     1406                }
     1407            } else {
     1408                if { !$_settings(-colormapvisible) } {
     1409                    SendCmd "heightmap surface 1"
     1410                    set _settings(-colormapvisible) 1
     1411                }
     1412                SetCurrentColormap $color
    14131413                if {$_settings(-colormapdiscrete)} {
    14141414                    set numColors [expr $_settings(-numisolines) + 1]
    14151415                    SendCmd "colormap res $numColors $color"
    14161416                }
    1417             }
     1417            }
    14181418            StopBufferingCommands
    1419             EventuallyRequestLegend
     1419            EventuallyRequestLegend
    14201420        }
    14211421        "-colormapvisible" {
     
    14601460                return
    14611461            }
    1462             set label [$_first hints label]
    1463             if { $label == "" } {
     1462            set label [$_first hints label]
     1463            if { $label == "" } {
    14641464                if { [string match "component*" $_curFldName] } {
    14651465                    set label Z
     
    14671467                    set label $_curFldLabel
    14681468                }
    1469             }
    1470             # May be a space in the axis label.
    1471             SendCmd [list axis name z $label]
    1472 
    1473             if { [$_first hints zunits] == "" } {
    1474                 set units [lindex $_fields($_curFldName) 1]
    1475             } else {
    1476                 set units [$_first hints zunits]
    1477             }
    1478             if { $units != "" } {
    1479                 # May be a space in the axis units.
    1480                 SendCmd [list axis units z $units]
    1481             }
     1469            }
     1470            # May be a space in the axis label.
     1471            SendCmd [list axis name z $label]
     1472
     1473            if { [$_first hints zunits] == "" } {
     1474                set units [lindex $_fields($_curFldName) 1]
     1475            } else {
     1476                set units [$_first hints zunits]
     1477            }
     1478            if { $units != "" } {
     1479                # May be a space in the axis units.
     1480                SendCmd [list axis units z $units]
     1481            }
    14821482            # Get the new limits because the field changed.
    14831483            ResetAxes
     
    14891489        }
    14901490        "-heightmapscale" {
    1491             if { $_settings(-isheightmap) } {
    1492                 set scale [GetHeightmapScale]
    1493                 # Have to set the datasets individually because we are 
     1491            if { $_settings(-isheightmap) } {
     1492                set scale [GetHeightmapScale]
     1493                # Have to set the datasets individually because we are
    14941494                # tracking them in _comp2scale.
    14951495                foreach dataset [CurrentDatasets -all] {
    1496                     SendCmd "heightmap heightscale $scale $dataset"
    1497                     set _comp2scale($dataset) $scale
    1498                 }
    1499                 ResetAxes
    1500             }
     1496                    SendCmd "heightmap heightscale $scale $dataset"
     1497                    set _comp2scale($dataset) $scale
     1498                }
     1499                ResetAxes
     1500            }
    15011501        }
    15021502        "-isheightmap" {
    1503             set bool $_settings($what)
     1503            set bool $_settings($what)
    15041504            set c $itk_component(view)
    15051505            StartBufferingCommands
     
    15181518            InitSettings -lighting -opacity -outline
    15191519            set scale [GetHeightmapScale]
    1520             # Have to set the datasets individually because we are 
     1520            # Have to set the datasets individually because we are
    15211521            # tracking them in _comp2scale.
    15221522            foreach dataset [CurrentDatasets -all] {
     
    15241524                set _comp2scale($dataset) $scale
    15251525            }
    1526             if { $bool } {
    1527                 $itk_component(lighting) configure -state normal
    1528                 $itk_component(opacity) configure -state normal
    1529                 $itk_component(scale) configure -state normal
    1530                 $itk_component(opacity_l) configure -state normal
    1531                 $itk_component(scale_l) configure -state normal
    1532                 $itk_component(outline) configure -state disabled
     1526            if { $bool } {
     1527                $itk_component(lighting) configure -state normal
     1528                $itk_component(opacity) configure -state normal
     1529                $itk_component(scale) configure -state normal
     1530                $itk_component(opacity_l) configure -state normal
     1531                $itk_component(scale_l) configure -state normal
     1532                $itk_component(outline) configure -state disabled
    15331533                if {$_view(-ortho)} {
    15341534                    SendCmd "camera mode ortho"
     
    15361536                    SendCmd "camera mode persp"
    15371537                }
    1538             } else {
    1539                 $itk_component(lighting) configure -state disabled
    1540                 $itk_component(opacity) configure -state disabled
    1541                 $itk_component(scale) configure -state disabled
    1542                 $itk_component(opacity_l) configure -state disabled
    1543                 $itk_component(scale_l) configure -state disabled
    1544                 $itk_component(outline) configure -state normal
     1538            } else {
     1539                $itk_component(lighting) configure -state disabled
     1540                $itk_component(opacity) configure -state disabled
     1541                $itk_component(scale) configure -state disabled
     1542                $itk_component(opacity_l) configure -state disabled
     1543                $itk_component(scale_l) configure -state disabled
     1544                $itk_component(outline) configure -state normal
    15451545                SendCmd "camera mode image"
    15461546            }
     
    15561556                set q [ViewToQuaternion]
    15571557                $_arcball quaternion $q
    1558                 SendCmd "camera orient $q" 
     1558                SendCmd "camera orient $q"
    15591559            } else {
    15601560                bind $c <ButtonPress-1> {}
     
    15631563            }
    15641564            Zoom reset
    1565             # Fix the mouse bindings for rotation/panning and the 
     1565            # Fix the mouse bindings for rotation/panning and the
    15661566            # camera mode. Ideally we'd create a bindtag for these.
    15671567            if { $bool } {
     
    15781578        "-isolinecolor" {
    15791579            set color [$itk_component(isolinecolor) value]
    1580             if { $color == "none" } {
    1581                 if { $_settings(-isolinesvisible) } {
    1582                     SendCmd "heightmap isolines 0"
    1583                     set _settings(-isolinesvisible) 0
    1584                 }
    1585             } else {
    1586                 if { !$_settings(-isolinesvisible) } {
    1587                     SendCmd "heightmap isolines 1"
    1588                     set _settings(-isolinesvisible) 1
    1589                 }
    1590                 SendCmd "heightmap isolinecolor [Color2RGB $color]"
    1591             }
    1592             DrawLegend
     1580            if { $color == "none" } {
     1581                if { $_settings(-isolinesvisible) } {
     1582                    SendCmd "heightmap isolines 0"
     1583                    set _settings(-isolinesvisible) 0
     1584                }
     1585            } else {
     1586                if { !$_settings(-isolinesvisible) } {
     1587                    SendCmd "heightmap isolines 1"
     1588                    set _settings(-isolinesvisible) 1
     1589                }
     1590                SendCmd "heightmap isolinecolor [Color2RGB $color]"
     1591            }
     1592            DrawLegend
    15931593        }
    15941594        "-isolinesvisible" {
    1595             set bool $_settings($what)
     1595            set bool $_settings($what)
    15961596            SendCmd "heightmap isolines $bool"
    1597             DrawLegend
     1597            DrawLegend
    15981598        }
    15991599        "-legendvisible" {
    16001600            if { !$_settings($what) } {
    1601                 $itk_component(view) delete legend
    1602             }
    1603             DrawLegend
     1601                $itk_component(view) delete legend
     1602            }
     1603            DrawLegend
    16041604        }
    16051605        "-lighting" {
    1606             if { $_settings(-isheightmap) } {
     1606            if { $_settings(-isheightmap) } {
    16071607                set _settings(-savelighting) $_settings($what)
    1608                 set bool $_settings($what)
    1609                 SendCmd "heightmap lighting $bool"
    1610             } else {
    1611                 SendCmd "heightmap lighting 0"
    1612             }
     1608                set bool $_settings($what)
     1609                SendCmd "heightmap lighting $bool"
     1610            } else {
     1611                SendCmd "heightmap lighting 0"
     1612            }
    16131613        }
    16141614        "-numisolines" {
     
    16291629            set _changed($what) 1
    16301630            set val [expr $_settings($what) * 0.01]
    1631             if { $_settings(-isheightmap) } {
     1631            if { $_settings(-isheightmap) } {
    16321632                set _settings(-saveopacity) $_settings($what)
    16331633                SendCmd "heightmap opacity $val"
    16341634            } else {
    1635                 SendCmd "heightmap opacity 1.0"
     1635                SendCmd "heightmap opacity 1.0"
    16361636            }
    16371637        }
    16381638        "-outline" {
    1639             if { $_settings(-isheightmap) } {
    1640                 SendCmd "outline visible 0"
     1639            if { $_settings(-isheightmap) } {
     1640                SendCmd "outline visible 0"
    16411641            } else {
    16421642                set _settings(-saveoutline) $_settings($what)
     
    16441644                SendCmd "outline visible $bool"
    16451645            }
    1646         }
     1646        }
    16471647        "-stretchtofit" {
    1648             set bool $_settings($what)
    1649             if { $bool } {
    1650                 set heightScale [GetHeightmapScale]
    1651                 if {$heightScale == 0} {
    1652                     SendCmd "camera aspect window"
    1653                 } else {
    1654                     SendCmd "camera aspect square"
    1655                 }
    1656             } else {
    1657                 SendCmd "camera aspect native"
    1658             }
     1648            set bool $_settings($what)
     1649            if { $bool } {
     1650                set heightScale [GetHeightmapScale]
     1651                if {$heightScale == 0} {
     1652                    SendCmd "camera aspect window"
     1653                } else {
     1654                    SendCmd "camera aspect square"
     1655                }
     1656            } else {
     1657                SendCmd "camera aspect native"
     1658            }
    16591659            Zoom reset
    1660         }
     1660        }
    16611661        "-wireframe" {
    16621662            set bool $_settings($what)
     
    16681668            SendCmd "axis grid $axis $bool"
    16691669        }
    1670         default {
     1670        default {
    16711671            error "don't know how to fix $what"
    16721672        }
     
    16781678#
    16791679#       Request a new legend from the server.  The size of the legend
    1680 #       is determined from the height of the canvas. 
     1680#       is determined from the height of the canvas.
    16811681#
    16821682# This should be called when
    1683 #       1.  A new current colormap is set.
    1684 #       2.  Window is resized.
    1685 #       3.  The limits of the data have changed.  (Just need a redraw).
    1686 #       4.  Number of isolines have changed. (Just need a redraw).
    1687 #       5.  Legend becomes visible (Just need a redraw).
     1683#        1.  A new current colormap is set.
     1684#        2.  Window is resized.
     1685#        3.  The limits of the data have changed.  (Just need a redraw).
     1686#        4.  Number of isolines have changed. (Just need a redraw).
     1687#        5.  Legend becomes visible (Just need a redraw).
    16881688#
    16891689itcl::body Rappture::VtkHeightmapViewer::RequestLegend {} {
     
    16921692    set w 12
    16931693    set lineht [font metrics $font -linespace]
    1694     # color ramp height = (canvas height) - (min and max value lines) - 2 
     1694    # color ramp height = (canvas height) - (min and max value lines) - 2
    16951695    set h [expr {$_height - 2 * ($lineht + 2)}]
    16961696    set _legendHeight $h
     
    16981698    set fname $_curFldName
    16991699    if { [string match "component*" $fname] } {
    1700         set title ""
     1700        set title ""
    17011701    } else {
    1702         if { [info exists _fields($fname)] } {
    1703             foreach { title units } $_fields($fname) break
    1704             if { $units != "" } {
    1705                 set title [format "%s (%s)" $title $units]
    1706             }
    1707         } else {
    1708             set title $fname
    1709         }
     1702        if { [info exists _fields($fname)] } {
     1703            foreach { title units } $_fields($fname) break
     1704            if { $units != "" } {
     1705                set title [format "%s (%s)" $title $units]
     1706            }
     1707        } else {
     1708            set title $fname
     1709        }
    17101710    }
    17111711    # If there's a title too, substract one more line
    17121712    if { $title != "" } {
    1713         incr h -$lineht 
     1713        incr h -$lineht
    17141714    }
    17151715    if { $h < 1 } {
     
    17181718    # Set the legend on the first heightmap dataset.
    17191719    if { $_currentColormap != ""  } {
    1720         set cmap $_currentColormap
    1721         #SendCmd "legend $cmap scalar $_curFldName {} $w $h 0"
     1720        set cmap $_currentColormap
     1721        #SendCmd "legend $cmap scalar $_curFldName {} $w $h 0"
    17221722        SendCmd "legend2 $cmap $w $h"
    17231723    }
     
    17731773    # Keep track of the colormaps that we build.
    17741774    if { $name != "none" && ![info exists _colormaps($name)] } {
    1775         BuildColormap $name 
     1775        BuildColormap $name
    17761776        set _colormaps($name) 1
    17771777    }
     
    17991799itcl::configbody Rappture::VtkHeightmapViewer::mode {
    18001800    switch -- $itk_option(-mode) {
    1801         "heightmap" {
    1802             set _settings(-isheightmap) 1
    1803         }
    1804         "contour" {
    1805             set _settings(-isheightmap) 0
    1806         }
    1807         default {
    1808             error "unknown mode settings \"$itk_option(-mode)\""
    1809         }
     1801        "heightmap" {
     1802            set _settings(-isheightmap) 1
     1803        }
     1804        "contour" {
     1805            set _settings(-isheightmap) 0
     1806        }
     1807        default {
     1808            error "unknown mode settings \"$itk_option(-mode)\""
     1809        }
    18101810    }
    18111811    if { !$_reset } {
     
    18231823            SendCmd "screen bgcolor $rgb"
    18241824        }
    1825         $itk_component(view) configure -background $itk_option(-plotbackground)
     1825        $itk_component(view) configure -background $itk_option(-plotbackground)
    18261826    }
    18271827}
     
    18631863
    18641864    itk_component add lighting {
    1865         checkbutton $inner.lighting \
    1866             -text "Enable Lighting" \
    1867             -variable [itcl::scope _settings(-lighting)] \
    1868             -command [itcl::code $this AdjustSetting -lighting] \
    1869             -font "Arial 9"
     1865        checkbutton $inner.lighting \
     1866            -text "Enable Lighting" \
     1867            -variable [itcl::scope _settings(-lighting)] \
     1868            -command [itcl::code $this AdjustSetting -lighting] \
     1869            -font "Arial 9"
    18701870    } {
    1871         ignore -font
     1871        ignore -font
    18721872    }
    18731873    checkbutton $inner.edges \
     
    19051905
    19061906    itk_component add field_l {
    1907         label $inner.field_l -text "Field" -font "Arial 9" 
     1907        label $inner.field_l -text "Field" -font "Arial 9"
    19081908    } {
    19091909        ignore -font
     
    19151915        [itcl::code $this AdjustSetting -field]
    19161916
    1917     label $inner.colormap_l -text "Colormap" -font "Arial 9" 
     1917    label $inner.colormap_l -text "Colormap" -font "Arial 9"
    19181918    itk_component add colormap {
    19191919        Rappture::Combobox $inner.colormap -width 10 -editable no
     
    19241924        [itcl::code $this AdjustSetting -colormap]
    19251925
    1926     label $inner.isolinecolor_l -text "Isolines Color" -font "Arial 9" 
     1926    label $inner.isolinecolor_l -text "Isolines Color" -font "Arial 9"
    19271927    itk_component add isolinecolor {
    19281928        Rappture::Combobox $inner.isolinecolor -width 10 -editable no
     
    19381938        "red"                "red"              \
    19391939        "white"              "white"            \
    1940         "none"               "none"
     1940        "none"               "none"
    19411941
    19421942    $itk_component(isolinecolor) value $_settings(-isolinecolor)
    19431943    bind $inner.isolinecolor <<Value>> \
    1944         [itcl::code $this AdjustSetting -isolinecolor]
    1945 
    1946     label $inner.background_l -text "Background Color" -font "Arial 9" 
     1944        [itcl::code $this AdjustSetting -isolinecolor]
     1945
     1946    label $inner.background_l -text "Background Color" -font "Arial 9"
    19471947    itk_component add background {
    19481948        Rappture::Combobox $inner.background -width 10 -editable no
     
    19511951        "black"              "black"            \
    19521952        "white"              "white"            \
    1953         "grey"               "grey"             
     1953        "grey"               "grey"
    19541954
    19551955    $itk_component(background) value "white"
     
    19981998        2,0 $inner.isolinecolor_l  -anchor w -pady 2  \
    19991999        2,1 $inner.isolinecolor    -anchor w -pady 2 -fill x  \
    2000         3,0 $inner.background_l -anchor w -pady 2 \
    2001         3,1 $inner.background -anchor w -pady 2  -fill x \
     2000        3,0 $inner.background_l -anchor w -pady 2 \
     2001        3,1 $inner.background -anchor w -pady 2  -fill x \
    20022002        4,0 $inner.numisolines_l -anchor w -pady 2 \
    20032003        4,1 $inner.numisolines -anchor w -pady 2 \
     
    20412041        -command [itcl::code $this AdjustSetting -axislabels] \
    20422042        -font "Arial 9"
    2043     label $inner.grid_l -text "Grid" -font "Arial 9" 
     2043    label $inner.grid_l -text "Grid" -font "Arial 9"
    20442044    checkbutton $inner.xgrid \
    20452045        -text "X" \
     
    20632063        -font "Arial 9"
    20642064
    2065     label $inner.mode_l -text "Mode" -font "Arial 9" 
     2065    label $inner.mode_l -text "Mode" -font "Arial 9"
    20662066
    20672067    itk_component add axisflymode {
     
    20722072        "closest_triad"   "closest" \
    20732073        "furthest_triad"  "farthest" \
    2074         "outer_edges"     "outer"         
     2074        "outer_edges"     "outer"
    20752075    $itk_component(axisflymode) value $_settings(-axisflymode)
    20762076    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axisflymode]
     
    20802080        1,0 $inner.labels  -anchor w -cspan 4 \
    20812081        2,0 $inner.minorticks  -anchor w -cspan 4 \
    2082         4,0 $inner.grid_l  -anchor w \
     2082        4,0 $inner.grid_l  -anchor w \
    20832083        4,1 $inner.xgrid   -anchor w \
    20842084        4,2 $inner.ygrid   -anchor w \
    20852085        4,3 $inner.zgrid   -anchor w \
    20862086        5,0 $inner.mode_l  -anchor w -padx { 2 0 } \
    2087         5,1 $inner.mode    -fill x -cspan 3 
     2087        5,1 $inner.mode    -fill x -cspan 3
    20882088
    20892089    blt::table configure $inner r* c* -resize none
     
    21442144
    21452145#
    2146 #  camera -- 
     2146#  camera --
    21472147#
    21482148itcl::body Rappture::VtkHeightmapViewer::camera {option args} {
    2149     switch -- $option { 
     2149    switch -- $option {
    21502150        "show" {
    21512151            puts [array get _view]
     
    21952195
    21962196itcl::body Rappture::VtkHeightmapViewer::GetImage { args } {
    2197     if { [image width $_image(download)] > 0 && 
     2197    if { [image width $_image(download)] > 0 &&
    21982198         [image height $_image(download)] > 0 } {
    21992199        set bytes [$_image(download) data -format "jpeg -quality 100"]
     
    22082208        -title "[Rappture::filexfer::label downloadWord] as..."
    22092209    set inner [$popup component inner]
    2210     label $inner.summary -text "" -anchor w 
     2210    label $inner.summary -text "" -anchor w
    22112211    radiobutton $inner.vtk_button -text "VTK data file" \
    22122212        -variable [itcl::scope _downloadPopup(format)] \
    22132213        -font "Arial 9 " \
    2214         -value vtk 
     2214        -value vtk
    22152215    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
    22162216    radiobutton $inner.image_button -text "Image File" \
    22172217        -variable [itcl::scope _downloadPopup(format)] \
    22182218        -font "Arial 9 " \
    2219         -value image 
     2219        -value image
    22202220    Rappture::Tooltip::for $inner.image_button \
    22212221        "Save as digital image."
     
    22382238        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
    22392239        4,1 $inner.cancel -width .9i -fill y \
    2240         4,0 $inner.ok -padx 2 -width .9i -fill y 
     2240        4,0 $inner.ok -padx 2 -width .9i -fill y
    22412241    blt::table configure $inner r3 -height 4
    22422242    blt::table configure $inner r4 -pady 4
     
    22492249# SetObjectStyle --
    22502250#
    2251 #       Set the style of the heightmap/contour object.  This gets calls 
     2251#       Set the style of the heightmap/contour object.  This gets calls
    22522252#       for each dataset once as it is loaded.  It can overridden by
    22532253#       the user controls.
     
    23402340        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
    23412341        if { [catch {DrawLegend} errs] != 0 } {
    2342             global errorInfo
    2343             puts stderr "errs=$errs errorInfo=$errorInfo"
     2342            global errorInfo
     2343            puts stderr "errs=$errs errorInfo=$errorInfo"
    23442344        }
    23452345    }
     
    23582358    set font "Arial 8"
    23592359    set lineht [font metrics $font -linespace]
    2360    
     2360
    23612361    if { [string match "component*" $fname] } {
    2362         set title ""
     2362        set title ""
    23632363    } else {
    2364         if { [info exists _fields($fname)] } {
    2365             foreach { title units } $_fields($fname) break
    2366             if { $units != "" } {
    2367                 set title [format "%s (%s)" $title $units]
    2368             }
    2369         } else {
    2370             set title $fname
    2371         }
     2364        if { [info exists _fields($fname)] } {
     2365            foreach { title units } $_fields($fname) break
     2366            if { $units != "" } {
     2367                set title [format "%s (%s)" $title $units]
     2368            }
     2369        } else {
     2370            set title $fname
     2371        }
    23722372    }
    23732373    set x [expr $w - 2]
    23742374    if { !$_settings(-legendvisible) } {
    2375         $c delete legend
    2376         return
    2377     } 
     2375        $c delete legend
     2376        return
     2377    }
    23782378    if { [$c find withtag "legend"] == "" } {
    2379         set y 2
    2380         # If there's a legend title, create a text item for the title.
     2379        set y 2
     2380        # If there's a legend title, create a text item for the title.
    23812381        $c create text $x $y \
    23822382            -anchor ne \
     
    23862386            incr y $lineht
    23872387        }
    2388         $c create text $x $y \
     2388        $c create text $x $y \
    23892389            -anchor ne \
    23902390            -fill $itk_option(-plotforeground) -tags "vmax legend" \
    23912391            -font $font
    23922392        incr y $lineht
    2393         $c create image $x $y \
    2394             -anchor ne \
    2395             -image $_image(legend) -tags "colormap legend"
    2396         $c create rectangle $x $y 1 1 \
    2397             -fill "" -outline "" -tags "sensor legend"
    2398         $c create text $x [expr {$h-2}] \
    2399             -anchor se \
    2400             -fill $itk_option(-plotforeground) -tags "vmin legend" \
    2401             -font $font
    2402         $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
    2403         $c bind sensor <Leave> [itcl::code $this LeaveLegend]
    2404         $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
     2393        $c create image $x $y \
     2394            -anchor ne \
     2395            -image $_image(legend) -tags "colormap legend"
     2396        $c create rectangle $x $y 1 1 \
     2397            -fill "" -outline "" -tags "sensor legend"
     2398        $c create text $x [expr {$h-2}] \
     2399            -anchor se \
     2400            -fill $itk_option(-plotforeground) -tags "vmin legend" \
     2401            -font $font
     2402        $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
     2403        $c bind sensor <Leave> [itcl::code $this LeaveLegend]
     2404        $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
    24052405    }
    24062406    $c delete isoline
     
    24132413    # Draw the isolines on the legend.
    24142414    array unset _isolines
    2415     if { $color != "none"  && [info exists _limits($_curFldName)] && 
     2415    if { $color != "none"  && [info exists _limits($_curFldName)] &&
    24162416         $_settings(-isolinesvisible) && $_currentNumIsolines > 0 } {
    24172417
     
    24222422        }
    24232423        set tags "isoline legend"
    2424         set offset [expr 2 + $lineht]
    2425         if { $title != "" } {
    2426             incr offset $lineht
    2427         }
     2424        set offset [expr 2 + $lineht]
     2425        if { $title != "" } {
     2426            incr offset $lineht
     2427        }
    24282428        foreach value $_contourList {
    24292429            set norm [expr 1.0 - (($value - $vmin) / $range)]
     
    24332433                set _isolines([expr $y1 - $off]) $value
    24342434            }
    2435             $c create line $x1 $y1 $x2 $y1 -fill $color -tags $tags
    2436         }
     2435            $c create line $x1 $y1 $x2 $y1 -fill $color -tags $tags
     2436        }
    24372437    }
    24382438
     
    24432443    if { [info exists _limits($_curFldName)] } {
    24442444        foreach { vmin vmax } $_limits($_curFldName) break
    2445         $c itemconfigure vmin -text [format %g $vmin]
    2446         $c itemconfigure vmax -text [format %g $vmax]
     2445        $c itemconfigure vmin -text [format %g $vmin]
     2446        $c itemconfigure vmax -text [format %g $vmax]
    24472447    }
    24482448    set y 2
     
    24502450    if { $title != "" } {
    24512451        $c itemconfigure title -text $title
    2452         $c coords title $x $y
    2453         incr y $lineht
     2452        $c coords title $x $y
     2453        incr y $lineht
    24542454    }
    24552455    $c coords vmax $x $y
     
    24992499    set font "Arial 8"
    25002500    set lineht [font metrics $font -linespace]
    2501    
     2501
    25022502    set ih [image height $_image(legend)]
    25032503    # Subtract off the offset of the color ramp from the top of the canvas
     
    25052505
    25062506    if { [string match "component*" $fname] } {
    2507         set title ""
     2507        set title ""
    25082508    } else {
    2509         if { [info exists _fields($fname)] } {
    2510             foreach { title units } $_fields($fname) break
    2511             if { $units != "" } {
    2512                 set title [format "%s (%s)" $title $units]
    2513             }
    2514         } else {
    2515             set title $fname
    2516         }
     2509        if { [info exists _fields($fname)] } {
     2510            foreach { title units } $_fields($fname) break
     2511            if { $units != "" } {
     2512                set title [format "%s (%s)" $title $units]
     2513            }
     2514        } else {
     2515            set title $fname
     2516        }
    25172517    }
    25182518    # If there's a legend title, increase the offset by the line height.
     
    25302530    }
    25312531    set color [eval format "\#%02x%02x%02x" $pixel]
    2532     $_image(swatch) put black  -to 0 0 23 23 
    2533     $_image(swatch) put $color -to 1 1 22 22 
     2532    $_image(swatch) put black  -to 0 0 23 23
     2533    $_image(swatch) put $color -to 1 1 22 22
    25342534
    25352535    # Compute the value of the point
     
    25412541        set value 0.0
    25422542    }
    2543     set tipx [expr $x + 15] 
     2543    set tipx [expr $x + 15]
    25442544    set tipy [expr $y - 5]
    25452545    .rappturetooltip configure -icon $_image(swatch)
     
    25492549        Rappture::Tooltip::text $c [format "$title %g" $value]
    25502550    }
    2551     Rappture::Tooltip::tooltip show $c +$tipx,+$tipy   
     2551    Rappture::Tooltip::tooltip show $c +$tipx,+$tipy
    25522552}
    25532553
     
    25642564# ----------------------------------------------------------------------
    25652565itcl::body Rappture::VtkHeightmapViewer::Combo {option} {
    2566     set c $itk_component(view) 
     2566    set c $itk_component(view)
    25672567    switch -- $option {
    25682568        post {
     
    25772577        }
    25782578        deactivate {
    2579             $c itemconfigure title -fill $itk_option(-plotforeground) 
     2579            $c itemconfigure title -fill $itk_option(-plotforeground)
    25802580        }
    25812581        invoke {
     
    25912591itcl::body Rappture::VtkHeightmapViewer::GetHeightmapScale {} {
    25922592    if {  $_settings(-isheightmap) } {
    2593         set val $_settings(-heightmapscale)
    2594         set sval [expr { $val >= 50 ? double($val)/50.0 : 1.0/(2.0-(double($val)/50.0)) }]
    2595         return $sval
    2596     }
    2597     return 0 
    2598 }
    2599 
    2600 itcl::body Rappture::VtkHeightmapViewer::SetOrientation { side } { 
     2593        set val $_settings(-heightmapscale)
     2594        set sval [expr { $val >= 50 ? double($val)/50.0 : 1.0/(2.0-(double($val)/50.0)) }]
     2595        return $sval
     2596    }
     2597    return 0
     2598}
     2599
     2600itcl::body Rappture::VtkHeightmapViewer::SetOrientation { side } {
    26012601    array set positions {
    26022602        front  "0.707107 0.707107 0 0"
     
    26092609    foreach name { -qw -qx -qy -qz } value $positions($side) {
    26102610        set _view($name) $value
    2611     } 
     2611    }
    26122612    set q [ViewToQuaternion]
    26132613    $_arcball quaternion $q
     
    26192619}
    26202620
    2621 itcl::body Rappture::VtkHeightmapViewer::UpdateContourList {} { 
     2621itcl::body Rappture::VtkHeightmapViewer::UpdateContourList {} {
    26222622    if {$_currentNumIsolines == 0} {
    26232623        set _contourList ""
  • branches/1.4/gui/scripts/vtkimageviewer.tcl

    r4770 r5007  
    1 # -*- mode: tcl; indent-tabs-mode: nil -*- 
     1# -*- mode: tcl; indent-tabs-mode: nil -*-
    22# ----------------------------------------------------------------------
    33#  COMPONENT: vtkimageviewer - Vtk image viewer
     
    5858    public method get {args}
    5959    public method isconnected {}
    60     public method parameters {title args} { 
    61         # do nothing 
     60    public method parameters {title args} {
     61        # do nothing
    6262    }
    6363    public method scale {args}
     
    6969    private method BuildColormap { name }
    7070    private method BuildImageTab {}
    71     private method BuildDownloadPopup { widget command } 
     71    private method BuildDownloadPopup { widget command }
    7272    private method Combo { option }
    7373    private method Connect {}
     
    7777    private method DoRotate {}
    7878    private method DrawLegend {}
    79     private method EnterLegend { x y } 
    80     private method EventuallyRequestLegend {} 
    81     private method EventuallyResize { w h } 
     79    private method EnterLegend { x y }
     80    private method EventuallyRequestLegend {}
     81    private method EventuallyResize { w h }
    8282    private method EventuallyRotate { q }
    83     private method GetImage { args } 
    84     private method GetVtkData { args } 
     83    private method GetImage { args }
     84    private method GetVtkData { args }
    8585    private method InitSettings { args  }
    86     private method IsValidObject { dataobj } 
     86    private method IsValidObject { dataobj }
    8787    private method LeaveLegend {}
    88     private method MotionLegend { x y } 
     88    private method MotionLegend { x y }
    8989    private method Pan {option x y}
    9090    private method PanCamera {}
    9191    private method Pick {x y}
    92     private method QuaternionToView { q } { 
     92    private method QuaternionToView { q } {
    9393        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
    9494    }
     
    101101    private method SetCurrentColormap { color }
    102102    private method SetLegendTip { x y }
    103     private method SetObjectStyle { dataobj comp } 
     103    private method SetObjectStyle { dataobj comp }
    104104    private method SetOrientation { side }
    105     private method ViewToQuaternion {} { 
     105    private method ViewToQuaternion {} {
    106106        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
    107107    }
     
    112112    private variable _obj2datasets
    113113    private variable _obj2ovride   ;    # maps dataobj => style override
    114     private variable _datasets     ;    # contains all the dataobj-component 
     114    private variable _datasets     ;    # contains all the dataobj-component
    115115                                   ;    # datasets in the server
    116116    private variable _colormaps    ;    # contains all the colormaps
     
    128128
    129129    private variable _click        ;    # info used for rotate operations
    130     private variable _limits       ;    # Holds overall limits for all dataobjs 
     130    private variable _limits       ;    # Holds overall limits for all dataobjs
    131131                                        # using the viewer.
    132132    private variable _view         ;    # view params for 3D view
     
    153153    private variable _rotatePending 0
    154154    private variable _legendPending 0
    155     private variable _fieldNames {} 
    156     private variable _fields 
     155    private variable _fieldNames {}
     156    private variable _fields
    157157    private variable _curFldName ""
    158158    private variable _curFldLabel ""
     
    243243    } {
    244244        usual
    245         ignore -highlightthickness -borderwidth -background 
     245        ignore -highlightthickness -borderwidth -background
    246246    }
    247247
     
    249249        menu $itk_component(plotarea).menu \
    250250            -relief flat \
    251             -tearoff no 
     251            -tearoff no
    252252    } {
    253253        usual
     
    269269
    270270    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
    271     set _map(cwidth) -1 
    272     set _map(cheight) -1 
     271    set _map(cwidth) -1
     272    set _map(cheight) -1
    273273    set _map(zoom) 1.0
    274274    set _map(original) ""
     
    338338        BuildCameraTab
    339339    } errs] != 0 } {
    340         global errorInfo
     340        global errorInfo
    341341        puts stderr "errs=$errs errorInfo=$errorInfo"
    342342    }
    343343
    344     # Hack around the Tk panewindow.  The problem is that the requested 
     344    # Hack around the Tk panewindow.  The problem is that the requested
    345345    # size of the 3d view isn't set until an image is retrieved from
    346346    # the server.  So the panewindow uses the tiny size.
     
    348348    pack forget $itk_component(view)
    349349    blt::table $itk_component(plotarea) \
    350         0,0 $itk_component(view) -fill both -reqwidth $w 
     350        0,0 $itk_component(view) -fill both -reqwidth $w
    351351    blt::table configure $itk_component(plotarea) c1 -resize none
    352352
     
    432432
    433433itcl::body Rappture::VtkImageViewer::DoRotate {} {
    434     SendCmd "camera orient [ViewToQuaternion]" 
     434    SendCmd "camera orient [ViewToQuaternion]"
    435435    set _rotatePending 0
    436436}
     
    459459    if { !$_rotatePending } {
    460460        set _rotatePending 1
    461         global rotate_delay 
     461        global rotate_delay
    462462        $_dispatcher event -after $rotate_delay !rotate
    463463    }
     
    558558                    continue
    559559                }
    560                 if {[info exists _obj2ovride($dataobj-raise)] && 
     560                if {[info exists _obj2ovride($dataobj-raise)] &&
    561561                    $_obj2ovride($dataobj-raise)} {
    562562                    set dlist [linsert $dlist 0 $dataobj]
     
    586586            }
    587587            return $dlist
    588         }           
     588        }
    589589        -image {
    590590            if {[llength $args] != 2} {
     
    606606}
    607607
    608 # 
     608#
    609609# scale  --
    610610#
    611611#       This gets called either incrementally as new simulations are
    612612#       added or all at once as a sequence of images.
    613 #       This  accounts for all objects--even those not showing on the 
    614 #       screen.  Because of this, the limits are appropriate for all 
     613#       This  accounts for all objects--even those not showing on the
     614#       screen.  Because of this, the limits are appropriate for all
    615615#       objects as the user scans through data in the ResultSet viewer.
    616616#
     
    804804    $_dispatcher cancel !legend
    805805    # disconnected -- no more data sitting on server
    806     array unset _datasets 
    807     array unset _data 
    808     array unset _colormaps 
    809     array unset _obj2datasets 
     806    array unset _datasets
     807    array unset _data
     808    array unset _colormaps
     809    array unset _obj2datasets
    810810    global readyForNextFrame
    811811    set readyForNextFrame 1
     
    839839        set time [clock seconds]
    840840        set date [clock format $time]
    841         #puts stderr "$date: received image [image width $_image(plot)]x[image height $_image(plot)] image>"       
     841        #puts stderr "$date: received image [image width $_image(plot)]x[image height $_image(plot)] image>"
    842842        if { $_start > 0 } {
    843843            set finish [clock clicks -milliseconds]
     
    910910    # Turn on buffering of commands to the server.  We don't want to
    911911    # be preempted by a server disconnect/reconnect (which automatically
    912     # generates a new call to Rebuild).   
     912    # generates a new call to Rebuild).
    913913    StartBufferingCommands
    914914
    915915    if { $_width != $w || $_height != $h || $_reset } {
    916         set _width $w
    917         set _height $h
    918         $_arcball resize $w $h
    919         DoResize
    920         if { $_settings(-stretchtofit) } {
    921             AdjustSetting -stretchToFit
    922         }
     916        set _width $w
     917        set _height $h
     918        $_arcball resize $w $h
     919        DoResize
     920        if { $_settings(-stretchtofit) } {
     921            AdjustSetting -stretchToFit
     922        }
    923923    }
    924924    if { $_reset } {
    925         #
    926         # Reset the camera and other view parameters
    927         #
     925        #
     926        # Reset the camera and other view parameters
     927        #
    928928        InitSettings -view3d -background
    929929
    930         SendCmd "axis lrot z 90"
    931         $_arcball quaternion [ViewToQuaternion]
     930        SendCmd "axis lrot z 90"
     931        $_arcball quaternion [ViewToQuaternion]
    932932        if {$_settings(-view3d) } {
    933933            if { $_view(-ortho)} {
     
    938938            DoRotate
    939939            SendCmd "camera reset"
    940         }
    941         PanCamera
     940        }
     941        PanCamera
    942942        StopBufferingCommands
    943943        SendCmd "imgflush"
     
    957957            if { ![info exists _datasets($tag)] } {
    958958                set bytes [$dataobj vtkdata $comp]
    959                 if 0 {
     959                if 0 {
    960960                    set f [open /tmp/vtkimage.vtk "w"]
    961961                    fconfigure $f -translation binary -encoding binary
    962962                    puts -nonewline $f $bytes
    963963                    close $f
    964                 }
     964                }
    965965                set length [string length $bytes]
    966966                if { $_reportClientInfo }  {
     
    990990    }
    991991    if { $_first != ""  } {
    992         $itk_component(field) choices delete 0 end
    993         $itk_component(fieldmenu) delete 0 end
    994         array unset _fields
     992        $itk_component(field) choices delete 0 end
     993        $itk_component(fieldmenu) delete 0 end
     994        array unset _fields
    995995        set _curFldName ""
    996996        foreach cname [$_first components] {
     
    10211021
    10221022    if { $_reset } {
    1023         SendCmd "axis tickpos outside"
     1023        SendCmd "axis tickpos outside"
    10241024        #SendCmd "axis lformat all %g"
    1025        
    1026         foreach axis { x y z } {
     1025
     1026        foreach axis { x y z } {
    10271027            set label [$_first hints ${axis}label]
    1028             if { $label == "" } {
    1029                 set label [string toupper $axis]
    1030             }
    1031             # May be a space in the axis label.
    1032             SendCmd [list axis name $axis $label]
    1033 
    1034             if {$axis == "z" && [$_first hints ${axis}units] == ""} {
     1028            if { $label == "" } {
     1029                set label [string toupper $axis]
     1030            }
     1031            # May be a space in the axis label.
     1032            SendCmd [list axis name $axis $label]
     1033
     1034            if {$axis == "z" && [$_first hints ${axis}units] == ""} {
    10351035                if {$_curFldName != ""} {
    10361036                    set units [lindex $_fields($_curFldName) 1]
    10371037                }
    1038             } else {
    1039                 set units [$_first hints ${axis}units]
    1040             }
    1041             if { $units != "" } {
    1042                 # May be a space in the axis units.
    1043                 SendCmd [list axis units $axis $units]
    1044             }
    1045         }
    1046         #
    1047         # Reset the camera and other view parameters
    1048         #
    1049         $_arcball quaternion [ViewToQuaternion]
     1038            } else {
     1039                set units [$_first hints ${axis}units]
     1040            }
     1041            if { $units != "" } {
     1042                # May be a space in the axis units.
     1043                SendCmd [list axis units $axis $units]
     1044            }
     1045        }
     1046        #
     1047        # Reset the camera and other view parameters
     1048        #
     1049        $_arcball quaternion [ViewToQuaternion]
    10501050        if {$_settings(-view3d) } {
    10511051            if { $_view(-ortho)} {
     
    10571057            SendCmd "camera reset"
    10581058        }
    1059         PanCamera
    1060         InitSettings -xgrid -ygrid -zgrid \
     1059        PanCamera
     1060        InitSettings -xgrid -ygrid -zgrid \
    10611061            -axisvisible -axislabels -field -view3d
    10621062        if { [array size _fields] < 2 } {
     
    10671067    }
    10681068    global readyForNextFrame
    1069     set readyForNextFrame 0;            # Don't advance to the next frame
     1069    set readyForNextFrame 0;                # Don't advance to the next frame
    10701070
    10711071    # Actually write the commands to the server socket.  If it fails, we don't
     
    10851085itcl::body Rappture::VtkImageViewer::CurrentDatasets {args} {
    10861086    set flag [lindex $args 0]
    1087     switch -- $flag { 
     1087    switch -- $flag {
    10881088        "-all" {
    10891089            if { [llength $args] > 1 } {
     
    11041104                set dlist [get -visible]
    11051105            }
    1106         }           
     1106        }
    11071107        default {
    11081108            set dlist $args
     
    12261226    foreach tag [CurrentDatasets -visible] {
    12271227        SendCmd "dataset getscalar pixel $x $y $tag"
    1228     } 
     1228    }
    12291229}
    12301230
     
    13301330        "-background" {
    13311331            set bg [$itk_component(background) value]
    1332             array set fgcolors {
    1333                 "black" "white"
    1334                 "white" "black"
    1335                 "grey"  "black"
    1336             }
     1332            array set fgcolors {
     1333                "black" "white"
     1334                "white" "black"
     1335                "grey"  "black"
     1336            }
    13371337            set fg $fgcolors($bg)
    13381338            configure -plotbackground $bg -plotforeground $fg
    1339             $itk_component(view) delete "legend"
     1339            $itk_component(view) delete "legend"
    13401340            SendCmd "screen bgcolor [Color2RGB $bg]"
    13411341            SendCmd "outline color [Color2RGB $fg]"
    13421342            SendCmd "axis color all [Color2RGB $fg]"
    1343             DrawLegend
     1343            DrawLegend
    13441344        }
    13451345        "-backingcolor" {
    13461346            set color [$itk_component(backingcolor) value]
    1347             if { $color == "none" } {
    1348                 if { $_settings(-backingvisible) } {
    1349                     SendCmd "image backing 0"
    1350                     set _settings(-backingvisible) 0
    1351                 }
    1352             } else {
    1353                 if { !$_settings(-backingvisible) } {
    1354                     SendCmd "image backing 1"
    1355                     set _settings(-backingvisible) 1
    1356                 }
    1357                 SendCmd "image color [Color2RGB $color]"
    1358             }
     1347            if { $color == "none" } {
     1348                if { $_settings(-backingvisible) } {
     1349                    SendCmd "image backing 0"
     1350                    set _settings(-backingvisible) 0
     1351                }
     1352            } else {
     1353                if { !$_settings(-backingvisible) } {
     1354                    SendCmd "image backing 1"
     1355                    set _settings(-backingvisible) 1
     1356                }
     1357                SendCmd "image color [Color2RGB $color]"
     1358            }
    13591359        }
    13601360        "-backingvisible" {
    1361             set bool $_settings($what)
     1361            set bool $_settings($what)
    13621362            SendCmd "image backing $bool"
    13631363        }
     
    13721372            }
    13731373            StopBufferingCommands
    1374             EventuallyRequestLegend
     1374            EventuallyRequestLegend
    13751375        }
    13761376        "-colormapdiscrete" {
     
    14101410        }
    14111411        "-view3d" {
    1412             set bool $_settings($what)
     1412            set bool $_settings($what)
    14131413            set c $itk_component(view)
    14141414            StartBufferingCommands
     
    14201420            }
    14211421            AdjustSetting -opacity
    1422             if { $bool } {
    1423                 $itk_component(opacity) configure -state normal
    1424                 $itk_component(opacity_l) configure -state normal
     1422            if { $bool } {
     1423                $itk_component(opacity) configure -state normal
     1424                $itk_component(opacity_l) configure -state normal
    14251425                if {$_view(-ortho)} {
    14261426                    SendCmd "camera mode ortho"
     
    14291429                }
    14301430                SendCmd "camera aspect native"
    1431             } else {
    1432                 $itk_component(opacity) configure -state disabled
    1433                 $itk_component(opacity_l) configure -state disabled
     1431            } else {
     1432                $itk_component(opacity) configure -state disabled
     1433                $itk_component(opacity_l) configure -state disabled
    14341434                SendCmd "camera mode image"
    14351435                if {$_settings(-stretchtofit)} {
     
    14401440                set q [ViewToQuaternion]
    14411441                $_arcball quaternion $q
    1442                 SendCmd "camera orient $q" 
     1442                SendCmd "camera orient $q"
    14431443            } else {
    14441444                bind $c <ButtonPress-1> {}
     
    14471447            }
    14481448            SendCmd "camera reset"
    1449             # Fix the mouse bindings for rotation/panning and the 
     1449            # Fix the mouse bindings for rotation/panning and the
    14501450            # camera mode. Ideally we'd create a bindtag for these.
    14511451            if { $bool } {
     
    14701470        "-legendvisible" {
    14711471            if { !$_settings($what) } {
    1472                 $itk_component(view) delete legend
    1473             }
    1474             DrawLegend
     1472                $itk_component(view) delete legend
     1473            }
     1474            DrawLegend
    14751475        }
    14761476        "-opacity" {
    14771477            set _changed($what) 1
    1478             if { $_settings(-view3d) } {
     1478            if { $_settings(-view3d) } {
    14791479                set _settings(-saveopacity) $_settings($what)
    14801480                set val [expr $_settings($what) * 0.01]
    14811481                SendCmd "image opacity $val"
    14821482            } else {
    1483                 SendCmd "image opacity 1.0"
     1483                SendCmd "image opacity 1.0"
    14841484            }
    14851485        }
     
    14871487            set bool $_settings($what)
    14881488            SendCmd "outline visible $bool"
    1489         }
     1489        }
    14901490        "-stretchtofit" {
    1491             set bool $_settings($what)
    1492             if { $bool } {
    1493                 if { $_settings(-view3d) } {
    1494                     SendCmd "camera aspect native"
    1495                 } else {
    1496                     SendCmd "camera aspect window"
    1497                 }
    1498             } else {
    1499                 SendCmd "camera aspect native"
    1500             }
    1501         }
     1491            set bool $_settings($what)
     1492            if { $bool } {
     1493                if { $_settings(-view3d) } {
     1494                    SendCmd "camera aspect native"
     1495                } else {
     1496                    SendCmd "camera aspect window"
     1497                }
     1498            } else {
     1499                SendCmd "camera aspect native"
     1500            }
     1501        }
    15021502        "-xgrid" - "-ygrid" - "-zgrid" {
    15031503            set axis [string tolower [string range $what 1 1]]
     
    15051505            SendCmd "axis grid $axis $bool"
    15061506        }
    1507         default {
     1507        default {
    15081508            error "don't know how to fix $what"
    15091509        }
     
    15151515#
    15161516#       Request a new legend from the server.  The size of the legend
    1517 #       is determined from the height of the canvas. 
     1517#       is determined from the height of the canvas.
    15181518#
    15191519# This should be called when
    1520 #       1.  A new current colormap is set.
    1521 #       2.  Window is resized.
    1522 #       3.  The limits of the data have changed.  (Just need a redraw).
    1523 #       4.  Number of isolines have changed. (Just need a redraw).
    1524 #       5.  Legend becomes visible (Just need a redraw).
     1520#        1.  A new current colormap is set.
     1521#        2.  Window is resized.
     1522#        3.  The limits of the data have changed.  (Just need a redraw).
     1523#        4.  Number of isolines have changed. (Just need a redraw).
     1524#        5.  Legend becomes visible (Just need a redraw).
    15251525#
    15261526itcl::body Rappture::VtkImageViewer::RequestLegend {} {
     
    15291529    set w 12
    15301530    set lineht [font metrics $font -linespace]
    1531     # color ramp height = (canvas height) - (min and max value lines) - 2 
     1531    # color ramp height = (canvas height) - (min and max value lines) - 2
    15321532    set h [expr {$_height - 2 * ($lineht + 2)}]
    15331533    set _legendHeight $h
     
    15351535    set fname $_curFldName
    15361536    if { [string match "component*" $fname] } {
    1537         set title ""
     1537        set title ""
    15381538    } else {
    1539         if { [info exists _fields($fname)] } {
    1540             foreach { title units } $_fields($fname) break
    1541             if { $units != "" } {
    1542                 set title [format "%s (%s)" $title $units]
    1543             }
    1544         } else {
    1545             set title $fname
    1546         }
     1539        if { [info exists _fields($fname)] } {
     1540            foreach { title units } $_fields($fname) break
     1541            if { $units != "" } {
     1542                set title [format "%s (%s)" $title $units]
     1543            }
     1544        } else {
     1545            set title $fname
     1546        }
    15471547    }
    15481548    # If there's a title too, substract one more line
    15491549    if { $title != "" } {
    1550         incr h -$lineht 
     1550        incr h -$lineht
    15511551    }
    15521552    if { $h < 1 } {
     
    15551555    # Set the legend on the first image dataset.
    15561556    if { $_currentColormap != "" && $_currentColormap != "none" } {
    1557         #SendCmd "legend $_currentColormap scalar $_curFldName {} $w $h 0"
     1557        #SendCmd "legend $_currentColormap scalar $_curFldName {} $w $h 0"
    15581558        SendCmd "legend2 $_currentColormap $w $h"
    15591559    }
     
    15661566    # Keep track of the colormaps that we build.
    15671567    if { $name != "none" && ![info exists _colormaps($name)] } {
    1568         BuildColormap $name 
     1568        BuildColormap $name
    15691569        set _colormaps($name) 1
    15701570    }
     
    15931593itcl::configbody Rappture::VtkImageViewer::mode {
    15941594    switch -- $itk_option(-mode) {
    1595         "volume" {
    1596             set _settings(-view3d) 1
    1597         }
    1598         "vtkimage" {
    1599             set _settings(-view3d) 0
    1600         }
    1601         default {
    1602             error "unknown mode settings \"$itk_option(-mode)\""
    1603         }
     1595        "volume" {
     1596            set _settings(-view3d) 1
     1597        }
     1598        "vtkimage" {
     1599            set _settings(-view3d) 0
     1600        }
     1601        default {
     1602            error "unknown mode settings \"$itk_option(-mode)\""
     1603        }
    16041604    }
    16051605    if { !$_reset } {
     
    16171617            SendCmd "screen bgcolor $rgb"
    16181618        }
    1619         $itk_component(view) configure -background $itk_option(-plotbackground)
     1619        $itk_component(view) configure -background $itk_option(-plotbackground)
    16201620    }
    16211621}
     
    16751675
    16761676    itk_component add field_l {
    1677         label $inner.field_l -text "Field" -font "Arial 9" 
     1677        label $inner.field_l -text "Field" -font "Arial 9"
    16781678    } {
    16791679        ignore -font
     
    16851685        [itcl::code $this AdjustSetting -field]
    16861686
    1687     label $inner.colormap_l -text "Colormap" -font "Arial 9" 
     1687    label $inner.colormap_l -text "Colormap" -font "Arial 9"
    16881688    itk_component add colormap {
    16891689        Rappture::Combobox $inner.colormap -width 10 -editable no
     
    16951695        [itcl::code $this AdjustSetting -colormap]
    16961696
    1697     label $inner.backingcolor_l -text "Backing Color" -font "Arial 9" 
     1697    label $inner.backingcolor_l -text "Backing Color" -font "Arial 9"
    16981698    itk_component add backingcolor {
    16991699        Rappture::Combobox $inner.backingcolor -width 10 -editable no
     
    17091709        "red"                "red"              \
    17101710        "white"              "white"            \
    1711         "none"               "none"
     1711        "none"               "none"
    17121712
    17131713    $itk_component(backingcolor) value $_settings(-backingcolor)
    17141714    bind $inner.backingcolor <<Value>> \
    1715         [itcl::code $this AdjustSetting -backingcolor]
    1716 
    1717     label $inner.background_l -text "Background Color" -font "Arial 9" 
     1715        [itcl::code $this AdjustSetting -backingcolor]
     1716
     1717    label $inner.background_l -text "Background Color" -font "Arial 9"
    17181718    itk_component add background {
    17191719        Rappture::Combobox $inner.background -width 10 -editable no
     
    17221722        "black"              "black"            \
    17231723        "white"              "white"            \
    1724         "grey"               "grey"             
     1724        "grey"               "grey"
    17251725
    17261726    $itk_component(background) value "white"
     
    17731773        2,0 $inner.backingcolor_l  -anchor w -pady 2  \
    17741774        2,1 $inner.backingcolor    -anchor w -pady 2 -fill x  \
    1775         3,0 $inner.background_l -anchor w -pady 2 \
    1776         3,1 $inner.background -anchor w -pady 2  -fill x \
     1775        3,0 $inner.background_l -anchor w -pady 2 \
     1776        3,1 $inner.background -anchor w -pady 2  -fill x \
    17771777        4,0 $inner.backing -anchor w -pady 2 -cspan 2 \
    17781778        5,0 $inner.stretch    -anchor w -pady 2 -cspan 2 \
     
    17871787        16,1 $inner.window   -fill x   -pady 2 \
    17881788        17,0 $inner.level_l -anchor w -pady 2 \
    1789         17,1 $inner.level   -fill x   -pady 2 
     1789        17,1 $inner.level   -fill x   -pady 2
    17901790
    17911791    blt::table configure $inner r* c* -resize none
     
    18131813        -command [itcl::code $this AdjustSetting -axislabels] \
    18141814        -font "Arial 9"
    1815     label $inner.grid_l -text "Grid" -font "Arial 9" 
     1815    label $inner.grid_l -text "Grid" -font "Arial 9"
    18161816    checkbutton $inner.xgrid \
    18171817        -text "X" \
     
    18351835        -font "Arial 9"
    18361836
    1837     label $inner.mode_l -text "Mode" -font "Arial 9" 
     1837    label $inner.mode_l -text "Mode" -font "Arial 9"
    18381838
    18391839    itk_component add axisflymode {
     
    18441844        "closest_triad"   "closest" \
    18451845        "furthest_triad"  "farthest" \
    1846         "outer_edges"     "outer"         
     1846        "outer_edges"     "outer"
    18471847    $itk_component(axisflymode) value $_settings(-axisflymode)
    18481848    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axisflymode]
     
    18521852        1,0 $inner.labels  -anchor w -cspan 4 \
    18531853        2,0 $inner.minorticks  -anchor w -cspan 4 \
    1854         4,0 $inner.grid_l  -anchor w \
     1854        4,0 $inner.grid_l  -anchor w \
    18551855        4,1 $inner.xgrid   -anchor w \
    18561856        4,2 $inner.ygrid   -anchor w \
    18571857        4,3 $inner.zgrid   -anchor w \
    18581858        5,0 $inner.mode_l  -anchor w -padx { 2 0 } \
    1859         5,1 $inner.mode    -fill x -cspan 3 
     1859        5,1 $inner.mode    -fill x -cspan 3
    18601860
    18611861    blt::table configure $inner r* c* -resize none
     
    19161916
    19171917#
    1918 #  camera -- 
     1918#  camera --
    19191919#
    19201920itcl::body Rappture::VtkImageViewer::camera {option args} {
    1921     switch -- $option { 
     1921    switch -- $option {
    19221922        "show" {
    19231923            puts [array get _view]
     
    19671967
    19681968itcl::body Rappture::VtkImageViewer::GetImage { args } {
    1969     if { [image width $_image(download)] > 0 && 
     1969    if { [image width $_image(download)] > 0 &&
    19701970         [image height $_image(download)] > 0 } {
    19711971        set bytes [$_image(download) data -format "jpeg -quality 100"]
     
    19801980        -title "[Rappture::filexfer::label downloadWord] as..."
    19811981    set inner [$popup component inner]
    1982     label $inner.summary -text "" -anchor w 
     1982    label $inner.summary -text "" -anchor w
    19831983    radiobutton $inner.vtk_button -text "VTK data file" \
    19841984        -variable [itcl::scope _downloadPopup(format)] \
    19851985        -font "Arial 9 " \
    1986         -value vtk 
     1986        -value vtk
    19871987    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
    19881988    radiobutton $inner.image_button -text "Image File" \
    19891989        -variable [itcl::scope _downloadPopup(format)] \
    19901990        -font "Arial 9 " \
    1991         -value image 
     1991        -value image
    19921992    Rappture::Tooltip::for $inner.image_button \
    19931993        "Save as digital image."
     
    20102010        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
    20112011        4,1 $inner.cancel -width .9i -fill y \
    2012         4,0 $inner.ok -padx 2 -width .9i -fill y 
     2012        4,0 $inner.ok -padx 2 -width .9i -fill y
    20132013    blt::table configure $inner r3 -height 4
    20142014    blt::table configure $inner r4 -pady 4
     
    20212021# SetObjectStyle --
    20222022#
    2023 #       Set the style of the image/contour object.  This gets calls 
     2023#       Set the style of the image/contour object.  This gets calls
    20242024#       for each dataset once as it is loaded.  It can overridden by
    20252025#       the user controls.
     
    20632063    SendCmd "outline visible $_settings(-outline) $tag"
    20642064    SendCmd "image add $tag"
    2065     SetCurrentColormap $style(-color) 
     2065    SetCurrentColormap $style(-color)
    20662066    set color [$itk_component(backingcolor) value]
    20672067    SendCmd "image color [Color2RGB $color] $tag"
     
    20942094        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
    20952095        if { [catch {DrawLegend} errs] != 0 } {
    2096             global errorInfo
    2097             puts stderr "errs=$errs errorInfo=$errorInfo"
     2096            global errorInfo
     2097            puts stderr "errs=$errs errorInfo=$errorInfo"
    20982098        }
    20992099    }
     
    21122112    set font "Arial 8"
    21132113    set lineht [font metrics $font -linespace]
    2114    
     2114
    21152115    if { [string match "component*" $fname] } {
    2116         set title ""
     2116        set title ""
    21172117    } else {
    2118         if { [info exists _fields($fname)] } {
    2119             foreach { title units } $_fields($fname) break
    2120             if { $units != "" } {
    2121                 set title [format "%s (%s)" $title $units]
    2122             }
    2123         } else {
    2124             set title $fname
    2125         }
     2118        if { [info exists _fields($fname)] } {
     2119            foreach { title units } $_fields($fname) break
     2120            if { $units != "" } {
     2121                set title [format "%s (%s)" $title $units]
     2122            }
     2123        } else {
     2124            set title $fname
     2125        }
    21262126    }
    21272127    set x [expr $w - 2]
    21282128    if { !$_settings(-legendvisible) } {
    2129         $c delete legend
    2130         return
    2131     } 
     2129        $c delete legend
     2130        return
     2131    }
    21322132    if { [$c find withtag "legend"] == "" } {
    2133         set y 2
    2134         # If there's a legend title, create a text item for the title.
     2133        set y 2
     2134        # If there's a legend title, create a text item for the title.
    21352135        $c create text $x $y \
    21362136            -anchor ne \
     
    21402140            incr y $lineht
    21412141        }
    2142         $c create text $x $y \
     2142        $c create text $x $y \
    21432143            -anchor ne \
    21442144            -fill $itk_option(-plotforeground) -tags "vmax legend" \
    21452145            -font $font
    21462146        incr y $lineht
    2147         $c create image $x $y \
    2148             -anchor ne \
    2149             -image $_image(legend) -tags "colormap legend"
    2150         $c create rectangle $x $y 1 1 \
    2151             -fill "" -outline "" -tags "sensor legend"
    2152         $c create text $x [expr {$h-2}] \
    2153             -anchor se \
    2154             -fill $itk_option(-plotforeground) -tags "vmin legend" \
    2155             -font $font
    2156         $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
    2157         $c bind sensor <Leave> [itcl::code $this LeaveLegend]
    2158         $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
     2147        $c create image $x $y \
     2148            -anchor ne \
     2149            -image $_image(legend) -tags "colormap legend"
     2150        $c create rectangle $x $y 1 1 \
     2151            -fill "" -outline "" -tags "sensor legend"
     2152        $c create text $x [expr {$h-2}] \
     2153            -anchor se \
     2154            -fill $itk_option(-plotforeground) -tags "vmin legend" \
     2155            -font $font
     2156        $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
     2157        $c bind sensor <Leave> [itcl::code $this LeaveLegend]
     2158        $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
    21592159    }
    21602160
     
    21702170    if { [info exists _limits($_curFldName)] } {
    21712171        foreach { vmin vmax } $_limits($_curFldName) break
    2172         $c itemconfigure vmin -text [format %g $vmin]
    2173         $c itemconfigure vmax -text [format %g $vmax]
     2172        $c itemconfigure vmin -text [format %g $vmin]
     2173        $c itemconfigure vmax -text [format %g $vmax]
    21742174    }
    21752175    set y 2
     
    21772177    if { $title != "" } {
    21782178        $c itemconfigure title -text $title
    2179         $c coords title $x $y
    2180         incr y $lineht
     2179        $c coords title $x $y
     2180        incr y $lineht
    21812181    }
    21822182    $c coords vmax $x $y
     
    22262226    set font "Arial 8"
    22272227    set lineht [font metrics $font -linespace]
    2228    
     2228
    22292229    set ih [image height $_image(legend)]
    22302230    # Subtract off the offset of the color ramp from the top of the canvas
     
    22322232
    22332233    if { [string match "component*" $fname] } {
    2234         set title ""
     2234        set title ""
    22352235    } else {
    2236         if { [info exists _fields($fname)] } {
    2237             foreach { title units } $_fields($fname) break
    2238             if { $units != "" } {
    2239                 set title [format "%s (%s)" $title $units]
    2240             }
    2241         } else {
    2242             set title $fname
    2243         }
     2236        if { [info exists _fields($fname)] } {
     2237            foreach { title units } $_fields($fname) break
     2238            if { $units != "" } {
     2239                set title [format "%s (%s)" $title $units]
     2240            }
     2241        } else {
     2242            set title $fname
     2243        }
    22442244    }
    22452245    # If there's a legend title, increase the offset by the line height.
     
    22572257    }
    22582258    set color [eval format "\#%02x%02x%02x" $pixel]
    2259     $_image(swatch) put black  -to 0 0 23 23 
    2260     $_image(swatch) put $color -to 1 1 22 22 
     2259    $_image(swatch) put black  -to 0 0 23 23
     2260    $_image(swatch) put $color -to 1 1 22 22
    22612261
    22622262    # Compute the value of the point
     
    22682268        set value 0.0
    22692269    }
    2270     set tipx [expr $x + 15] 
     2270    set tipx [expr $x + 15]
    22712271    set tipy [expr $y - 5]
    22722272    .rappturetooltip configure -icon $_image(swatch)
     
    22762276        Rappture::Tooltip::text $c [format "$title %g" $value]
    22772277    }
    2278     Rappture::Tooltip::tooltip show $c +$tipx,+$tipy   
     2278    Rappture::Tooltip::tooltip show $c +$tipx,+$tipy
    22792279}
    22802280
     
    22912291# ----------------------------------------------------------------------
    22922292itcl::body Rappture::VtkImageViewer::Combo {option} {
    2293     set c $itk_component(view) 
     2293    set c $itk_component(view)
    22942294    switch -- $option {
    22952295        post {
     
    23042304        }
    23052305        deactivate {
    2306             $c itemconfigure title -fill $itk_option(-plotforeground) 
     2306            $c itemconfigure title -fill $itk_option(-plotforeground)
    23072307        }
    23082308        invoke {
     
    23162316}
    23172317
    2318 itcl::body Rappture::VtkImageViewer::SetOrientation { side } { 
     2318itcl::body Rappture::VtkImageViewer::SetOrientation { side } {
    23192319    array set positions {
    23202320        front  "0.707107 0.707107 0 0"
     
    23272327    foreach name { -qw -qx -qy -qz } value $positions($side) {
    23282328        set _view($name) $value
    2329     } 
     2329    }
    23302330    set q [ViewToQuaternion]
    23312331    $_arcball quaternion $q
  • branches/1.4/gui/scripts/vtkmeshviewer.tcl

    r4772 r5007  
    1 # -*- mode: tcl; indent-tabs-mode: nil -*- 
     1# -*- mode: tcl; indent-tabs-mode: nil -*-
    22# ----------------------------------------------------------------------
    33#  COMPONENT: vtkmeshviewer - Vtk mesh viewer
     
    5858    public method isconnected {}
    5959    public method limits { dataobj }
    60     public method parameters {title args} { 
    61         # do nothing 
     60    public method parameters {title args} {
     61        # do nothing
    6262    }
    6363    public method scale {args}
     
    6767    private method BuildAxisTab {}
    6868    private method BuildCameraTab {}
    69     private method BuildDownloadPopup { widget command } 
     69    private method BuildDownloadPopup { widget command }
    7070    private method BuildPolydataTab {}
    7171    private method Connect {}
     
    7474    private method DoResize {}
    7575    private method DoRotate {}
    76     private method EventuallyResize { w h } 
    77     private method EventuallyRotate { q } 
    78     private method EventuallySetPolydataOpacity {} 
    79     private method GetImage { args } 
    80     private method GetVtkData { args } 
     76    private method EventuallyResize { w h }
     77    private method EventuallyRotate { q }
     78    private method EventuallySetPolydataOpacity {}
     79    private method GetImage { args }
     80    private method GetVtkData { args }
    8181    private method InitSettings { args  }
    82     private method IsValidObject { dataobj } 
     82    private method IsValidObject { dataobj }
    8383    private method Pan {option x y}
    8484    private method PanCamera {}
    8585    private method Pick {x y}
    86     private method QuaternionToView { q } { 
     86    private method QuaternionToView { q } {
    8787        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
    8888    }
     
    9191    private method ReceiveImage { args }
    9292    private method Rotate {option x y}
    93     private method SetObjectStyle { dataobj } 
     93    private method SetObjectStyle { dataobj }
    9494    private method SetOrientation { side }
    9595    private method SetPolydataOpacity {}
    96     private method ViewToQuaternion {} { 
     96    private method ViewToQuaternion {} {
    9797        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
    9898    }
     
    100100
    101101    private variable _arcball ""
    102     private variable _dlist "";         # list of data objects
     102    private variable _dlist "";         # list of data objects
    103103    private variable _obj2datasets
    104     private variable _obj2ovride;       # maps dataobj => style override
    105     private variable _datasets;         # contains all the dataobj-component
    106                                         # datasets in the server
    107     private variable _dataset2style;    # maps dataobj-component to transfunc
    108     private variable _style2datasets;   # maps tf back to list of
    109                                         # dataobj-components using the tf.
     104    private variable _obj2ovride;       # maps dataobj => style override
     105    private variable _datasets;         # contains all the dataobj-component
     106                                        # datasets in the server
     107    private variable _dataset2style;    # maps dataobj-component to transfunc
     108    private variable _style2datasets;   # maps tf back to list of
     109                                        # dataobj-components using the tf.
    110110    private variable _click;            # info used for rotate operations
    111111    private variable _limits;           # autoscale min/max for all axes
     
    200200    array set _widget {
    201201        -polydataopacity        100
    202     }       
     202    }
    203203    itk_component add view {
    204204        canvas $itk_component(plotarea).view \
     
    211211    itk_component add fieldmenu {
    212212        menu $itk_component(plotarea).menu -bg black -fg white -relief flat \
    213             -tearoff no 
     213            -tearoff no
    214214    } {
    215215        usual
     
    232232
    233233    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
    234     set _map(cwidth) -1 
    235     set _map(cheight) -1 
     234    set _map(cwidth) -1
     235    set _map(cheight) -1
    236236    set _map(zoom) 1.0
    237237    set _map(original) ""
     
    279279    BuildCameraTab
    280280
    281     # Hack around the Tk panewindow.  The problem is that the requested 
     281    # Hack around the Tk panewindow.  The problem is that the requested
    282282    # size of the 3d view isn't set until an image is retrieved from
    283283    # the server.  So the panewindow uses the tiny size.
     
    285285    pack forget $itk_component(view)
    286286    blt::table $itk_component(plotarea) \
    287         0,0 $itk_component(view) -fill both -reqwidth $w 
     287        0,0 $itk_component(view) -fill both -reqwidth $w
    288288    blt::table configure $itk_component(plotarea) c1 -resize none
    289289
     
    372372
    373373itcl::body Rappture::VtkMeshViewer::DoRotate {} {
    374     SendCmd "camera orient [ViewToQuaternion]" 
     374    SendCmd "camera orient [ViewToQuaternion]"
    375375    set _rotatePending 0
    376376}
     
    497497                    continue
    498498                }
    499                 if {[info exists _obj2ovride($dataobj-raise)] && 
     499                if {[info exists _obj2ovride($dataobj-raise)] &&
    500500                    $_obj2ovride($dataobj-raise)} {
    501501                    set dlist [linsert $dlist 0 $dataobj]
     
    525525            }
    526526            return $dlist
    527         }           
     527        }
    528528        -image {
    529529            if {[llength $args] != 2} {
     
    814814    # Turn on buffering of commands to the server.  We don't want to
    815815    # be preempted by a server disconnect/reconnect (which automatically
    816     # generates a new call to Rebuild).   
     816    # generates a new call to Rebuild).
    817817    StartBufferingCommands
    818818
     
    897897        InitSettings -polydataedges -polydatalighting -polydataopacity \
    898898            -polydatavisible -polydatawireframe
    899  
     899
    900900        #SendCmd "axis lformat all %g"
    901901
     
    933933itcl::body Rappture::VtkMeshViewer::CurrentDatasets {args} {
    934934    set flag [lindex $args 0]
    935     switch -- $flag { 
     935    switch -- $flag {
    936936        "-all" {
    937937            if { [llength $args] > 1 } {
     
    952952                set dlist [get -visible]
    953953            }
    954         }           
     954        }
    955955        default {
    956956            set dlist $args
     
    10681068    foreach tag [CurrentDatasets -visible] {
    10691069        SendCmd "dataset getscalar pixel $x $y $tag"
    1070     } 
     1070    }
    10711071}
    10721072
     
    12451245        set f [open "$tmpfile" "w"]
    12461246        fconfigure $f -translation binary -encoding binary
    1247         puts $f $data 
     1247        puts $f $data
    12481248        close $f
    12491249        set reader [vtkDataSetReader $tag-xvtkDataSetReader]
     
    12931293        -variable [itcl::scope _settings(-polydatavisible)] \
    12941294        -command [itcl::code $this AdjustSetting -polydatavisible] \
    1295         -font "Arial 9" -anchor w 
     1295        -font "Arial 9" -anchor w
    12961296
    12971297    checkbutton $inner.outline \
     
    12991299        -variable [itcl::scope _settings(-outline)] \
    13001300        -command [itcl::code $this AdjustSetting -outline] \
    1301         -font "Arial 9" -anchor w 
     1301        -font "Arial 9" -anchor w
    13021302
    13031303    checkbutton $inner.wireframe \
     
    13051305        -variable [itcl::scope _settings(-polydatawireframe)] \
    13061306        -command [itcl::code $this AdjustSetting -polydatawireframe] \
    1307         -font "Arial 9" -anchor w 
     1307        -font "Arial 9" -anchor w
    13081308
    13091309    checkbutton $inner.lighting \
     
    13201320
    13211321    itk_component add field_l {
    1322         label $inner.field_l -text "Field" -font "Arial 9" 
     1322        label $inner.field_l -text "Field" -font "Arial 9"
    13231323    } {
    13241324        ignore -font
     
    13301330        [itcl::code $this AdjustSetting -field]
    13311331
    1332     label $inner.opacity_l -text "Opacity" -font "Arial 9" -anchor w 
     1332    label $inner.opacity_l -text "Opacity" -font "Arial 9" -anchor w
    13331333    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
    13341334        -variable [itcl::scope _widget(-polydataopacity)] \
     
    13451345        4,0 $inner.edges     -cspan 2  -anchor w -pady 2 \
    13461346        5,0 $inner.opacity_l -anchor w -pady 2 \
    1347         5,1 $inner.opacity   -fill x   -pady 2 
     1347        5,1 $inner.opacity   -fill x   -pady 2
    13481348
    13491349    blt::table configure $inner r* c* -resize none
     
    13721372        -command [itcl::code $this AdjustSetting -axislabels] \
    13731373        -font "Arial 9"
    1374     label $inner.grid_l -text "Grid" -font "Arial 9" 
     1374    label $inner.grid_l -text "Grid" -font "Arial 9"
    13751375    checkbutton $inner.xgrid \
    13761376        -text "X" \
     
    13941394        -font "Arial 9"
    13951395
    1396     label $inner.mode_l -text "Mode" -font "Arial 9" 
     1396    label $inner.mode_l -text "Mode" -font "Arial 9"
    13971397
    13981398    itk_component add axismode {
     
    14031403        "closest_triad"   "closest" \
    14041404        "furthest_triad"  "farthest" \
    1405         "outer_edges"     "outer"         
     1405        "outer_edges"     "outer"
    14061406    $itk_component(axismode) value "static"
    14071407    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axismode]
     
    14751475
    14761476#
    1477 #  camera -- 
     1477#  camera --
    14781478#
    14791479itcl::body Rappture::VtkMeshViewer::camera {option args} {
    1480     switch -- $option { 
     1480    switch -- $option {
    14811481        "show" {
    14821482            puts [array get _view]
     
    15231523
    15241524itcl::body Rappture::VtkMeshViewer::GetImage { args } {
    1525     if { [image width $_image(download)] > 0 && 
     1525    if { [image width $_image(download)] > 0 &&
    15261526         [image height $_image(download)] > 0 } {
    15271527        set bytes [$_image(download) data -format "jpeg -quality 100"]
     
    15361536        -title "[Rappture::filexfer::label downloadWord] as..."
    15371537    set inner [$popup component inner]
    1538     label $inner.summary -text "" -anchor w 
     1538    label $inner.summary -text "" -anchor w
    15391539    radiobutton $inner.vtk_button -text "VTK data file" \
    15401540        -variable [itcl::scope _downloadPopup(format)] \
    15411541        -font "Helvetica 9 " \
    1542         -value vtk 
     1542