#!/usr/bin/wish

# Show how to change the matte color.
. configure -background red
frame .f

# Make a small window to demonstrate the scrollbar-centering code.
wm geometry . 320x240

# Create a canvas with a black background to better show its size limits.
canvas .c -xscrollcommand ".x set" -yscrollcommand ".y set" -background black
.c configure -scrollregion {-255 -255 255 255} -width 510 -height 510
.c configure -highlightthickness 0

# Draw some crazy lines.
set a  [expr {1 / sqrt(2)}]
set t1 [expr {atan(1) * 0.5}]
set t2 [expr {atan(1) * 1.0}]
.c create line [expr {-202 * $a}] [expr {-202 * $a}]\
               [expr {-172 * $a}] [expr {-172 * $a}] -tags l
.c create line [expr { 202 * $a}] [expr {-202 * $a}]\
               [expr { 172 * $a}] [expr {-172 * $a}] -tags l
.c create line [expr {-202 * $a}] [expr { 202 * $a}]\
               [expr {-172 * $a}] [expr { 172 * $a}] -tags l
.c create line [expr { 202 * $a}] [expr { 202 * $a}]\
               [expr { 172 * $a}] [expr { 172 * $a}] -tags l
.c create line -250    0 -177    0                   -tags l
.c create line  250    0  177    0                   -tags l
.c create line    0 -197    0 -125                   -tags l
.c create line    0  197    0  125                   -tags l
.c create line 0 0 [expr {130 * cos($t1)}] [expr {-130 * sin($t1)}] -tags l 
.c create line 0 0 [expr {130 * cos($t2)}] [expr {-130 * sin($t2)}] -tags l

# And some circles and junk too.
.c create oval -250 -250 250 250                                     -tags c
.c create arc  -177 -177 177 177 -start 135 -extent  90   -style arc -tags c
.c create arc  -197 -197 197 197 -start  45 -extent  90   -style arc -tags c
.c create arc  -177 -177 177 177 -start 315 -extent  90   -style arc -tags c
.c create arc  -197 -197 197 197 -start 225 -extent  90   -style arc -tags c
.c create arc  -125 -125 125 125 -start  45 -extent 337.5 -style arc -tags c
.c create oval 0 0 0 0                                               -tags c

# Set up colors.
.c itemconfigure l   -fill    white
.c itemconfigure c   -outline white
.c itemconfigure all -width 10

# Now make scrollbars.
scrollbar .y -command ".c yview" -orient vertical
scrollbar .x -command ".c xview" -orient horizontal

# Then grid it all together.
grid .c -row 0 -column 0
grid .y -row 0 -column 1 -sticky ns
grid .x -row 1 -column 0 -sticky ew
grid .f -row 1 -column 1 -sticky nsew
grid rowconfigure    . 0 -weight 1
grid columnconfigure . 0 -weight 1

# Finally, center the scrollbars.
update
set yh [expr {(1 - [lindex [.c yview] 1] + [lindex [.c yview] 0]) * 0.5}]
set xh [expr {(1 - [lindex [.c xview] 1] + [lindex [.c xview] 0]) * 0.5}]
.c yview moveto $yh
.c xview moveto $xh

# EOF.

