- int ce;
- NSMutableArray *finalArray = [[[NSMutableArray alloc] initWithCapacity:5] autorelease];
-
- NSArray *effectKeys = [NSArray arrayWithObjects:
- @"Name",
- @"Class",
- @"Positions",
- nil];
-
- NSArray *effectNames = [NSArray arrayWithObjects:
- @"Cut",
- @"Dissolve",
- @"Slide Horizontally",
- @"Slide Vertically",
- @"Pivot",
- nil];
-
- NSArray *classNames = [NSArray arrayWithObjects:
- @"ITCutWindowEffect",
- @"ITDissolveWindowEffect",
- @"ITSlideHorizontallyWindowEffect",
- @"ITSlideVerticallyWindowEffect",
- @"ITPivotWindowEffect",
- nil];
-
- NSArray *positionKeys = [NSArray arrayWithObjects:
- @"TopLeft",
- @"TopCenter",
- @"TopRight",
- @"MiddleLeft",
- @"MiddleCenter",
- @"MiddleRight",
- @"BottomLeft",
- @"BottomCenter",
- @"BottomRight",
- nil];
-
- NSArray *cutPositionValues = [NSArray arrayWithObjects:
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- nil];
-
- NSArray *dissolvePositionValues = [NSArray arrayWithObjects:
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- nil];
-
- NSArray *slideVerticallyPositionValues = [NSArray arrayWithObjects:
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- nil];
-
- NSArray *slideHorizontallyPositionValues = [NSArray arrayWithObjects:
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:YES],
- nil];
-
- NSArray *pivotPositionValues = [NSArray arrayWithObjects:
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:YES],
- [NSNumber numberWithBool:NO],
- [NSNumber numberWithBool:YES],
- nil];
-
- NSArray *positionDicts = [NSArray arrayWithObjects:
- [NSDictionary dictionaryWithObjects:cutPositionValues
- forKeys:positionKeys],
- [NSDictionary dictionaryWithObjects:dissolvePositionValues
- forKeys:positionKeys],
- [NSDictionary dictionaryWithObjects:slideVerticallyPositionValues
- forKeys:positionKeys],
- [NSDictionary dictionaryWithObjects:slideHorizontallyPositionValues
- forKeys:positionKeys],
- [NSDictionary dictionaryWithObjects:pivotPositionValues
- forKeys:positionKeys],
- nil];
-
- for ( ce = 0 ; ce < [effectNames count] ; ce++ ) {
-
- NSArray *entryValues = [NSArray arrayWithObjects:
- [effectNames objectAtIndex:ce],
- [classNames objectAtIndex:ce],
- [positionDicts objectAtIndex:ce],
- nil];
-
- NSDictionary *entryDict = [NSDictionary dictionaryWithObjects:entryValues
- forKeys:effectKeys];
- [finalArray addObject:entryDict];
- }
-
- return finalArray;
+ NSMutableArray *classes = [[NSArray arrayWithObjects:
+ NSClassFromString(@"ITCutWindowEffect"),
+ NSClassFromString(@"ITDissolveWindowEffect"),
+ NSClassFromString(@"ITSlideHorizontallyWindowEffect"),
+ NSClassFromString(@"ITSlideVerticallyWindowEffect"),
+ NSClassFromString(@"ITPivotWindowEffect"),
+ NSClassFromString(@"ITZoomWindowEffect"),
+ NSClassFromString(@"ITSpinWindowEffect"),
+ NSClassFromString(@"ITSpinAndZoomWindowEffect"),
+ nil] mutableCopy];
+
+ long version;
+ if ((Gestalt(gestaltSystemVersion, &version) == noErr) && (version >= 4160) && (version < 4166)) {
+ NSOpenGLView *view = [[NSOpenGLView alloc] initWithFrame:NSMakeRect(0, 0, 1, 1) pixelFormat:[NSOpenGLView defaultPixelFormat]];
+ if ([view openGLContext]) {
+ NSString *string = [NSString stringWithCString:glGetString(GL_EXTENSIONS)];
+ NSRange result = [string rangeOfString:@"ARB_fragment_program"];
+ if (result.location != NSNotFound) {
+ [classes addObject:NSClassFromString(@"ITCoreImageWindowEffect")];
+ }
+ }
+ [view release];
+ }
+
+ return [classes autorelease];