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