OSDN Git Service

Please enter the commit message for your changes. Lines starting
[eos/base.git] / util / src / TclTk / blt2.5 / demos / scripts / graph2.tcl
diff --git a/util/src/TclTk/blt2.5/demos/scripts/graph2.tcl b/util/src/TclTk/blt2.5/demos/scripts/graph2.tcl
new file mode 100644 (file)
index 0000000..b026789
--- /dev/null
@@ -0,0 +1,144 @@
+option add *HighlightThickness         0
+option add *Tile                       bgTexture
+option add *Button.Tile                        ""
+
+image create photo bgTexture -file ./images/chalk.gif
+
+set configOptions [subst {
+    InvertXY                   no
+    Axis.TickFont              { Helvetica 14 bold }
+    Axis.TitleFont             { Helvetica 12 bold }
+    BorderWidth                        2
+    Element.Pixels             8
+    Element.ScaleSymbols       true
+    Element.Smooth             cubic
+    Font                       { Helvetica 18 bold }
+    Foreground                 white
+    Legend.ActiveBorderWidth   2
+    Legend.ActiveRelief                raised
+    Legend.Anchor              ne
+    Legend.BorderWidth         0
+    Legend.Font                        { Helvetica 34 }
+    Legend.Foreground          orange
+    #Legend.Position           plotarea
+    Legend.Hide                        yes
+    Legend.Relief              flat
+    Postscript.Preview         yes
+    Relief                     raised
+    Shadow                     { navyblue 2 }
+    Title                      "Bitmap Symbols" 
+    degrees.Command            [namespace current]::FormatAxisLabel
+    degrees.LimitsFormat       "Deg=%g"
+    degrees.Subdivisions       0 
+    degrees.Title              "Degrees" 
+    degrees.stepSize           90 
+    temp.LimitsFormat          "Temp=%g"
+    temp.Title                 "Temperature"
+    y.Color                    purple2
+    y.LimitsFormat             "Y=%g"
+    y.Rotate                   90 
+    y.Title                    "Y" 
+    y.loose                    no
+    y2.Color                   magenta3
+    y2.Hide                    no
+    xy2.Rotate                 270
+    y2.Rotate                  0
+    y2.Title                   "Y2" 
+    y2.LimitsFormat            "Y2=%g"
+    x2.LimitsFormat            "x2=%g"
+}]
+
+set resource [string trimleft $graph .]
+foreach { option value } $configOptions {
+    option add *$resource.$option $value
+}
+
+proc FormatAxisLabel {graph x} {
+     format "%d%c" [expr {int($x)}] 0xB0
+}
+
+set max -1.0
+set step 0.2
+
+set letters { A B C D E F G H I J K L }
+set count 0
+for { set level 30 } { $level <= 100 } { incr level 10 } {
+    set color [format "#dd0d%0.2x" [expr round($level*2.55)]]
+    set pen "pen$count"
+    set symbol "symbol$count"
+    bitmap compose $symbol [lindex $letters $count] \
+       -font -*-helvetica-medium-r-*-*-34-*-*-*-*-*-*-*
+    $graph pen create $pen \
+       -color $color \
+       -symbol $symbol \
+       -fill "" \
+       -pixels 13
+    set min $max
+    set max [expr $max + $step]
+    lappend styles "$pen $min $max"
+    incr count
+}
+
+$graph axis create temp \
+    -color lightgreen \
+    -title Temp  
+$graph axis create degrees \
+    -rotate 90
+$graph xaxis use degrees
+
+set tcl_precision 15
+set pi1_2 [expr 3.14159265358979323846/180.0]
+
+vector create w x sinX cosX radians
+x seq -360.0 360.0 10.0
+#x seq -360.0 -180.0 30.0
+if {[catch {
+vector op expr radians { x * $pi1_2 }
+vector op expr sinX sin(radians)
+vector op expr cosX cos(radians)
+}]} {
+tclLog "new 'op' subcmd unavailable."
+radians expr { x * $pi1_2 }
+sinX expr sin(radians)
+cosX expr cos(radians)
+cosX dup w
+}
+vector destroy radians
+vector create xh xl yh yl
+set pct [expr {($cosX(max) - $cosX(min)) * 0.025}]
+yh expr {cosX + $pct}
+yl expr {cosX - $pct}
+set pct [expr ($x(max) - $x(min)) * 0.025]
+xh expr {x + $pct}
+xl expr {x - $pct}
+
+$graph element create line3 \
+    -color green4 \
+    -fill green \
+    -label "cos(x)" \
+    -mapx degrees \
+    -styles $styles \
+    -weights w \
+    -x x \
+    -y cosX \
+    -yhigh yh -ylow yl
+
+$graph element create line1 \
+    -color orange \
+    -outline black \
+    -fill orange \
+    -fill yellow \
+    -label "sin(x)" \
+    -linewidth 3 \
+    -mapx degrees \
+    -pixels 6m \
+    -symbol "@bitmaps/hobbes.xbm @bitmaps/hobbes_mask.xbm" \
+    -x x \
+    -y sinX 
+
+Blt_ZoomStack $graph
+Blt_Crosshairs $graph
+#Blt_ActiveLegend $graph
+Blt_ClosestPoint $graph
+Blt_PrintKey $graph
+