[brlcad-commits] SF.net SVN: brlcad:[50567] brlcad/trunk/src/tclscripts/lib
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <bo...@us...> - 2012-05-16 11:55:31
|
Revision: 50567 http://brlcad.svn.sourceforge.net/brlcad/?rev=50567&view=rev Author: bob1961 Date: 2012-05-16 11:55:21 +0000 (Wed, 16 May 2012) Log Message: ----------- Added a perspective parameter to cadwidgets::Ged::make_image, cadwidgets::Ged::make_image_local and cadwidgets::rtimage. Also added an extra rtedge call for color objects that are edged in cadwidgets::rtimage. Modified Paths: -------------- brlcad/trunk/src/tclscripts/lib/Ged.tcl brlcad/trunk/src/tclscripts/lib/RtImage.tcl Modified: brlcad/trunk/src/tclscripts/lib/Ged.tcl =================================================================== --- brlcad/trunk/src/tclscripts/lib/Ged.tcl 2012-05-16 11:51:53 UTC (rev 50566) +++ brlcad/trunk/src/tclscripts/lib/Ged.tcl 2012-05-16 11:55:21 UTC (rev 50567) @@ -240,7 +240,7 @@ method make_bb {name args} method get_fbserv {_fbtype _w _n} method make_image_local {_bgcolor _ecolor _necolor _occmode _gamma _color_objects _ghost_objects _edge_objects} - method make_image {_port _w _n _viewsize _orientation _eye_pt _bgcolor _ecolor _necolor _occmode _gamma _color_objects _ghost_objects _edge_objects} + method make_image {_port _w _n _viewsize _orientation _eye_pt _perspective _bgcolor _ecolor _necolor _occmode _gamma _color_objects _ghost_objects _edge_objects} method make_name {args} method make_pnts {args} method match {args} @@ -1626,6 +1626,7 @@ set viewsize [lindex [lindex $vdata 0] 1] set orientation [lrange [lindex $vdata 1] 1 end] set eye_pt [lrange [lindex $vdata 2] 1 end] + set perspective [$mGed perspective] set port [listen] if {$port < 0} { @@ -1636,7 +1637,7 @@ set fbs_pid [lindex $fbs_list 0] set fbs_port [lindex $fbs_list 1] - make_image $fbs_port $w $n $viewsize $orientation $eye_pt \ + make_image $fbs_port $w $n $viewsize $orientation $eye_pt $perspective \ $_bgcolor $_ecolor $_necolor $_occmode $_gamma $_color_objects $_ghost_objects $_edge_objects set binpath [bu_brlcad_root "bin"] @@ -1650,7 +1651,7 @@ if {$kill_cmd != ""} { # Give it time to copy the image from the inmem framebuffer - after 3000 exec $kill_cmd $fbs_pid +# after 3000 exec $kill_cmd $fbs_pid } return @@ -1659,7 +1660,7 @@ # # Not yet handling perspective. # -::itcl::body cadwidgets::Ged::make_image {_port _w _n _viewsize _orientation _eye_pt _bgcolor _ecolor _necolor _occmode _gamma _color_objects _ghost_objects _edge_objects} { +::itcl::body cadwidgets::Ged::make_image {_port _w _n _viewsize _orientation _eye_pt _perspective _bgcolor _ecolor _necolor _occmode _gamma _color_objects _ghost_objects _edge_objects} { global tcl_platform global env @@ -1669,7 +1670,7 @@ return "make_image: no database is open" } - return [cadwidgets::rtimage $dbfile $_port $_w $_n $_viewsize $_orientation $_eye_pt \ + return [cadwidgets::rtimage $dbfile $_port $_w $_n $_viewsize $_orientation $_eye_pt $_perspective \ $_bgcolor $_ecolor $_necolor $_occmode $_gamma $_color_objects $_ghost_objects $_edge_objects] } Modified: brlcad/trunk/src/tclscripts/lib/RtImage.tcl =================================================================== --- brlcad/trunk/src/tclscripts/lib/RtImage.tcl 2012-05-16 11:51:53 UTC (rev 50566) +++ brlcad/trunk/src/tclscripts/lib/RtImage.tcl 2012-05-16 11:55:21 UTC (rev 50567) @@ -32,6 +32,7 @@ _viewsize _orientation _eye_pt + _perspective _bgcolor _ecolor _necolor @@ -72,10 +73,11 @@ if {[llength $_color_objects]} { set have_color_objects 1 set cmd [list [file join $binpath rt] -w $_w -n $_n \ - -o $tfci \ + -F $_port \ -V $ar \ -R \ -A 0.9 \ + -p $_perspective \ -C [lindex $_bgcolor 0]/[lindex $_bgcolor 1]/[lindex $_bgcolor 2] \ -c [list viewsize $_viewsize] \ -c [eval list orientation $_orientation] \ @@ -91,8 +93,64 @@ # catch {eval exec $cmd} - # Put the image into the framebuffer + # Look for color objects that also get edges + if {[llength $_edge_objects] && [llength $_ecolor] == 3} { + + set r [lindex $_ecolor 0] + set g [lindex $_ecolor 1] + set b [lindex $_ecolor 2] + + if {[string is digit $r] && $r <= 255 || + [string is digit $g] && $g <= 255 || + [string is digit $b] && $b <= 255} { + + set fgMode [list set fg=[lindex $_ecolor 0],[lindex $_ecolor 1],[lindex $_ecolor 2]] + + set ce_objects {} + set cne_objects {} + foreach cobj $_color_objects { + set i [lsearch $_edge_objects $cobj] + if {$i != -1} { + lappend ce_objects $cobj + } else { + lappend ne_objects $cobj + } + } + + if {[llength $ce_objects]} { + set coMode "-c {set ov=1}" + set bgMode [list set bg=[lindex $_bgcolor 0],[lindex $_bgcolor 1],[lindex $_bgcolor 2]] + + set cmd [concat [file join $binpath rtedge] -w $_w -n $_n \ + -F $_port \ + -V $ar \ + -R \ + -A 0.9 \ + -p $_perspective \ + -c [list $fgMode] \ + -c [list $bgMode] \ + $coMode \ + -c [list [list viewsize $_viewsize]] \ + -c [list [eval list orientation $_orientation]] \ + -c [list [eval list eye_pt $_eye_pt]] \ + $_dbfile] + + foreach obj $ce_objects { + lappend cmd $obj + } + } + + # + # Run rtedge to generate the full-color with edges + # + catch {eval exec $cmd} + + } + } + + # Pull the image from the framebuffer catch {eval exec [file join $binpath pix-fb] -w $_w -n $_n -F $_port $tfci} + } else { set have_color_objects 0 @@ -131,6 +189,7 @@ -V $ar \ -R \ -A 0.9 \ + -p $_perspective \ -C [lindex $_bgcolor 0]/[lindex $_bgcolor 1]/[lindex $_bgcolor 2] \ -c [list viewsize $_viewsize] \ -c [eval list orientation $_orientation] \ @@ -194,6 +253,7 @@ -V $ar \ -R \ -A 0.9 \ + -p $_perspective \ -c [list $fgMode] \ -c [list $bgMode] \ $coMode \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |