summaryrefslogtreecommitdiff
path: root/blt/demos/barchart4.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'blt/demos/barchart4.tcl')
-rwxr-xr-xblt/demos/barchart4.tcl135
1 files changed, 135 insertions, 0 deletions
diff --git a/blt/demos/barchart4.tcl b/blt/demos/barchart4.tcl
new file mode 100755
index 00000000000..c4ab70cbb62
--- /dev/null
+++ b/blt/demos/barchart4.tcl
@@ -0,0 +1,135 @@
+#!../src/bltwish
+
+package require BLT
+# --------------------------------------------------------------------------
+# Starting with Tcl 8.x, the BLT commands are stored in their own
+# namespace called "blt". The idea is to prevent name clashes with
+# Tcl commands and variables from other packages, such as a "table"
+# command in two different packages.
+#
+# You can access the BLT commands in a couple of ways. You can prefix
+# all the BLT commands with the namespace qualifier "blt::"
+#
+# blt::graph .g
+# blt::table . .g -resize both
+#
+# or you can import all the command into the global namespace.
+#
+# namespace import blt::*
+# graph .g
+# table . .g -resize both
+#
+# --------------------------------------------------------------------------
+
+if { $tcl_version >= 8.0 } {
+ namespace import blt::*
+ namespace import -force blt::tile::*
+}
+
+source scripts/demo.tcl
+
+proc random {{max 1.0} {min 0.0}} {
+ global randomSeed
+
+ set randomSeed [expr (7141*$randomSeed+54773) % 259200]
+ set num [expr $randomSeed/259200.0*($max-$min)+$min]
+ return $num
+}
+set randomSeed 14823
+
+
+set graph .graph
+
+source scripts/stipples.tcl
+source scripts/patterns.tcl
+
+option add *Barchart.title "A Simple Barchart"
+option add *Barchart.relief raised
+option add *Barchart.borderWidth 2
+option add *Barchart.plotBackground white
+option add *Barchart.baseline 57.299
+
+option add *Element.borderWidth 2
+option add *Element.Background white
+option add *Element.Relief raised
+
+option add *x.Title "X Axis"
+option add *x.Font *Times-Medium-R*10*
+option add *y.Title "Y Axis"
+option add *LineMarker.Foreground yellow
+
+set visual [winfo screenvisual .]
+if { $visual != "staticgray" && $visual != "grayscale" } {
+ option add *print.background yellow
+ option add *quit.background red
+ option add *graph.background palegreen
+}
+
+htext .header -text \
+{ This is an example of the barchart widget. The barchart has
+ many components; x and y axis, legend, crosshairs, elements, etc.
+ To create a postscript file "bar.ps", press the %%
+ set w $htext(widget)
+ button $w.print -text {Print} -command {
+ $graph postscript output bar.ps
+ }
+ $w append $w.print
+
+%% button.
+}
+barchart $graph
+$graph xaxis configure -rotate 90 -stepsize 0
+
+htext .footer -text { Hit the %%
+ set im [image create photo -file ./images/stopsign.gif]
+ button $htext(widget).quit -image $im -command { exit }
+ $htext(widget) append $htext(widget).quit -pady 2
+%% button when you've seen enough. %%
+ label $htext(widget).logo -bitmap BLT
+ $htext(widget) append $htext(widget).logo
+%%}
+
+set attributes {
+ red bdiagonal1
+ orange bdiagonal2
+ yellow fdiagonal1
+ green fdiagonal2
+ blue hline1
+ cyan hline2
+ magenta vline1
+ violetred vline2
+ purple crossdiag
+ lightblue hobbes
+}
+
+set count 0
+foreach { color stipple } $attributes {
+ $graph pen create pen$count -fg ${color}1 -bg ${color}4 -stipple $stipple
+ lappend styles [list pen$count $count $count]
+ incr count
+}
+
+vector x y w
+
+x seq 0 1000
+y expr random(x)*90.0
+w expr round(y/10.0)%$count
+y expr y+10.0
+
+$graph element create data -label {} \
+ -x x -y y -weight w -styles $styles
+
+table . \
+ 0,0 .header -fill x \
+ 1,0 .graph -fill both \
+ 2,0 .footer -fill x
+
+table configure . r0 r2 -resize none
+
+wm min . 0 0
+
+Blt_ZoomStack $graph
+Blt_Crosshairs $graph
+Blt_ActiveLegend $graph
+Blt_ClosestPoint $graph
+