Revision: 14503
          http://sourceforge.net/p/skim-app/code/14503
Author:   hofman
Date:     2024-10-02 09:30:50 +0000 (Wed, 02 Oct 2024)
Log Message:
-----------
Remove core graphics transition support. It has not been working for a very 
long time.

Modified Paths:
--------------
    trunk/SKTransitionController.h
    trunk/SKTransitionController.m
    trunk/de.lproj/Localizable.strings
    trunk/en.lproj/Localizable.strings
    trunk/es.lproj/Localizable.strings
    trunk/fr.lproj/Localizable.strings
    trunk/it.lproj/Localizable.strings
    trunk/ja.lproj/Localizable.strings
    trunk/nl.lproj/Localizable.strings
    trunk/pl.lproj/Localizable.strings
    trunk/ru.lproj/Localizable.strings
    trunk/zh_CN.lproj/Localizable.strings
    trunk/zh_TW.lproj/Localizable.strings

Modified: trunk/SKTransitionController.h
===================================================================
--- trunk/SKTransitionController.h      2024-10-01 16:04:27 UTC (rev 14502)
+++ trunk/SKTransitionController.h      2024-10-02 09:30:50 UTC (rev 14503)
@@ -41,11 +41,10 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@protocol SKTransitionView;
+@class SKTransitionView;
 
 @interface SKTransitionController : NSObject {
-    NSView <SKTransitionView> *transitionView;
-    NSWindow *window;
+    SKTransitionView *transitionView;
     __weak NSView *view;
     BOOL animating;
     BOOL shouldScale;

Modified: trunk/SKTransitionController.m
===================================================================
--- trunk/SKTransitionController.m      2024-10-01 16:04:27 UTC (rev 14502)
+++ trunk/SKTransitionController.m      2024-10-02 09:30:50 UTC (rev 14503)
@@ -54,81 +54,7 @@
 
 #define TRANSITIONS_PLUGIN @"SkimTransitions.plugin"
 
-#define SKEnableCoreGraphicsTransitionsKey @"SKEnableCoreGraphicsTransitions"
-
-#pragma mark Private Core Graphics types and functions
-
-typedef int CGSConnection;
-typedef int CGSWindow;
-
-typedef enum _CGSTransitionType {
-    CGSNone,
-    CGSFade,
-    CGSZoom,
-    CGSReveal,
-    CGSSlide,
-    CGSWarpFade,
-    CGSSwap,
-    CGSCube,
-    CGSWarpSwitch,
-    CGSFlip
-} CGSTransitionType;
-
-typedef enum _CGSTransitionOption {
-    CGSDown,
-    CGSLeft,
-    CGSRight,
-    CGSInRight,
-    CGSBottomLeft = 5,
-    CGSBottomRight,
-    CGSDownTopRight,
-    CGSUp,
-    CGSTopLeft,
-    CGSTopRight,
-    CGSUpBottomRight,
-    CGSInBottom,
-    CGSLeftBottomRight,
-    CGSRightBottomLeft,
-    CGSInBottomRight,
-    CGSInOut
-} CGSTransitionOption;
-
-typedef struct _CGSTransitionSpec {
-    uint32_t unknown1;
-    CGSTransitionType type;
-    CGSTransitionOption option;
-    CGSWindow wid; // Can be 0 for full-screen
-    float *backColour; // Null for black otherwise pointer to 3 CGFloat array 
with RGB value
-} CGSTransitionSpec;
-
-static CGSConnection (*_CGSDefaultConnection_func)(void) = NULL;
-static OSStatus (*CGSNewTransition_func)(const CGSConnection cid, const 
CGSTransitionSpec* spec, int *pTransitionHandle) = NULL;
-static OSStatus (*CGSInvokeTransition_func)(const CGSConnection cid, int 
transitionHandle, float duration);
-static OSStatus (*CGSReleaseTransition_func)(const CGSConnection cid, int 
transitionHandle);
-
-#define LOAD_FUNCTION(name, bundle) ((name ## _func = (typeof(name ## 
_func))CFBundleGetFunctionPointerForName(bundle, CFSTR(#name))) != NULL)
-
-#pragma mark -
-
-@protocol SKTransitionView <NSObject>
-@property (nonatomic, strong) CIImage *image;
-@property (nonatomic) CGRect extent;
-@property (nonatomic, strong) CIFilter *filter;
-@property (nonatomic) CGFloat progress;
-@end
-
-#pragma mark -
-
-@interface SKTransitionView : NSView <SKTransitionView> {
-    CIImage *image;
-    CGRect extent;
-    CIFilter *filter;
-}
-@end
-
-#pragma mark -
-
-@interface SKMetalTransitionView : NSView <SKTransitionView, MTKViewDelegate> {
+@interface SKTransitionView : NSView <MTKViewDelegate> {
     MTKView *metalView;
     CIImage *image;
     CGRect extent;
@@ -136,26 +62,14 @@
     id<MTLCommandQueue> commandQueue;
     CIContext *context;
 }
+@property (nonatomic, strong) CIImage *image;
+@property (nonatomic) CGRect extent;
+@property (nonatomic, strong) CIFilter *filter;
+@property (nonatomic) CGFloat progress;
 @end
 
 #pragma mark -
 
-// Core Graphics transitions
-// this corresponds to the CGSTransitionType enum
-enum {
-    SKTransitionFade = 1,
-    SKTransitionZoom,
-    SKTransitionReveal,
-    SKTransitionSlide,
-    SKTransitionWarpFade,
-    SKTransitionSwap,
-    SKTransitionCube,
-    SKTransitionWarpSwitch,
-    SKTransitionFlip
-};
-
-static SKTransitionStyle SKCoreImageTransition = 1;
-
 @implementation SKTransitionController
 
 @synthesize view, transition, pageTransitions, shouldScale;
@@ -190,16 +104,6 @@
                      @"SKPTStripsTransitionFilter", @"SKTStripsTransition",
                      @"SKPTUncoverTransitionFilter", @"SKTRevealTransition",
                      nil];
-    if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKEnableCoreGraphicsTransitionsKey]) {
-        CFBundleRef bundle = 
CFBundleGetBundleWithIdentifier(CFSTR("com.apple.CoreGraphics"));
-        if (bundle &&
-            LOAD_FUNCTION(_CGSDefaultConnection, bundle) &&
-            LOAD_FUNCTION(CGSNewTransition, bundle) &&
-            LOAD_FUNCTION(CGSInvokeTransition, bundle) &&
-            LOAD_FUNCTION(CGSReleaseTransition, bundle)) {
-            SKCoreImageTransition = SKTransitionFlip + 1;
-        }
-    }
 }
 
 + (NSArray *)transitionNames {
@@ -208,18 +112,6 @@
     if (transitionNames == nil) {
         NSMutableArray *names = [NSMutableArray arrayWithObjects:
             @"", nil];
-        if (SKCoreImageTransition > 1) {
-            [names addObjectsFromArray:@[
-               @"CoreGraphics SKTransitionFade",
-               @"CoreGraphics SKTransitionZoom",
-               @"CoreGraphics SKTransitionReveal",
-               @"CoreGraphics SKTransitionSlide",
-               @"CoreGraphics SKTransitionWarpFade",
-               @"CoreGraphics SKTransitionSwap",
-               @"CoreGraphics SKTransitionCube",
-               @"CoreGraphics SKTransitionWarpSwitch",
-               @"CoreGraphics SKTransitionWarpFlip"]];
-        }
         // get our transitions
         NSURL *transitionsURL = [[[NSBundle mainBundle] builtInPlugInsURL] 
URLByAppendingPathComponent:TRANSITIONS_PLUGIN isDirectory:YES];
         [CIPlugIn loadPlugIn:transitionsURL allowExecutableCode:YES];
@@ -250,25 +142,10 @@
 }
 
 + (NSString *)localizedNameForStyle:(SKTransitionStyle)style {
-    if (style == SKNoTransition) {
+    if (style == SKNoTransition)
         return NSLocalizedString(@"No Transition", @"Transition name");
-    } else if (style >= SKCoreImageTransition) {
+    else
         return [CIFilter localizedNameForFilterName:[self nameForStyle:style]];
-    } else {
-        static NSArray *localizedCoreGraphicsNames = nil;
-        if (localizedCoreGraphicsNames == nil)
-            localizedCoreGraphicsNames = [[NSArray alloc] initWithObjects:@"",
-                  NSLocalizedString(@"Fade", @"Transition name"),
-                  NSLocalizedString(@"Zoom", @"Transition name"),
-                  NSLocalizedString(@"Reveal", @"Transition name"),
-                  NSLocalizedString(@"Slide", @"Transition name"),
-                  NSLocalizedString(@"Warp Fade", @"Transition name"),
-                  NSLocalizedString(@"Swap", @"Transition name"),
-                  NSLocalizedString(@"Cube", @"Transition name"),
-                  NSLocalizedString(@"Warp Switch", @"Transition name"),
-                  NSLocalizedString(@"Flip", @"Transition name"), nil];
-        return [[localizedCoreGraphicsNames objectAtIndex:style] 
stringByAppendingString:@"*"];
-    }
     return @"";
 }
 
@@ -373,7 +250,7 @@
 
 - (void)showTransitionViewForRect:(NSRect)rect image:(CIImage *)image 
extent:(CGRect)extent {
     if (transitionView == nil) {
-        transitionView = [[SKMetalTransitionView alloc] init];
+        transitionView = [[SKTransitionView alloc] init];
         [transitionView setAutoresizingMask:NSViewWidthSizable | 
NSViewHeightSizable];
         CAAnimation *animation = [CABasicAnimation animation];
         [animation setTimingFunction:[CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
@@ -394,34 +271,6 @@
     [transitionView setImage:nil];
 }
 
-- (void)showTransitionWindowForRect:(NSRect)rect image:(CIImage *)image 
extent:(CGRect)extent {
-    SKTransitionView *tView = (SKTransitionView *)[window contentView];
-    if (window == nil) {
-        tView = [[SKTransitionView alloc] init];
-        window = [[NSWindow alloc] initWithContentRect:NSZeroRect 
styleMask:NSWindowStyleMaskBorderless backing:NSBackingStoreBuffered defer:NO];
-        [window setReleasedWhenClosed:NO];
-        [window setIgnoresMouseEvents:YES];
-        [window setBackgroundColor:[NSColor blackColor]];
-        [window setAnimationBehavior:NSWindowAnimationBehaviorNone];
-        [window setContentView:tView];
-    }
-    
-    [tView setImage:image];
-    [tView setExtent:extent];
-    [tView setNeedsDisplay:YES];
-    
-    [window setFrame:[view convertRectToScreen:rect] display:NO];
-    [window orderBack:nil];
-    [[view window] addChildWindow:window ordered:NSWindowAbove];
-}
-
-- (void)removeTransitionWindow {
-    SKTransitionView *tView = (SKTransitionView *)[window contentView];
-    [[window parentWindow] removeChildWindow:window];
-    [window orderOut:nil];
-    [tView setImage:nil];
-}
-
 - (void)animateForRect:(NSRect)rect from:(NSUInteger)fromIndex 
to:(NSUInteger)toIndex change:(NSRect (^)(void))change {
     if (animating) {
         change();
@@ -437,7 +286,7 @@
         
         change();
         
-    } else if ([currentTransition transitionStyle] >= SKCoreImageTransition) {
+    } else {
         
         animating = YES;
         
@@ -474,70 +323,6 @@
                 animating = NO;
             }];
         
-    } else {
-        
-        animating = YES;
-        
-        NSWindow *viewWindow = [view window];
-        CIImage *initialImage = nil;
-        if ([currentTransition shouldRestrict])
-            initialImage = [self currentImageForRect:rect scale:NULL];
-        
-        // We don't want the window to draw the next state before the 
animation is run
-        [viewWindow disableFlushWindow];
-        
-        NSRect toRect = change();
-        
-        CIImage *finalImage = nil;
-        
-        if ([currentTransition shouldRestrict]) {
-            CGFloat imageScale = 1.0;
-            
-            finalImage = [self currentImageForRect:toRect scale:&imageScale];
-            
-            rect = NSIntegralRect(NSIntersectionRect(NSUnionRect(rect, 
toRect), [view bounds]));
-            
-            [self showTransitionWindowForRect:rect image:initialImage 
extent:scaleRect(rect, imageScale)];
-        }
-        
-        // declare our variables
-        int handle = -1;
-        CGSTransitionSpec spec;
-        // specify our specifications
-        spec.unknown1 = 0;
-        spec.type =  [currentTransition transitionStyle];
-        spec.option = toIndex >= fromIndex ? CGSLeft : CGSRight;
-        spec.backColour = NULL;
-        spec.wid = [([currentTransition shouldRestrict] ? window : viewWindow) 
windowNumber];
-        
-        // Let's get a connection
-        CGSConnection cgs = _CGSDefaultConnection_func();
-        
-        // Create a transition
-        CGSNewTransition_func(cgs, &spec, &handle);
-        
-        if ([currentTransition shouldRestrict]) {
-            [(SKTransitionView *)[window contentView] setImage:finalImage];
-            [[window contentView] display];
-        }
-        
-        // Redraw the window
-        [viewWindow display];
-        // Remember we disabled flushing in the previous method, we need to 
balance that.
-        [viewWindow enableFlushWindow];
-        [viewWindow flushWindow];
-        
-        CGSInvokeTransition_func(cgs, handle, [currentTransition duration]);
-        
-        DISPATCH_MAIN_AFTER_SEC([currentTransition duration], ^{
-            CGSReleaseTransition_func(cgs, handle);
-            
-            if ([currentTransition shouldRestrict])
-                [self removeTransitionWindow];
-            
-            animating = NO;
-        });
-        
     }
 }
 
@@ -550,36 +335,6 @@
 @synthesize image, extent, filter;
 @dynamic progress;
 
-- (BOOL)isOpaque { return YES; }
-
-- (CGFloat)progress {
-    NSNumber *number = [filter valueForKey:kCIInputTimeKey];
-    return number ? [number doubleValue] : 0.0;
-}
-
-- (void)setProgress:(CGFloat)newProgress {
-    if (filter) {
-        [filter setValue:[NSNumber numberWithDouble:newProgress] 
forKey:kCIInputTimeKey];
-        [self setImage:[filter outputImage]];
-        [self setNeedsDisplay:YES];
-    }
-}
-
-- (void)drawRect:(NSRect)rect {
-    [[NSColor blackColor] setFill];
-    NSRectFill([self bounds]);
-    [image drawInRect:[self bounds] fromRect:extent 
operation:NSCompositingOperationSourceOver fraction:1.0];
-}
-
-@end
-
-#pragma mark -
-
-@implementation SKMetalTransitionView
-
-@synthesize image, extent, filter;
-@dynamic progress;
-
 - (instancetype)initWithFrame:(NSRect)frameRect {
     self = [super initWithFrame:frameRect];
     if (self && [MTKView class]) {

Modified: trunk/de.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/en.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/es.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/fr.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/it.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/ja.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/nl.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/pl.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/ru.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/zh_CN.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/zh_TW.lproj/Localizable.strings
===================================================================
(Binary files differ)

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