Oolite
Loading...
Searching...
No Matches
OOOpenGLExtensionManager(OOPrivate) Category Reference

Instance Methods

(void) - checkShadersSupported
 
(NSDictionary *) - lookUpPerGPUSettingsWithVersionString:extensionsString:
 
(NSComparisonResult) - CompareGPUSettingsByPriority [implementation]
 

Class Methods

(static BOOL) + CheckRegExps [implementation]
 

Detailed Description

Definition at line 158 of file OOOpenGLExtensionManager.m.

Method Documentation

◆ CheckRegExps

+ (static BOOL) CheckRegExps (NSString *)  string
(id)  regexps 
implementation

Definition at line 739 of file OOOpenGLExtensionManager.m.

740{
741 if (regexps == nil) return YES; // No restriction == match.
742 if ([regexps isKindOfClass:[NSString class]])
743 {
744 return [string oo_matchesRegularExpression:regexps];
745 }
746 if ([regexps isKindOfClass:[NSArray class]])
747 {
748 NSEnumerator *regexpEnum = nil;
749 NSString *regexp = nil;
750
751 for (regexpEnum = [regexps objectEnumerator]; (regexp = [regexpEnum nextObject]); )
752 {
753 if (EXPECT_NOT(![regexp isKindOfClass:[NSString class]]))
754 {
755 // Invalid type -- match fails.
756 return NO;
757 }
758
759 if (![string oo_matchesRegularExpression:regexp]) return NO;
760 }
761 return YES;
762 }
763
764 // Invalid type -- match fails.
765 return NO;
766}
#define EXPECT_NOT(x)
return nil

References EXPECT_NOT, and nil.

◆ CompareGPUSettingsByPriority

- (NSComparisonResult) CompareGPUSettingsByPriority (id)  a
(id)  b
(void *)  context 
implementation

Definition at line 769 of file OOOpenGLExtensionManager.m.

770{
771 NSString *keyA = a;
772 NSString *keyB = b;
773 NSDictionary *configurations = context;
774 NSDictionary *dictA = [configurations oo_dictionaryForKey:keyA];
775 NSDictionary *dictB = [configurations oo_dictionaryForKey:keyB];
776 double precedenceA = [dictA oo_doubleForKey:@"precedence" defaultValue:1];
777 double precedenceB = [dictB oo_doubleForKey:@"precedence" defaultValue:1];
778
779 if (precedenceA > precedenceB) return NSOrderedAscending;
780 if (precedenceA < precedenceB) return NSOrderedDescending;
781
782 return [keyA caseInsensitiveCompare:keyB];
783}

◆ lookUpPerGPUSettingsWithVersionString:extensionsString:

- (NSDictionary *) lookUpPerGPUSettingsWithVersionString: (NSString *)  version
extensionsString: (NSString *)  extensionsStr 

Definition at line 769 of file OOOpenGLExtensionManager.m.

786 :(NSString *)versionStr extensionsString:(NSString *)extensionsStr
787{
788 NSDictionary *configurations = [ResourceManager dictionaryFromFilesNamed:@"gpu-settings.plist"
789 inFolder:@"Config"
790 andMerge:YES];
791
792 NSArray *keys = [[configurations allKeys] sortedArrayUsingFunction:CompareGPUSettingsByPriority context:configurations];
793
794 NSString *key = nil;
795 NSDictionary *config = nil;
796
797 foreach (key, keys)
798 {
799 config = [configurations oo_dictionaryForKey:key];
800 if (EXPECT_NOT(config == nil)) continue;
801
802 NSDictionary *match = [config oo_dictionaryForKey:@"match"];
803 NSString *expr = nil;
804
805 expr = [match objectForKey:@"vendor"];
806 if (!CheckRegExps(vendor, expr)) continue;
807
808 expr = [match oo_stringForKey:@"renderer"];
809 if (!CheckRegExps(renderer, expr)) continue;
810
811 expr = [match oo_stringForKey:@"version"];
812 if (!CheckRegExps(versionStr, expr)) continue;
813
814 expr = [match oo_stringForKey:@"extensions"];
815 if (!CheckRegExps(extensionsStr, expr)) continue;
816
817 OOLog(@"rendering.opengl.gpuSpecific", @"Matched GPU configuration \"%@\".", key);
818 return config;
819 }
820
821 return [NSDictionary dictionary];
822}
#define OOLog(class, format,...)
Definition OOLogging.h:88
static BOOL CheckRegExps(NSString *string, id regexps)
NSDictionary * dictionaryFromFilesNamed:inFolder:andMerge:(NSString *fileName,[inFolder] NSString *folderName,[andMerge] BOOL mergeFiles)

The documentation for this category was generated from the following file: