bind Photo <2> {%W scan mark %x %y}
bind Photo <B2-Motion> {%W scan dragto %x %y}
bind Photo <Enter> {colorfocus %W}
bind Toplevel <Enter> {colorfocus %W}
wm minsize . 50 50

frame .p
frame .p.bot
frame .p.bot.fill -geom 15x15 -bg maroon
scrollbar .p.bot.x -orient horiz -command {.p.f.p xview} -bg maroon
pack append .p.bot .p.bot.x {left fillx expand} .p.bot.fill right
scrollbar .p.y -orient vert -command {.p.f.p yview} -bg maroon
frame .p.f -borderwidth 3 -relief sunken
photo .p.f.p -xscroll {.p.bot.x set} -yscroll {.p.y set}
pack append .p.f .p.f.p top
if {[lindex [.p.f.p config -ditherlevel] 4] == 0} {
#   enable image storage
    .p.f.p config -ditherlevel 1
}
pack append .p .p.bot {bottom fillx} .p.y {right filly} .p.f {left expand}
readppm .p.f.p teapot.ppm
pack append . .p top
bind .p.f.p <Enter> {focus .p.f.p}
bind .p.f.p a {.p.f.p config -palette 7/7/4}
bind .p.f.p b {.p.f.p config -palette 8/8/4}
bind .p.f.p f {.p.f.p config -palette 256/256/256}
bind .p.f.p m {.p.f.p config -palette 2}
bind .p.f.p n {.p.f.p config -palette 128}
bind .p.f.p d {.p.f.p dither}
bind .p.f.p r {readppm .p.f.p teapot.ppm}
bind .p.f.p c {copy .p.f.p}
bind .p.f.p q {exit}
bind .p.f.p 1 {.p.f.p config -gamma .3}
bind .p.f.p 2 {.p.f.p config -gamma .5}
bind .p.f.p 3 {.p.f.p config -gamma .75}
bind .p.f.p 4 {.p.f.p config -gamma 1}
bind .p.f.p 5 {.p.f.p config -gamma 1.5}
bind .p.f.p 6 {.p.f.p config -gamma 2}
bind .p.f.p 7 {.p.f.p config -gamma 2.5}
bind .p.f.p 8 {.p.f.p config -gamma 3}
bind .p.f.p 9 {.p.f.p config -gamma 4}
colorfocus .p.f.p

# make a copy of photo window w
proc copy {w} {
    global copynum
    incr copynum
    set new ".copy$copynum"
    toplevel $new -borderwidth 3 -relief sunk
    wm title $new "Copy #$copynum"
    wm minsize $new 50 50
    photo $new.p
    bind $new.p q "destroy $w"
    pack append $new $new.p top
    photocopy $new.p $w
}

set copynum 0
