비공개 API CGSAddWindowFilter() 사용과 관련된 이전 트릭은 어떤 이유로 Mavericks에서 더 이상 작동하지 않는 것 같습니다. How does on-screen color inversion work in OS X?에 설명 된 일부 코드를 시도했는데 아래 코드는 다음과 같습니다. window.OSW 10.9 (Mavericks)에서 NSWindow에서 CIFilter를 사용하는 방법은 무엇입니까?
#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 에서처럼 필터를 배경에 적용하는 방법을 알고 있습니까?
MenuBarFilter을 (를) 비공개로 다시 작동 시키려면이 기능이 필요합니다.
2 개월 전 아무 것도 없습니다. 하지만 이번엔 안돼! 그냥 알다시피, 10.8 이하에서는 어떻게 동작합니까? –
어제 여기에 왔는데, Terminal.app을 리버스 엔지니어링하기로 결정했는데 이것을 발견했습니다. 이전 OSX 버전과 호환되는지는 모르겠지만 테스트해볼 것입니다. –
Parallels에서이 효과가 작동하지 않지만 10.8의 Terminal.app에서이 함수를 사용하기 때문에 10.8에서 테스트 할 수 없습니다. –