source or package require httpd::megaimage Megaimage_Url /megaimageThen you can start tclhttpd like so:
tclkit8.5 /path/to/tclhttpd/bin/httpd.tcl -port 8000Now in your web browser load:
http://localhost:8000/megaimage/data
package provide httpd::megaimage 1.0
package require httpd
package provide httpd::megaimage 1.0
package require httpd::direct
package require httpd::redirect
set dir [file dirname [info script]]
load [file join $dir megaimage.so]
load [file join $dir pngext2.so] Pngext2
set megaimage(dir) $dir
proc Megaimage_blue {} {
global megaimage
set obj $megaimage(baseobj)
set newrow [list]
if {$megaimage(incr) > 0} {
foreach {r g b a} [$obj getrow $megaimage(y)] {
lappend newrow $r $g 255 255
}
} else {
foreach {r g b a} [$obj getrow $megaimage(y)] {
lappend newrow $r $g $b 100
}
}
$obj putrow $megaimage(y) $newrow
incr megaimage(y) $megaimage(incr)
if {$megaimage(y) >= $megaimage(height)} {
set megaimage(y) [expr {$megaimage(height) - 5}]
set megaimage(incr) -5
} elseif {$megaimage(y) <= 0} {
set megaimage(y) 0
set megaimage(incr) 5
}
after 1000 [list Megaimage_blue]
}
proc Megaimage_Url dir {
global megaimage
set png [pngext2:decode file [file join $megaimage(dir) Duck.png]]
set megaimage(baseobj) [create.megaimageobj $png]
set megaimage(y) 0
set megaimage(incr) 5
foreach {megaimage(width) megaimage(height)} [$megaimage(baseobj) getsize] break
Direct_Url $dir Megaimage
Megaimage_blue
}
set Megaimage/data image/png
proc Megaimage/data {{time 2} args} {
global megaimage
Httpd_NoCache [Httpd_CurrentSocket]
if {[string is integer -strict $time] && $time > 0} {
Httpd_Refresh [Httpd_CurrentSocket] $time /megaimage/data
}
pngext2:encode [$megaimage(baseobj) getdata]
}
proc Megaimage/ args {
Httpd_NoCache [Httpd_CurrentSocket]
return {<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd
">
<html>
<head>
<title>Megaimage Power</title>
</head>
<body>
This is a duck from Wikimedia.org:<br>
<img src="/megaimage/data">
</body>
</html>
}
}
proc Megaimage args {
eval Megaimage/ $args
}Category Tclhttpd

