1/*
2 * Copyright (c) 2008 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23/*
24cc -o /tmp/iogt graphics.subproj/IOGraphicsTest.c -framework CoreGraphics -Wall -undefined warning
25*/
26
27#include <CoreGraphics/CoreGraphics.h>
28#include <IOKit/graphics/IOGraphicsLib.h>
29#include <stdlib.h>
30
31int main( int argc, char * argv[] )
32{
33    io_service_t        service;
34    CFDictionaryRef     dict;
35    CFMutableArrayRef   array;
36    CGSError            err;
37    int                 i, j;
38
39    CGSInitialize();
40
41    array = CFArrayCreateMutable( kCFAllocatorDefault, 0,
42                                    &kCFTypeArrayCallBacks);
43
44    for( i = 0; i < CGSGetNumberOfDisplays(); i++ ) {
45        err = CGSServiceForDisplayNumber(i, &service);
46        if( err != kCGSErrorSuccess)
47            continue;
48
49        dict = IOCreateDisplayInfoDictionary( service, kNilOptions );
50        if( dict) {
51            printf("Display %d\n", i);
52            CFShow(dict);
53            CFRelease(dict);
54        }
55
56        dict = IOCreateDisplayInfoDictionary( service,
57                                            kIODisplayMatchingInfo );
58        if( dict) {
59            printf("Display %d, kIODisplayMatchingInfo\n", i);
60            CFShow(dict);
61
62            CFArrayAppendValue(array, dict);
63            CFRelease(dict);
64                        CFIndex count = CFArrayGetCount(array);
65            for( j = 0; j < count; j++) {
66                printf("%d matches(%ld)\n", j,
67                    IODisplayMatchDictionaries( dict,
68                        CFArrayGetValueAtIndex(array, j), kNilOptions));
69            }
70        }
71    }
72
73    exit(0);
74    return(0);
75}
76
77