Ignore:
Timestamp:
Aug 25, 2010 7:05:07 PM (14 years ago)
Author:
gah
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/blt4/gui/scripts/vtkviewer.tcl

    r1880 r1881  
    4242    private variable _obj2raise    ;# maps dataobj => raise flag 0/1
    4343    private variable _obj2vtk      ;# maps dataobj => vtk objects
    44     private variable _actors       ;# list of actors for each renderer
     44    private variable _actors ""    ;# list of actors for each renderer
    4545    private variable _lights       ;# list of lights for each renderer
    4646    private variable _click        ;# info used for _move operations
     
    8686    protected method SetActorProperties { actor style }
    8787
     88    private method ComputeLimits { args }
     89    private method GetLimits {}
    8890    private method BuildCameraTab {}
    8991    private method BuildCutplanesTab {}
     
    117119
    118120    array set _limits {
    119         xmin 0
    120         xmax 1
    121         ymin 0
    122         ymax 1
    123         zmin 0
    124         zmax 1
    125         vmin 0
    126         vmax 1
     121        xMin 0
     122        xMax 1
     123        yMin 0
     124        yMax 1
     125        zMin 0
     126        zMax 1
     127        vMin 0
     128        vMax 1
    127129    }
    128130
     
    208210    $_window PolygonSmoothingOn
    209211
     212
    210213    set _interactor [vtkRenderWindowInteractor $this-Interactor]
    211214    set _style [vtkInteractorStyleTrackballCamera $this-InteractorStyle]
     
    225228    $_axesWidget SetEnabled 1
    226229    $_axesWidget SetInteractive 0
    227     $_axesWidget SetViewport 0 0 0.3 0.3
     230    $_axesWidget SetViewport .7 0 1.0 0.3
    228231
    229232    $_cubeAxesActor SetXTitle "X Axis (units)"
     
    270273       
    271274        $_renderer AddActor $actor
    272         lappend _actors($_renderer) $actor
     275        lappend _actors $actor
    273276        #lappend _obj2vtk($dataobj) $actor
    274277    }
     
    290293           
    291294    $_renderer AddActor $actor
    292     lappend _actors($_renderer) $actor
     295    lappend _actors $actor
    293296    #lappend _obj2vtk($dataobj) $mapper $actor
    294297
     
    431434# ----------------------------------------------------------------------
    432435itcl::body Rappture::VtkViewer::scale {args} {
    433     foreach val {xmin xmax ymin ymax zmin zmax vmin vmax} {
    434         set _limits($val) ""
    435     }
    436     foreach obj $args {
    437         foreach axis {x y z v} {
    438             foreach {min max} [$obj limits $axis] break
    439             if {"" != $min && "" != $max} {
    440                 if {"" == $_limits(${axis}min)} {
    441                     set _limits(${axis}min) $min
    442                     set _limits(${axis}max) $max
    443                 } else {
    444                     if {$min < $_limits(${axis}min)} {
    445                         set _limits(${axis}min) $min
    446                     }
    447                     if {$max > $_limits(${axis}max)} {
    448                         set _limits(${axis}max) $max
    449                     }
    450                 }
    451             }
    452         }
    453     }
     436    eval ComputeLimits $args
    454437    _fixLimits
    455438}
     
    479462        }
    480463        now {
     464            set writer [vtkJPEGWriter $this-vtkJPEGWriter]
     465            set large [vtkRenderLargeImage $this-RenderLargeImage]
     466            $_axesWidget SetEnabled 0
     467            $large SetInput $_renderer
     468            $large SetMagnification 4
     469            $writer SetInputConnection [$large GetOutputPort]
     470
     471            $writer SetFileName junk.jpg
     472            $writer Write
     473            rename $writer ""
     474            rename $large ""
     475            $_axesWidget SetEnabled 1
     476
    481477            $_download export jpg -quality 100 -data bytes
    482478            return [list .jpg $bytes]
     
    496492itcl::body Rappture::VtkViewer::Clear {} {
    497493    # clear out any old constructs
    498     foreach ren [array names _actors] {
    499         foreach actor $_actors($ren) {
    500             $ren RemoveActor $actor
    501         }
    502         set _actors($ren) ""
    503     }
     494    foreach actor $_actors {
     495        $_renderer RemoveActor $actor
     496    }
     497    set _actors ""
    504498    foreach ren [array names _lights] {
    505499        foreach light $_lights($ren) {
     
    583577                set w [winfo width $itk_component(plot)]
    584578                set h [winfo height $itk_component(plot)]
    585                 set scalex [expr {$_limits(xmax)-$_limits(xmin)}]
    586                 set scaley [expr {$_limits(ymax)-$_limits(ymin)}]
     579                set scalex [expr {$_limits(xMax)-$_limits(xMin)}]
     580                set scaley [expr {$_limits(yMax)-$_limits(yMin)}]
    587581                set dx [expr {double($x-$_click(x))/$w*$scalex}]
    588582                set dy [expr {double($y-$_click(y))/$h*$scaley}]
     
    592586                    # Shift the contour plot in 2D
    593587                    #
    594                     foreach actor $_actors($_renderer) {
     588                    foreach actor $_actors {
    595589                        foreach {ax ay az} [$actor GetPosition] break
    596590                        $actor SetPosition [expr {$ax+$dx}] [expr {$ay-$dy}] 0
     
    670664            set newval [lindex $args 1]
    671665
    672             set xm [expr {0.5*($_limits(xmax)+$_limits(xmin))}]
    673             set ym [expr {0.5*($_limits(ymax)+$_limits(ymin))}]
    674             set zm [expr {0.5*($_limits(zmax)+$_limits(zmin))}]
     666            set xm [expr {0.5*($_limits(xMax)+$_limits(xMin))}]
     667            set ym [expr {0.5*($_limits(yMax)+$_limits(yMin))}]
     668            set zm [expr {0.5*($_limits(zMax)+$_limits(zMin))}]
    675669
    676670            set newval [expr {0.01*($newval-50)
    677                 *($_limits(${axis}max)-$_limits(${axis}min))
    678                   + 0.5*($_limits(${axis}max)+$_limits(${axis}min))}]
     671                *($_limits(${axis}Max)-$_limits(${axis}Min))
     672                  + 0.5*($_limits(${axis}Max)+$_limits(${axis}Min))}]
    679673
    680674            # show the current value in the readout
     
    684678
    685679            # keep a little inside the volume, or the slice will disappear!
    686             if {$newval == $_limits(${axis}min)} {
    687                 set range [expr {$_limits(${axis}max)-$_limits(${axis}min)}]
     680            if {$newval == $_limits(${axis}Min)} {
     681                set range [expr {$_limits(${axis}Max)-$_limits(${axis}Min)}]
    688682                set newval [expr {$newval + 1e-6*$range}]
    689683            }
     
    715709    set zn [expr {cos($theta*$deg2rad)}]
    716710
    717     set xm [expr {0.5*($_limits(xmax)+$_limits(xmin))}]
    718     set ym [expr {0.5*($_limits(ymax)+$_limits(ymin))}]
    719     set zm [expr {0.5*($_limits(zmax)+$_limits(zmin))}]
     711    set xm [expr {0.5*($_limits(xMax)+$_limits(xMin))}]
     712    set ym [expr {0.5*($_limits(yMax)+$_limits(yMin))}]
     713    set zm [expr {0.5*($_limits(zMax)+$_limits(zMin))}]
    720714
    721715    set cam [$_renderer GetActiveCamera]
     
    760754    set val [$itk_component(${axis}slicer) get]
    761755    set val [expr {0.01*($val-50)
    762         *($_limits(${axis}max)-$_limits(${axis}min))
    763           + 0.5*($_limits(${axis}max)+$_limits(${axis}min))}]
     756        *($_limits(${axis}Max)-$_limits(${axis}Min))
     757          + 0.5*($_limits(${axis}Max)+$_limits(${axis}Min))}]
    764758    return "Move the [string toupper $axis] cut plane.\nCurrently:  $axis = $val"
    765759}
     
    805799        -edgevisibility yes
    806800        -edgecolor black
    807         -linewidth 3.0
     801        -linewidth 1.0
    808802        -opacity 1.0
    809803    }
     
    843837        set _dims "0D"
    844838    }
     839    ComputeLimits
     840    $_cubeAxesActor SetCamera [$_renderer GetActiveCamera]
     841    puts stderr limits=[GetLimits]
     842    eval $_cubeAxesActor SetBounds [GetLimits]
    845843
    846844    #
     
    848846    #
    849847    # use vmin/vmax if possible, otherwise get from data
    850     if {$_limits(vmin) == "" || $_limits(vmax) == ""} {
     848    if {$_limits(vMin) == "" || $_limits(vMax) == ""} {
    851849        set v0 0
    852850        set v1 1
     
    858856        }
    859857    } else {
    860         set v0 $_limits(vmin)
    861         set v1 $_limits(vmax)
     858        set v0 $_limits(vMin)
     859        set v1 $_limits(vMax)
    862860    }
    863861
    864862    if 0 {
    865     set lu $this-vtkLookup
     863        set lu $this-vtkLookup
    866864        vtkLookupTable $lu
    867     $lu SetTableRange $v0 $v1
    868     $lu SetHueRange 0.66667 0.0
    869     $lu Build
    870 
    871     lappend _obj2vtk($dataobj) $lu
    872 
    873     if {$_dims == "3D"} {
     865        $lu SetTableRange $v0 $v1
     866        $lu SetHueRange 0.66667 0.0
     867        $lu Build
     868       
     869        lappend _obj2vtk($dataobj) $lu
     870       
    874871        #
    875872        # 3D LIGHTS (on both sides of all three axes)
    876873        #
    877         set x0 $_limits(xmin)
    878         set x1 $_limits(xmax)
     874        set x0 $_limits(xMin)
     875        set x1 $_limits(xMax)
    879876        set xm [expr {0.5*($x0+$x1)}]
    880         set y0 $_limits(ymin)
    881         set y1 $_limits(ymax)
     877        set y0 $_limits(yMin)
     878        set y1 $_limits(yMax)
    882879        set ym [expr {0.5*($y0+$y1)}]
    883         set z0 $_limits(zmin)
    884         set z1 $_limits(zmax)
     880        set z0 $_limits(zMin)
     881        set z1 $_limits(zMax)
    885882        set zm [expr {0.5*($z0+$z1)}]
    886883        set xr [expr {$x1-$x0}]
     
    895892        $_renderer AddLight $light
    896893        lappend _lights($_renderer) $light
    897     } else {
    898     }
    899894    }
    900895    # scan through all data objects and build the contours
     
    907902            $_renderer AddActor $actor
    908903            SetActorProperties $actor $style
    909             $_cubeAxesActor SetCamera [$_renderer GetActiveCamera]
    910             eval $_cubeAxesActor SetBounds [$actor GetBounds]
    911 
    912904            set mapper [$dataobj data $comp]
    913905            $this-xcutter SetInput [$mapper GetInput]
     906            #$_cubeAxesActor SetCamera [$_renderer GetActiveCamera]
     907            #eval $_cubeAxesActor SetBounds [$actor GetBounds]
     908
    914909
    915910            if 0 {
     
    1000995
    1001996                    lappend _obj2vtk($dataobj) $iso $mp $ac
    1002                     lappend _actors($_renderer) $ac
     997                    lappend _actors $ac
    1003998
    1004999                    catch {unset style}
     
    10551050
    10561051                            $_renderer AddActor $ac
    1057                             lappend _actors($_renderer) $ac
     1052                            lappend _actors $ac
    10581053                            lappend _obj2vtk($dataobj) $ac
    10591054                        }
     
    10771072
    10781073                        $_renderer AddActor $txa
    1079                         lappend _actors($_renderer) $txa
     1074                        lappend _actors $txa
    10801075
    10811076                        lappend _obj2vtk($dataobj) $tx $txa
     
    11191114                    [$ac GetProperty] SetColor 0 0 0
    11201115                    $_renderer AddActor $ac
    1121                     lappend _actors($_renderer) $ac
     1116                    lappend _actors $ac
    11221117
    11231118                    lappend _obj2vtk($dataobj) $pd $tr $mp $ac
     
    11441139                $ac SetPosition 0 0 0
    11451140                $_renderer AddActor $ac
    1146                 lappend _actors($_renderer) $ac
     1141                lappend _actors $ac
    11471142
    11481143                lappend _obj2vtk($dataobj) $cf $mp $ac
     
    11661161                eval [$ola GetProperty] SetColor [_color2rgb $itk_option(-plotforeground)]
    11671162                $_renderer AddActor $ola
    1168                 lappend _actors($_renderer) $ola
     1163                lappend _actors $ola
    11691164
    11701165                lappend _obj2vtk($dataobj) $olf $olm $ola
     
    12021197
    12031198                        lappend _obj2vtk($dataobj) $vtx $vmp $vac
    1204                         lappend _actors($_renderer) $vac
     1199                        lappend _actors $vac
    12051200
    12061201                        $vmp Update
     
    12501245                if 0 {
    12511246                $this-vtkRenderer2 AddActor2D $lg
    1252                 lappend _actors($this-vtkRenderer2) $lg
     1247                lappend _actors $lg
    12531248                lappend _obj2vtk($dataobj) $lg
    12541249                }
     
    17811776
    17821777}
     1778
     1779itcl::body Rappture::VtkViewer::GetLimits {} {
     1780    return [list $_limits(xMin) $_limits(xMax) \
     1781                $_limits(yMin) $_limits(yMax) \
     1782                $_limits(zMin) $_limits(zMax)]
     1783}
     1784
     1785itcl::body Rappture::VtkViewer::ComputeLimits { args } {
     1786    array set _limits {
     1787        xMin 0
     1788        xMax 1
     1789        yMin 0
     1790        yMax 1
     1791        zMin 0
     1792        zMax 1
     1793        vMin 0
     1794        vMax 1
     1795    }
     1796    set actors {}
     1797    if { [llength $args] > 0 } {
     1798        foreach dataobj $args {
     1799            foreach comp [$dataobj components] {
     1800                lappend actors [$dataobj values $comp]
     1801            }
     1802        }
     1803    } else {
     1804        foreach dataobj [get] {
     1805            foreach comp [$dataobj components] {
     1806                lappend actors [$dataobj values $comp]
     1807            }
     1808        }
     1809    }
     1810    if { [llength $actors] == 0 } {
     1811        return
     1812    }
     1813    set actor [lindex $actors 0]
     1814    foreach key { xMin xMax yMin yMax zMin zMax} value [$actor GetBounds] {
     1815        set _limits($key) $value
     1816    }
     1817    foreach actor [lrange $actors 1 end] {
     1818        foreach { xMin xMax yMin yMax zMin zMax} [$actor GetBounds] break
     1819        if { $xMin < $_limits(xMin) } {
     1820            set _limits(xMin) $xMin
     1821        }
     1822        if { $xMax > $_limits(xMax) } {
     1823            set _limits(xMax) $xMax
     1824        }
     1825        if { $yMin < $_limits(yMin) } {
     1826            set _limits(yMin) $yMin
     1827        }
     1828        if { $yMax > $_limits(yMax) } {
     1829            set _limits(yMax) $yMax
     1830        }
     1831        if { $zMin < $_limits(zMin) } {
     1832            set _limits(zMin) $zMin
     1833        }
     1834        if { $zMax > $_limits(zMax) } {
     1835            set _limits(zMax) $zMax
     1836        }
     1837    }
     1838    set _limits(vMin) $_limits(zMin)
     1839    set _limits(vMax) $_limits(zMax)
     1840}
Note: See TracChangeset for help on using the changeset viewer.