Revision: 14500
          http://sourceforge.net/p/skim-app/code/14500
Author:   hofman
Date:     2024-10-01 15:50:00 +0000 (Tue, 01 Oct 2024)
Log Message:
-----------
Make sure scaled distance attributes for filter satisfy min/max values

Modified Paths:
--------------
    trunk/SKTransitionController.m

Modified: trunk/SKTransitionController.m
===================================================================
--- trunk/SKTransitionController.m      2024-10-01 14:43:06 UTC (rev 14499)
+++ trunk/SKTransitionController.m      2024-10-01 15:50:00 UTC (rev 14500)
@@ -285,7 +285,8 @@
     
     for (NSString *key in [transitionFilter inputKeys]) {
         id value = nil;
-        NSString *type = [[[transitionFilter attributes] objectForKey:key] 
objectForKey:kCIAttributeType];
+        NSDictionary *attrs = [[transitionFilter attributes] objectForKey:key];
+        NSString *type = [attrs objectForKey:kCIAttributeType];
         if ([key isEqualToString:kCIInputExtentKey]) {
             value = [CIVector vectorWithCGRect:extent];
         } else if ([key isEqualToString:kCIInputAngleKey]) {
@@ -313,8 +314,13 @@
                 value = [NSNumber numberWithBool:forward];
         } else if (scaled && [type isEqualToString:kCIAttributeTypeDistance]) {
             if ([transitionFilter valueForKey:key] == nil) continue;
-            CGFloat width = [[transitionFilter valueForKey:key] doubleValue];
-            value = [NSNumber numberWithDouble:scale * width];
+            CGFloat width = scale * [[transitionFilter valueForKey:key] 
doubleValue];
+            NSNumber *limit;
+            if ((limit = [attrs objectForKey:kCIAttributeMin]))
+                width = fmax(width, [limit doubleValue]);
+            if ((limit = [attrs objectForKey:kCIAttributeMax]))
+                width = fmin(width, [limit doubleValue]);
+            value = [NSNumber numberWithDouble:width];
         } else if (scaled && [type isEqualToString:kCIAttributeTypePosition]) {
             if ([transitionFilter valueForKey:key] == nil) continue;
             CGPoint point = [[transitionFilter valueForKey:key] CGPointValue];
@@ -323,7 +329,7 @@
             if ([transitionFilter valueForKey:key] == nil) continue;
             CGRect r = [[transitionFilter valueForKey:key] CGRectValue];
             value = [CIVector vectorWithCGRect:CGRectMake(scale * 
CGRectGetMinX(r), scale * CGRectGetMinY(r), scale * CGRectGetWidth(r), scale * 
CGRectGetHeight(r))];
-        } else if ([[[[transitionFilter attributes] objectForKey:key] 
objectForKey:kCIAttributeClass] isEqualToString:@"CIImage"]) {
+        } else if ([[attrs objectForKey:kCIAttributeClass] 
isEqualToString:@"CIImage"]) {
             // Scale and translate our mask image to match the transition area 
size.
             static CIImage *inputMaskImage = nil;
             if (inputMaskImage == nil)

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



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to