Revision: 12770
          http://sourceforge.net/p/skim-app/code/12770
Author:   hofman
Date:     2022-02-09 10:33:03 +0000 (Wed, 09 Feb 2022)
Log Message:
-----------
Reuse some kernelsfor multiple transitions with different parameters

Modified Paths:
--------------
    trunk/SkimTransitions/BoxInTransition/SKTBoxInTransition.m
    trunk/SkimTransitions/BoxOutTransition/SKTBoxOutTransition.m
    trunk/SkimTransitions/CoverTransition/SKTCoverTransition.m
    trunk/SkimTransitions/RevealTransition/SKTRevealTransition.m
    trunk/SkimTransitions/SKTTransitions.cikernel
    trunk/SkimTransitions/SplitInTransition/SKTSplitInTransition.m
    trunk/SkimTransitions/SplitOutTransition/SKTSplitOutTransition.m
    trunk/SkimTransitions/StripsTransition/SKTStripsTransition.m

Modified: trunk/SkimTransitions/BoxInTransition/SKTBoxInTransition.m
===================================================================
--- trunk/SkimTransitions/BoxInTransition/SKTBoxInTransition.m  2022-02-08 
23:18:58 UTC (rev 12769)
+++ trunk/SkimTransitions/BoxInTransition/SKTBoxInTransition.m  2022-02-09 
10:33:03 UTC (rev 12770)
@@ -20,7 +20,7 @@
 - (id)init
 {
     if (_SKTBoxInTransitionKernel == nil)
-        _SKTBoxInTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"boxInTransition"];
+        _SKTBoxInTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"boxComposition"];
     return [super init];
 }
 
@@ -65,8 +65,12 @@
     CGFloat y = [inputExtent Y];
     CGFloat width = [inputExtent Z];
     CGFloat height = [inputExtent W];
+    CGFloat cx = [inputCenter X];
+    CGFloat cy = [inputCenter Y];
+    CGFloat t = [inputTime doubleValue];
+    CIVector *rect = [CIVector vectorWithX:t * cx + (1.0 - t) * x Y:t * cy + 
(1.0 - t) * y Z:(1.0 - t) * width W:(1.0 - t) * height];
     NSArray *extent = [NSArray arrayWithObjects:[NSNumber numberWithDouble:x], 
[NSNumber numberWithDouble:y], [NSNumber numberWithDouble:width], [NSNumber 
numberWithDouble:height], nil];
-    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, inputExtent, 
inputCenter, inputTime, nil];
+    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, rect, nil];
     NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:extent, 
kCIApplyOptionDefinition, extent, kCIApplyOptionExtent, nil];
     
     return [self apply:_SKTBoxInTransitionKernel arguments:arguments 
options:options];

Modified: trunk/SkimTransitions/BoxOutTransition/SKTBoxOutTransition.m
===================================================================
--- trunk/SkimTransitions/BoxOutTransition/SKTBoxOutTransition.m        
2022-02-08 23:18:58 UTC (rev 12769)
+++ trunk/SkimTransitions/BoxOutTransition/SKTBoxOutTransition.m        
2022-02-09 10:33:03 UTC (rev 12770)
@@ -20,7 +20,7 @@
 - (id)init
 {
     if (_SKTBoxOutTransitionKernel == nil)
-        _SKTBoxOutTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"boxOutTransition"];
+        _SKTBoxOutTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"boxComposition"];
     return [super init];
 }
 
@@ -65,8 +65,12 @@
     CGFloat y = [inputExtent Y];
     CGFloat width = [inputExtent Z];
     CGFloat height = [inputExtent W];
+    CGFloat cx = [inputCenter X];
+    CGFloat cy = [inputCenter Y];
+    CGFloat t = [inputTime doubleValue];
+    CIVector *rect = [CIVector vectorWithX:(1.0 - t) * cx + t * x Y:(1.0 - t) 
* cy + t * y Z:t * width W:t * height];
     NSArray *extent = [NSArray arrayWithObjects:[NSNumber numberWithDouble:x], 
[NSNumber numberWithDouble:y], [NSNumber numberWithDouble:width], [NSNumber 
numberWithDouble:height], nil];
-    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, inputExtent, 
inputCenter, inputTime, nil];
+    NSArray *arguments = [NSArray arrayWithObjects:trgt, src, rect, nil];
     NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:extent, 
kCIApplyOptionDefinition, extent, kCIApplyOptionExtent, nil];
     
     return [self apply:_SKTBoxOutTransitionKernel arguments:arguments 
options:options];

Modified: trunk/SkimTransitions/CoverTransition/SKTCoverTransition.m
===================================================================
--- trunk/SkimTransitions/CoverTransition/SKTCoverTransition.m  2022-02-08 
23:18:58 UTC (rev 12769)
+++ trunk/SkimTransitions/CoverTransition/SKTCoverTransition.m  2022-02-09 
10:33:03 UTC (rev 12770)
@@ -22,7 +22,7 @@
 - (id)init
 {
     if (_SKTCoverTransitionKernel == nil)
-        _SKTCoverTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"coverTransition"];
+        _SKTCoverTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"coverComposition"];
     return [super init];
 }
 
@@ -80,9 +80,10 @@
     CGFloat c = cos(angle);
     CGFloat s = sin(angle);
     CGFloat d = [inputExtent Z] * (1.0 - t) / fmax(fabs(c), fabs(s));
+    NSNumber *shade = [NSNumber numberWithDouble:1.0 - 0.2 * t];
     CIVector *offset = [CIVector vectorWithX:d * c Y:d * s];
     NSArray *extent = [NSArray arrayWithObjects:[NSNumber 
numberWithDouble:[inputExtent X]], [NSNumber numberWithDouble:[inputExtent Y]], 
[NSNumber numberWithDouble:[inputExtent Z]], [NSNumber 
numberWithDouble:[inputExtent W]], nil];
-    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, inputExtent, 
offset, inputTime, nil];
+    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, inputExtent, 
offset, shade, nil];
     NSDictionary *options  = [NSDictionary 
dictionaryWithObjectsAndKeys:extent, kCIApplyOptionDefinition, extent, 
kCIApplyOptionExtent, offset, kCIApplyOptionUserInfo, nil];
     
     [_SKTCoverTransitionKernel 
setROISelector:@selector(regionOf:destRect:userInfo:)];

Modified: trunk/SkimTransitions/RevealTransition/SKTRevealTransition.m
===================================================================
--- trunk/SkimTransitions/RevealTransition/SKTRevealTransition.m        
2022-02-08 23:18:58 UTC (rev 12769)
+++ trunk/SkimTransitions/RevealTransition/SKTRevealTransition.m        
2022-02-09 10:33:03 UTC (rev 12770)
@@ -22,7 +22,7 @@
 - (id)init
 {
     if (_SKTRevealTransitionKernel == nil)
-        _SKTRevealTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"revealTransition"];
+        _SKTRevealTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"coverComposition"];
     return [super init];
 }
 
@@ -64,8 +64,8 @@
 }
 
 - (CGRect)regionOf:(int)sampler destRect:(CGRect)R userInfo:(CIVector *)offset 
{
-    if (sampler == 0) {
-        R = CGRectOffset(R, [offset X], [offset Y]);
+    if (sampler == 1) {
+        R = CGRectOffset(R, -[offset X], -[offset Y]);
     }
     return R;
 }
@@ -75,14 +75,15 @@
 {
     CISampler *src = [CISampler samplerWithImage:inputImage];
     CISampler *trgt = [CISampler samplerWithImage:inputTargetImage];
-     CGFloat t = [inputTime doubleValue];
+    CGFloat t = [inputTime doubleValue];
     CGFloat angle = [inputAngle doubleValue];
     CGFloat c = cos(angle);
     CGFloat s = sin(angle);
-    CGFloat d = [inputExtent Z] * t / fmax(fabs(c), fabs(s));
+    CGFloat d = -[inputExtent Z] * t / fmax(fabs(c), fabs(s));
+    NSNumber *shade = [NSNumber numberWithDouble:0.8 + 0.2 * t];
     CIVector *offset = [CIVector vectorWithX:d * c Y:d * s];
     NSArray *extent = [NSArray arrayWithObjects:[NSNumber 
numberWithFloat:[inputExtent X]], [NSNumber numberWithFloat:[inputExtent Y]], 
[NSNumber numberWithFloat:[inputExtent Z]], [NSNumber 
numberWithFloat:[inputExtent W]], nil];
-    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, inputExtent, 
offset, inputTime, nil];
+    NSArray *arguments = [NSArray arrayWithObjects:trgt, src, inputExtent, 
offset, shade, nil];
     NSDictionary *options  = [NSDictionary 
dictionaryWithObjectsAndKeys:extent, kCIApplyOptionDefinition, extent, 
kCIApplyOptionExtent, offset, kCIApplyOptionUserInfo, nil];
     
     [_SKTRevealTransitionKernel 
setROISelector:@selector(regionOf:destRect:userInfo:)];

Modified: trunk/SkimTransitions/SKTTransitions.cikernel
===================================================================
--- trunk/SkimTransitions/SKTTransitions.cikernel       2022-02-08 23:18:58 UTC 
(rev 12769)
+++ trunk/SkimTransitions/SKTTransitions.cikernel       2022-02-09 10:33:03 UTC 
(rev 12770)
@@ -9,7 +9,7 @@
     return d1 < width * t ? sample(trgt, samplerCoord(trgt)) : sample(src, 
samplerCoord(src));
 }
 
-kernel vec4 boxInTransition(sampler src, sampler trgt, vec4 extent, vec2 
center, float t)
+kernel vec4 boxComposition(sampler src, sampler trgt, vec4 rect)
 {
     vec2 t1, r1, r2;
     float d1;
@@ -16,8 +16,8 @@
     
     t1 = destCoord();
     
-    r1 = t * center + (1.0 - t) * extent.xy;
-    r2 = t * center + (1.0 - t) * (extent.xy + extent.zw);
+    r1 = rect.xy;
+    r2 = rect.xy + rect.zw;
     
     d1 = step(r1.x, t1.x) * step(t1.x, r2.x) * step(r1.y, t1.y) * step(t1.y, 
r2.y);
     
@@ -24,31 +24,16 @@
     return d1 < 0.5 ? sample(trgt, samplerCoord(trgt)) : sample(src, 
samplerCoord(src));
 }
 
-kernel vec4 boxOutTransition(sampler src, sampler trgt, vec4 extent, vec2 
center, float t)
+kernel vec4 coverComposition(sampler back, sampler front, vec4 extent, vec2 
offset, float shade)
 {
-    vec2 t1, r1, r2;
-    float d1;
-    
-    t1 = destCoord();
-    
-    r1 = (1.0 - t) * center + t * extent.xy;
-    r2 = (1.0 - t) * center + t * (extent.xy + extent.zw);
-    
-    d1 = step(r1.x, t1.x) * step(t1.x, r2.x) * step(r1.y, t1.y) * step(t1.y, 
r2.y);
-    
-    return d1 > 0.5 ? sample(trgt, samplerCoord(trgt)) : sample(src, 
samplerCoord(src));
-}
-
-kernel vec4 coverTransition(sampler src, sampler trgt, vec4 extent, vec2 
offset, float t)
-{
     vec2 t1;
     vec4 p1, p2;
     
     t1 = destCoord() - offset;
-    p1 = sample(src, samplerTransform(src, destCoord()));
-    p2 = sample(trgt, samplerTransform(trgt, t1));
+    p1 = sample(back, samplerTransform(back, destCoord()));
+    p2 = sample(front, samplerTransform(front, t1));
     p2 = t1.x < extent.x ? vec4(0.0) : (t1.x > extent.x + extent.z ? vec4(0.0) 
: (t1.y < extent.y ? vec4(0.0) : (t1.y > extent.y + extent.w ? vec4(0.0) : 
p2)));
-    p1 = mix(vec4(vec3(0.0), p1.a), p1, 1.0 - 0.2 * t);
+    p1.rgb = shade * p1.rgb;
 
     return p2 + (1.0 - p2.a) * p1;
 }
@@ -108,20 +93,6 @@
     return mix(p1, p2, x);
 }
 
-kernel vec4 revealTransition(sampler src, sampler trgt, vec4 extent, vec2 
offset, float t)
-{
-    vec2 t1;
-    vec4 p1, p2;
-    
-    t1 = destCoord() + offset;
-    p1 = sample(src, samplerTransform(src, t1));
-    p2 = sample(trgt, samplerTransform(trgt, destCoord()));
-    p1 = t1.x < extent.x ? vec4(0.0) : (t1.x > extent.x + extent.z ? vec4(0.0) 
: (t1.y < extent.y ? vec4(0.0) : (t1.y > extent.y + extent.w ? vec4(0.0) : 
p1)));
-    p2 = mix(vec4(vec3(0.0), p2.a), p2, 0.8 + 0.2 * t);
-
-    return p1 + (1.0 - p1.a) * p2;
-}
-
 kernel vec4 sinkTransition(sampler src, sampler trgt, vec2 center, float t)
 {
     float pi2 = 6.28318530717958648;
@@ -171,36 +142,8 @@
     return p1 + (1.0 - p1.a) * p2;
 }
 
-kernel vec4 splitInTransition(sampler src, sampler trgt, vec4 extent, vec2 
center, float t)
+kernel vec4 stripsTransition(sampler src, sampler trgt, vec4 extent, float 
width, float t)
 {
-    float x, l, r, d1;
-    
-    x = destCoord().x;
-    
-    l = t * center.x + (1.0 - t) * extent.x;
-    r = t * center.x + (1.0 - t) * (extent.x + extent.z);
-    
-    d1 = step(l, x) * step(x, r);
-    
-    return d1 < 0.5 ? sample(trgt, samplerCoord(trgt)) : sample(src, 
samplerCoord(src));
-}
-
-kernel vec4 splitOutTransition(sampler src, sampler trgt, vec4 extent, vec2 
center, float t)
-{
-    float x, l, r, d1;
-    
-    x = destCoord().x;
-    
-    l = (1.0 - t) * center.x + t * extent.x;
-    r = (1.0 - t) * center.x + t * (extent.x + extent.z);
-    
-    d1 = step(l, x) * step(x, r);
-    
-    return d1 > 0.5 ? sample(trgt, samplerCoord(trgt)) : sample(src, 
samplerCoord(src));
-}
-
-kernel vec4 splitTransition(sampler src, sampler trgt, vec4 extent, float 
width, float t)
-{
     vec2 t1;
     float d1;
     vec4 p1, p2;

Modified: trunk/SkimTransitions/SplitInTransition/SKTSplitInTransition.m
===================================================================
--- trunk/SkimTransitions/SplitInTransition/SKTSplitInTransition.m      
2022-02-08 23:18:58 UTC (rev 12769)
+++ trunk/SkimTransitions/SplitInTransition/SKTSplitInTransition.m      
2022-02-09 10:33:03 UTC (rev 12770)
@@ -20,7 +20,7 @@
 - (id)init
 {
     if (_SKTSplitInTransitionKernel == nil)
-        _SKTSplitInTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"splitInTransition"];
+        _SKTSplitInTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"boxComposition"];
     return [super init];
 }
 
@@ -65,8 +65,11 @@
     CGFloat y = [inputExtent Y];
     CGFloat width = [inputExtent Z];
     CGFloat height = [inputExtent W];
-    NSArray *extent = [NSArray arrayWithObjects:[NSNumber numberWithDouble:x], 
[NSNumber numberWithDouble:y], [NSNumber numberWithDouble:width], [NSNumber 
numberWithDouble:height], nil];
-    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, inputExtent, 
inputCenter, inputTime, nil];
+    CGFloat cx = [inputCenter X];
+    CGFloat t = [inputTime doubleValue];
+    CIVector *rect = [CIVector vectorWithX:t * cx + (1.0 - t) * x Y:y Z:(1.0 - 
t) * width W:height];
+   NSArray *extent = [NSArray arrayWithObjects:[NSNumber numberWithDouble:x], 
[NSNumber numberWithDouble:y], [NSNumber numberWithDouble:width], [NSNumber 
numberWithDouble:height], nil];
+    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, rect, nil];
     NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:extent, 
kCIApplyOptionDefinition, extent, kCIApplyOptionExtent, nil];
     
     return [self apply:_SKTSplitInTransitionKernel arguments:arguments 
options:options];

Modified: trunk/SkimTransitions/SplitOutTransition/SKTSplitOutTransition.m
===================================================================
--- trunk/SkimTransitions/SplitOutTransition/SKTSplitOutTransition.m    
2022-02-08 23:18:58 UTC (rev 12769)
+++ trunk/SkimTransitions/SplitOutTransition/SKTSplitOutTransition.m    
2022-02-09 10:33:03 UTC (rev 12770)
@@ -20,7 +20,7 @@
 - (id)init
 {
     if (_SKTSplitOutTransitionKernel == nil)
-        _SKTSplitOutTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"splitOutTransition"];
+        _SKTSplitOutTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"boxComposition"];
     return [super init];
 }
 
@@ -65,8 +65,11 @@
     CGFloat y = [inputExtent Y];
     CGFloat width = [inputExtent Z];
     CGFloat height = [inputExtent W];
+    CGFloat cx = [inputCenter X];
+    CGFloat t = [inputTime doubleValue];
+    CIVector *rect = [CIVector vectorWithX:(1.0 - t) * cx + t * x Y:y Z:t * 
width W:height];
     NSArray *extent = [NSArray arrayWithObjects:[NSNumber numberWithDouble:x], 
[NSNumber numberWithDouble:y], [NSNumber numberWithDouble:width], [NSNumber 
numberWithDouble:height], nil];
-    NSArray *arguments = [NSArray arrayWithObjects:src, trgt, inputExtent, 
inputCenter, inputTime, nil];
+    NSArray *arguments = [NSArray arrayWithObjects:trgt, src, rect, nil];
     NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:extent, 
kCIApplyOptionDefinition, extent, kCIApplyOptionExtent, nil];
     
     return [self apply:_SKTSplitOutTransitionKernel arguments:arguments 
options:options];

Modified: trunk/SkimTransitions/StripsTransition/SKTStripsTransition.m
===================================================================
--- trunk/SkimTransitions/StripsTransition/SKTStripsTransition.m        
2022-02-08 23:18:58 UTC (rev 12769)
+++ trunk/SkimTransitions/StripsTransition/SKTStripsTransition.m        
2022-02-09 10:33:03 UTC (rev 12770)
@@ -20,7 +20,7 @@
 - (id)init
 {
     if (_SKTStripsTransitionKernel == nil)
-        _SKTStripsTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"splitTransition"];
+        _SKTStripsTransitionKernel = [SKTPlugInLoader 
kernelWithName:@"stripsTransition"];
     return [super init];
 }
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to