1 | /* gcc -o brightness -framework Cocoa -framework DisplayServices -F/System/Library/PrivateFrameworks brightness.m */
|
---|
2 |
|
---|
3 | #import <Foundation/Foundation.h>
|
---|
4 |
|
---|
5 | @interface O3Manager : NSObject
|
---|
6 | + (void)initialize;
|
---|
7 | + (id)engineOfClass:(NSString *)cls forDisplayID:(CGDirectDisplayID)fp12;
|
---|
8 | @end
|
---|
9 |
|
---|
10 | @protocol O3EngineWireProtocol
|
---|
11 | @end
|
---|
12 |
|
---|
13 | @protocol BrightnessEngineWireProtocol <O3EngineWireProtocol>
|
---|
14 | - (float)brightness;
|
---|
15 | - (BOOL)setBrightness:(float)fp8;
|
---|
16 | - (void)bumpBrightnessUp;
|
---|
17 | - (void)bumpBrightnessDown;
|
---|
18 | @end
|
---|
19 |
|
---|
20 | const int kMaxDisplays = 16;
|
---|
21 |
|
---|
22 | int main(int argc, const char *argv[])
|
---|
23 | {
|
---|
24 | CGDirectDisplayID display[kMaxDisplays];
|
---|
25 | CGDisplayCount numDisplays;
|
---|
26 | CGDisplayCount i;
|
---|
27 | CGDisplayErr err;
|
---|
28 |
|
---|
29 | [[NSAutoreleasePool alloc] init];
|
---|
30 | [O3Manager initialize];
|
---|
31 |
|
---|
32 | err = CGGetActiveDisplayList(kMaxDisplays, display, &numDisplays);
|
---|
33 | if (err != CGDisplayNoErr) {
|
---|
34 | NSLog(@"Cannot get displays (%d)", err);
|
---|
35 | exit(1);
|
---|
36 | }
|
---|
37 | printf("%d displays found", (int)numDisplays);
|
---|
38 | for ( i = 0; i < numDisplays; ++i ) {
|
---|
39 | CGDirectDisplayID dspy = display[i];
|
---|
40 | CFDictionaryRef originalMode;
|
---|
41 |
|
---|
42 | originalMode = CGDisplayCurrentMode(dspy);
|
---|
43 | if (originalMode == NULL)
|
---|
44 | continue;
|
---|
45 |
|
---|
46 | NSLog(@"Display 0x%x: %@", (unsigned int)dspy, originalMode);
|
---|
47 |
|
---|
48 | if ([[(NSDictionary *)originalMode objectForKey: @"RefreshRate"] intValue] == 0) {
|
---|
49 | id<BrightnessEngineWireProtocol> engine =
|
---|
50 | [O3Manager engineOfClass: @"BrightnessEngine" forDisplayID: dspy];
|
---|
51 | NSLog(@"Engine: %@", engine);
|
---|
52 | NSLog(@"Brightness was %f", [engine brightness]);
|
---|
53 | if (argc == 2) {
|
---|
54 | float newBrightness = [[NSString stringWithCString: argv[1]] floatValue];
|
---|
55 | if (newBrightness < 0. || newBrightness > 1.) {
|
---|
56 | NSLog(@"Brightness should be between 0 and 1");
|
---|
57 | exit(1);
|
---|
58 | }
|
---|
59 | [engine setBrightness: newBrightness];
|
---|
60 | NSLog(@"Brightness is now %f", [engine brightness]);
|
---|
61 | }
|
---|
62 | }
|
---|
63 | }
|
---|
64 | exit(0);
|
---|
65 | }
|
---|