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