Revision: 55044
http://brlcad.svn.sourceforge.net/brlcad/?rev=55044&view=rev
Author: bob1961
Date: 2013-04-04 12:23:17 +0000 (Thu, 04 Apr 2013)
Log Message:
-----------
Added support for the checker shader.
Modified Paths:
--------------
brlcad/trunk/src/tclscripts/archer/ShaderEdit.tcl
Modified: brlcad/trunk/src/tclscripts/archer/ShaderEdit.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/archer/ShaderEdit.tcl 2013-04-04 12:22:02 UTC
(rev 55043)
+++ brlcad/trunk/src/tclscripts/archer/ShaderEdit.tcl 2013-04-04 12:23:17 UTC
(rev 55044)
@@ -68,6 +68,7 @@
Mirror
Glass
Light
+ Checker
Cloud
Unlisted
None
@@ -78,6 +79,7 @@
mirror
glass
light
+ checker
cloud
unlisted
""
@@ -88,6 +90,7 @@
{Mirror mirror}
{Glass glass}
{Light light}
+ {Checker checker}
{Cloud cloud}
{Unlisted unlisted}
{None ""}
@@ -238,6 +241,7 @@
method build_plastic {parent id}
method build_mirror {parent id}
method build_glass {parent id}
+ method build_checker {parent id}
method build_cloud {parent id}
method buildPhong {parent id}
@@ -263,6 +267,9 @@
method updatePhongForm {id}
+ method updateForm_checker {id}
+ method setFormDefaults_checker {id}
+
method updateForm_cloud {id}
method setFormDefaults_cloud {id}
@@ -283,6 +290,10 @@
method validateDouble_light {id d}
method updateLightSpec {id {_unused ""}}
+ method validateDouble_checker {id d}
+ method validateRgb_checker {id rgb}
+ method updateCheckerSpec {id}
+
method validateDouble_cloud {id d}
method updateCloudSpec {id}
@@ -385,6 +396,71 @@
}
+::itcl::body ShaderEdit::build_checker {parent id} {
+ set shaderType "checker"
+ set shaderTypeUnlisted 0
+
+ itk_component add checker$id\F {
+ ::ttk::frame $parent.checker$id\F
+ } {}
+
+ set parent $itk_component(checker$id\F)
+
+ itk_component add checkerColorA$id\L {
+ ::ttk::label $parent.checkerColorA$id\L \
+ -text "Color A"
+ } {}
+
+ itk_component add checkerColorA$id\E {
+ ::ttk::entry $parent.checkerColorA$id\E \
+ -width 15 \
+ -textvariable [::itcl::scope checkerColorA($id)] \
+ -validate key \
+ -validatecommand [::itcl::code $this validateRgb_checker $id %P]
+ } {}
+
+ itk_component add checkerColorB$id\L {
+ ::ttk::label $parent.checkerColorB$id\L \
+ -text "Color B"
+ } {}
+
+ itk_component add checkerColorB$id\E {
+ ::ttk::entry $parent.checkerColorB$id\E \
+ -width 15 \
+ -textvariable [::itcl::scope checkerColorB($id)] \
+ -validate key \
+ -validatecommand [::itcl::code $this validateRgb_checker $id %P]
+ } {}
+
+ itk_component add checkerScale$id\L {
+ ::ttk::label $parent.checkerScale$id\L \
+ -text "Range"
+ } {}
+
+ itk_component add checkerScale$id\E {
+ ::ttk::entry $parent.checkerScale$id\E \
+ -width 5 \
+ -textvariable [::itcl::scope checkerScale($id)] \
+ -validate key \
+ -validatecommand [::itcl::code $this validateDouble_checker $id %P]
+ } {}
+
+ set row 0
+ grid $itk_component(checkerColorA$id\L) -row $row -column 0 -sticky e
+ grid $itk_component(checkerColorA$id\E) -row $row -column 1 -sticky w
+ incr row
+ grid $itk_component(checkerColorB$id\L) -row $row -column 0 -sticky e
+ grid $itk_component(checkerColorB$id\E) -row $row -column 1 -sticky w
+ incr row
+ grid $itk_component(checkerScale$id\L) -row $row -column 0 -sticky e
+ grid $itk_component(checkerScale$id\E) -row $row -column 1 -sticky w
+
+ pack $itk_component(checker$id\F) -expand yes -fill both
+
+ setFormDefaults_checker $id
+}
+
+
::itcl::body ShaderEdit::build_cloud {parent id} {
set shaderType "cloud"
set shaderTypeUnlisted 0
@@ -801,6 +877,12 @@
"Glass" {
set stype glass
}
+ "Light" {
+ set stype light
+ }
+ "Checker" {
+ set stype checker
+ }
"Cloud" {
set stype cloud
}
@@ -1007,6 +1089,48 @@
set ignoreShaderSpec 0
}
+::itcl::body ShaderEdit::updateForm_checker {id} {
+ setFormDefaults_checker $id
+
+ set ignoreShaderSpec 1
+ foreach {key val} [lindex $shaderSpec 1] {
+ if {$val != ""} {
+ set notEmptyVal 1
+ } else {
+ set notEmptyVal 0
+ }
+
+ switch -- $key {
+ "a" {
+ if {$notEmptyVal && [llength $val] == 3} {
+ set checkerColorA($id) $val
+ }
+ }
+ "b" {
+ if {$notEmptyVal && [llength $val] == 3} {
+ set checkerColorB($id) $val
+ }
+ }
+ "s" {
+ if {$notEmptyVal && [string is double $val]} {
+ set checkerScale($id) $val
+ }
+ }
+ }
+ }
+ set ignoreShaderSpec 0
+}
+
+::itcl::body ShaderEdit::setFormDefaults_checker {id} {
+ set ignoreShaderSpec 1
+
+ set checkerColorA($id) $DEF_CHECKER_COLOR_A
+ set checkerColorB($id) $DEF_CHECKER_COLOR_B
+ set checkerScale($id) $DEF_CHECKER_SCALE
+
+ set ignoreShaderSpec 0
+}
+
::itcl::body ShaderEdit::updateForm_cloud {id} {
setFormDefaults_cloud $id
@@ -1034,16 +1158,11 @@
set ignoreShaderSpec 0
}
-::itcl::body ShaderEdit::setFormDefaults_light {id} {
+::itcl::body ShaderEdit::setFormDefaults_cloud {id} {
set ignoreShaderSpec 1
- set lightFraction($id) $DEF_LIGHT_FRACTION
- set lightAngle($id) $DEF_LIGHT_ANGLE
- set lightTarget($id) $DEF_LIGHT_TARGET
- set lightLumens($id) $DEF_LIGHT_LUMENS
- set lightInfinite($id) $DEF_LIGHT_INFINITE
- set lightVisible($id) $DEF_LIGHT_VISIBLE
- set lightShadowRays($id) $DEF_LIGHT_SHADOW_RAYS
+ set cloudThreshold($id) $DEF_CLOUD_THRESHOLD
+ set cloudRange($id) $DEF_CLOUD_RANGE
set ignoreShaderSpec 0
}
@@ -1103,11 +1222,16 @@
set ignoreShaderSpec 0
}
-::itcl::body ShaderEdit::setFormDefaults_cloud {id} {
+::itcl::body ShaderEdit::setFormDefaults_light {id} {
set ignoreShaderSpec 1
- set cloudThreshold($id) $DEF_CLOUD_THRESHOLD
- set cloudRange($id) $DEF_CLOUD_RANGE
+ set lightFraction($id) $DEF_LIGHT_FRACTION
+ set lightAngle($id) $DEF_LIGHT_ANGLE
+ set lightTarget($id) $DEF_LIGHT_TARGET
+ set lightLumens($id) $DEF_LIGHT_LUMENS
+ set lightInfinite($id) $DEF_LIGHT_INFINITE
+ set lightVisible($id) $DEF_LIGHT_VISIBLE
+ set lightShadowRays($id) $DEF_LIGHT_SHADOW_RAYS
set ignoreShaderSpec 0
}
@@ -1216,6 +1340,64 @@
}
}
+::itcl::body ShaderEdit::validateDouble_checker {id d} {
+ if {![::cadwidgets::Ged::validateDouble $d]} {
+ return 0
+ }
+
+ if {!$ignoreShaderSpec} {
+ after idle [::itcl::code $this updateCheckerSpec $id]
+ }
+
+ return 1
+}
+
+::itcl::body ShaderEdit::validateRgb_checker {id rgb} {
+ if {![::cadwidgets::Ged::validateRgb $rgb]} {
+ return 0
+ }
+
+ if {!$ignoreShaderSpec} {
+ after idle [::itcl::code $this updateCheckerSpec $id]
+ }
+
+ return 1
+}
+
+::itcl::body ShaderEdit::updateCheckerSpec {id} {
+ set newSpec ""
+
+ if {$checkerColorA($id) != $DEF_CHECKER_COLOR_A} {
+ if {$newSpec == ""} {
+ append newSpec "a {$checkerColorA($id)}"
+ } else {
+ append newSpec " a {$checkerColorA($id)}"
+ }
+ }
+
+ if {$checkerColorB($id) != $DEF_CHECKER_COLOR_B} {
+ if {$newSpec == ""} {
+ append newSpec "b {$checkerColorB($id)}"
+ } else {
+ append newSpec " b {$checkerColorB($id)}"
+ }
+ }
+
+ if {$checkerScale($id) != $DEF_CHECKER_SCALE} {
+ if {$newSpec == ""} {
+ append newSpec "s $checkerScale($id)"
+ } else {
+ append newSpec " s $checkerScale($id)"
+ }
+ }
+
+ set shaderSpec "checker [list $newSpec]"
+
+ if {$allowCallbacks && $itk_option(-shaderChangedCallback) != ""} {
+ $itk_option(-shaderChangedCallback)
+ }
+}
+
::itcl::body ShaderEdit::validateDouble_cloud {id d} {
if {![::cadwidgets::Ged::validateDouble $d]} {
return 0
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire
the most talented Cisco Certified professionals. Visit the
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits