diff options
| author | Cristobal Sciutto <cristobal.sciutto@gmail.com> | 2023-06-02 21:17:01 +0000 |
|---|---|---|
| committer | Cristobal Sciutto <cristobal.sciutto@gmail.com> | 2023-06-02 21:17:01 +0000 |
| commit | 9c9fa9e8a12a2b3da0d7892806ca1a3337f69968 (patch) | |
| tree | d15022f12baf620ca775143673c3b22ac5c8b102 /virtual-programs | |
| parent | match style guide (diff) | |
| download | folk-9c9fa9e8a12a2b3da0d7892806ca1a3337f69968.tar.gz folk-9c9fa9e8a12a2b3da0d7892806ca1a3337f69968.zip | |
better API + display API
Diffstat (limited to 'virtual-programs')
| -rw-r--r-- | virtual-programs/images.folk | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/virtual-programs/images.folk b/virtual-programs/images.folk index 33a10c6a..39eec64d 100644 --- a/virtual-programs/images.folk +++ b/virtual-programs/images.folk @@ -1,7 +1,13 @@ -# Images -Wish $this has filename "images.folk" +# Example program, i.e the public API +# +# When $this has camera slice /slice/ { +# Wish $this is labelled "hello" +# Wish $this displays slice $slice +# } + +# Generic image class for sub-image manipulations namespace eval ::image { proc width {im} { dict get $im width } proc height {im} { dict get $im height } @@ -22,7 +28,7 @@ namespace eval ::image { namespace ensemble create } - +# Callback: extract out a camera slice When /someone/ wishes /p/ has camera slice & \ the camera frame is /f/ & \ /p/ has region /r/ { @@ -40,20 +46,21 @@ When /someone/ wishes /p/ has camera slice & \ # Extract and claim the image for the page set subimage [image subimage $f $x $y $w $h] - Claim $p has camera slice $subimage for region $r + Claim $p has camera slice $subimage +} + +# Auto-trigger callback for `when has camera slice` statements +When when /p/ has camera slice /slice/ /lambda/ with environment /e/ { + Wish $p has camera slice } -Wish $this has camera slice -When $this has camera slice /im/ for region /r/ { +# Display a camera slice +When /someone/ wishes /p/ displays slice /slice/ & /p/ has region /r/ { set origin [lindex $r 0 0] lassign [regionToBbox $r] minX minY maxX maxY set regionWidth [expr {$maxX - $minX}] set scale [expr {$Display::WIDTH / $regionWidth}] - Wish display runs [list Display::image {*}$origin $im $scale] + Wish display runs [list Display::image {*}$origin $slice $scale] } - -Wish $this is outlined thick palegoldenrod - - |
