summaryrefslogtreecommitdiffstats
path: root/virtual-programs
diff options
context:
space:
mode:
authorCristobal Sciutto <cristobal.sciutto@gmail.com>2023-10-27 22:00:12 +0000
committerCristobal Sciutto <cristobal.sciutto@gmail.com>2023-10-27 22:02:43 +0000
commit4ab1d8922b54fe2945dcdb6b3272c52c71f28957 (patch)
tree73b5fbe23c34658f8e5741b67483911e41582cc6 /virtual-programs
parentneighbor callback (diff)
downloadfolk-4ab1d8922b54fe2945dcdb6b3272c52c71f28957.tar.gz
folk-4ab1d8922b54fe2945dcdb6b3272c52c71f28957.zip
scale as param
Diffstat (limited to 'virtual-programs')
-rw-r--r--virtual-programs/display/image.folk8
-rw-r--r--virtual-programs/images.folk8
2 files changed, 10 insertions, 6 deletions
diff --git a/virtual-programs/display/image.folk b/virtual-programs/display/image.folk
index 23246d45..55a283e0 100644
--- a/virtual-programs/display/image.folk
+++ b/virtual-programs/display/image.folk
@@ -5,10 +5,10 @@ On process "display" {
dict set ::pipelines "image" [Gpu::pipeline {sampler2D image vec2 imageSize
vec2 pos float radians float scale
fn rotate} {
- vec2 a = pos + rotate(-imageSize/2, -radians);
- vec2 b = pos + rotate(vec2(imageSize.x, -imageSize.y)/2, -radians);
- vec2 c = pos + rotate(imageSize/2, -radians);
- vec2 d = pos + rotate(vec2(-imageSize.x, imageSize.y)/2, -radians);
+ vec2 a = scale * (pos + rotate(-imageSize/2, -radians));
+ vec2 b = scale * (pos + rotate(vec2(imageSize.x, -imageSize.y)/2, -radians));
+ vec2 c = scale * (pos + rotate(imageSize/2, -radians));
+ vec2 d = scale * (pos + rotate(vec2(-imageSize.x, imageSize.y)/2, -radians));
vec2 vertices[4] = vec2[4](a, b, d, c);
return vertices[gl_VertexIndex];
} {fn invBilinear fn rotate} {
diff --git a/virtual-programs/images.folk b/virtual-programs/images.folk
index d8bcaf55..1be51424 100644
--- a/virtual-programs/images.folk
+++ b/virtual-programs/images.folk
@@ -343,7 +343,7 @@ When /someone/ wishes /p/ displays camera slice /slice/ & /p/ has region /r/ {
Wish to draw an image with center $center image $slice radians 0 scale 1
}
-When /someone/ wishes /p/ displays image /im/ {
+When /someone/ wishes /p/ displays image /im/ with scale /s/ {
set im [image load $im]
When $p has region /r/ {
# Compute a scale for im that will fit in the region width/height
@@ -354,10 +354,14 @@ When /someone/ wishes /p/ displays image /im/ {
# set scale [expr {min($width / [image width $im],
# $height / [image height $im])}]
# Wish $p is labelled $im
- Wish to draw an image with center $center image $im radians [region angle $r]
+ Wish to draw an image with center $center image $im radians [region angle $r] scale $s
}
# On unmatch {
# # HACK: Leaves time for the display to finish trying to display this.
# after 5000 [list image freeJpeg $im]
# }
}
+
+When /someone/ wishes /p/ displays image /im/ {
+ Wish $p displays image $im with scale 1
+}