Özel API CGSAddWindowFilter() kullanarak ilgili eski hile artık bir nedenden dolayı Mavericks çalıştığı görünüyor. How does on-screen color inversion work in OS X?'da açıklanan bazı kodları denedim ve aşağıdaki kod aşağıdaki window ile sonuçlanır.OSX 10.9'da (Mavericks) NSWindow üzerinde CIFilter nasıl kullanılır?
#import "AppDelegate.h"
//Declarations to avoid compiler warnings (because of private APIs):
typedef void * CGSConnection;
typedef void * CGSWindowID;
extern OSStatus CGSNewConnection(const void **attributes, CGSConnection * id);
typedef void *CGSWindowFilterRef;
extern CGError CGSNewCIFilterByName(CGSConnection cid, CFStringRef filterName, CGSWindowFilterRef *outFilter);
extern CGError CGSAddWindowFilter(CGSConnection cid, CGSWindowID wid, CGSWindowFilterRef filter, int flags);
extern CGError CGSSetCIFilterValuesFromDictionary(CGSConnection cid, CGSWindowFilterRef filter, CFDictionaryRef filterValues);
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[self.window setOpaque:NO];
[self.window setAlphaValue:1.0];
[self.window setBackgroundColor:[NSColor colorWithCalibratedWhite:0.0 alpha:0.1]];
self.window.level = NSDockWindowLevel;
CGSConnection thisConnection;
CGSWindowFilterRef compositingFilter;
int compositingType = 1; // under the window
/* Make a new connection to CoreGraphics */
CGSNewConnection(NULL, &thisConnection);
/* Create a CoreImage filter and set it up */
CGSNewCIFilterByName(thisConnection, CFSTR("CIColorInvert"), &compositingFilter);
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:3.0] forKey:@"inputRadius"];
CGSSetCIFilterValuesFromDictionary(thisConnection, compositingFilter, (__bridge CFDictionaryRef)options);
/* Now apply the filter to the window */
CGSAddWindowFilter(thisConnection, (CGSWindowID)[self.window windowNumber], compositingFilter, compositingType);
}
@end
OSX 10.8'deki gibi arka plana filtre uygulamak için bir hile bilen var mı?
Mavericks'de MenuBarFilter çalışmasını yeniden yapabilmek için buna ihtiyacım var.
Buraya 2 ay önce burada hiçbir sey için yok. Ama bu sefer değil ! Sadece bilmek, bu nasıl 10.8 ve altında nasıl davranır? –
Dün hiçbir şey için gelmedim, daha sonra Terminal.app'ı tersine çevirmeye karar verdim ve bunu buldum :) Eski OSX sürümleriyle uyumlu olup olmadığını bilmiyorum, ancak bunu test edip size bildireceğim. –
Bunu 10.8'de test edemiyorum çünkü Parallels'de bu efektler çalışmaz, ancak 10.8'deki Terminal.app bu işlevi kullanır, bu yüzden çalışır. –