1
2from PyObjCTools.TestSupport import *
3from Quartz.CoreGraphics import *
4from Quartz import CoreGraphics
5
6class TestCGDirectDisplay (TestCase):
7
8    def testConstants(self):
9        self.failUnlessEqual(kCGNullDirectDisplay, 0)
10
11        self.failUnlessEqual(kCGDisplayWidth, "Width")
12        self.failUnlessEqual(kCGDisplayHeight, "Height")
13        self.failUnlessEqual(kCGDisplayMode, "Mode")
14        self.failUnlessEqual(kCGDisplayBitsPerPixel, "BitsPerPixel")
15        self.failUnlessEqual(kCGDisplayBitsPerSample, "BitsPerSample")
16        self.failUnlessEqual(kCGDisplaySamplesPerPixel, "SamplesPerPixel")
17        self.failUnlessEqual(kCGDisplayRefreshRate, "RefreshRate")
18        self.failUnlessEqual(kCGDisplayModeUsableForDesktopGUI, "UsableForDesktopGUI")
19        self.failUnlessEqual(kCGDisplayIOFlags, "IOFlags")
20        self.failUnlessEqual(kCGDisplayBytesPerRow, "kCGDisplayBytesPerRow")
21        self.failUnlessEqual(kCGIODisplayModeID, "IODisplayModeID")
22
23        self.failUnlessEqual(kCGDisplayModeIsSafeForHardware, "kCGDisplayModeIsSafeForHardware")
24        self.failUnlessEqual(kCGDisplayModeIsInterlaced, "kCGDisplayModeIsInterlaced")
25        self.failUnlessEqual(kCGDisplayModeIsStretched, "kCGDisplayModeIsStretched")
26        self.failUnlessEqual(kCGDisplayModeIsTelevisionOutput, "kCGDisplayModeIsTelevisionOutput" )
27
28        self.failUnlessEqual(kCGCaptureNoOptions, 0)
29        self.failUnlessEqual(kCGCaptureNoFill, 1)
30
31
32
33
34        self.failIf(hasattr(CoreGraphics, 'kCGDirectMainDisplay'))
35
36    def testFunctions(self):
37        self.failUnlessIsInstance(CGMainDisplayID(), (int, long))
38
39        self.failUnlessArgIsOut(CGGetDisplaysWithPoint, 2)
40        self.failUnlessArgIsOut(CGGetDisplaysWithPoint, 3)
41        v, ids, cnt = CGGetDisplaysWithPoint((0, 0), 10, None, None)
42        self.failUnlessIsInstance(v, (int, long))
43        self.failUnlessIsInstance(cnt, (int, long))
44        self.failUnless(cnt)
45        self.failUnlessEqual(len(ids), cnt)
46        self.failUnlessIsInstance(ids[0], (int, long))
47
48        self.failUnlessArgIsOut(CGGetDisplaysWithRect, 2)
49        self.failUnlessArgIsOut(CGGetDisplaysWithRect, 3)
50        v, ids, cnt = CGGetDisplaysWithRect(((0, 0), (400, 500)),
51                10, None, None)
52        self.failUnlessIsInstance(v, (int, long))
53        self.failUnlessIsInstance(cnt, (int, long))
54        self.failUnless(cnt)
55        self.failUnlessEqual(len(ids), cnt)
56        self.failUnlessIsInstance(ids[0], (int, long))
57
58
59        self.failUnlessArgIsOut(CGGetDisplaysWithOpenGLDisplayMask, 2)
60        self.failUnlessArgIsOut(CGGetDisplaysWithOpenGLDisplayMask, 3)
61        v, ids, cnt = CGGetDisplaysWithOpenGLDisplayMask(0xff,
62                10, None, None)
63        self.failUnlessIsInstance(v, (int, long))
64        self.failUnlessIsInstance(cnt, (int, long))
65        self.failUnless(cnt)
66        self.failUnlessEqual(len(ids), cnt)
67        self.failUnlessIsInstance(ids[0], (int, long))
68
69        self.failUnlessArgIsOut(CGGetActiveDisplayList, 1)
70        self.failUnlessArgIsOut(CGGetActiveDisplayList, 2)
71        v, ids, cnt = CGGetActiveDisplayList(10, None, None)
72        self.failUnlessIsInstance(v, (int, long))
73        self.failUnlessIsInstance(cnt, (int, long))
74        self.failUnless(cnt)
75        self.failUnlessEqual(len(ids), cnt)
76        self.failUnlessIsInstance(ids[0], (int, long))
77
78        self.failUnlessArgIsOut(CGGetOnlineDisplayList, 1)
79        self.failUnlessArgIsOut(CGGetOnlineDisplayList, 2)
80        v, ids, cnt = CGGetOnlineDisplayList(10, None, None)
81        self.failUnlessIsInstance(v, (int, long))
82        self.failUnlessIsInstance(cnt, (int, long))
83        self.failUnless(cnt)
84        self.failUnlessEqual(len(ids), cnt)
85        self.failUnlessIsInstance(ids[0], (int, long))
86
87        v = CGDisplayIDToOpenGLDisplayMask(CGMainDisplayID())
88        self.failUnlessIsInstance(v, (int, long))
89        self.failIfEqual(v, 0)
90
91        id = CGOpenGLDisplayMaskToDisplayID(v)
92        self.failUnlessIsInstance(id, (int, long))
93        self.failUnlessEqual(id, CGMainDisplayID())
94
95        box = CGDisplayBounds(CGMainDisplayID())
96        self.failUnlessIsInstance(box, CGRect)
97
98        v = CGDisplayPixelsWide(CGMainDisplayID())
99        self.failUnlessIsInstance(v, (int, long))
100        v = CGDisplayPixelsHigh(CGMainDisplayID())
101        self.failUnlessIsInstance(v, (int, long))
102
103        modes = CGDisplayAvailableModes(CGMainDisplayID())
104        self.failUnlessIsInstance(modes, CFArrayRef)
105        self.failUnless(len(modes) > 0)
106        self.failUnlessIsInstance(modes[0], CFDictionaryRef)
107
108        v, exact = CGDisplayBestModeForParameters(CGMainDisplayID(),
109                32, 800, 600, None)
110        self.failUnlessIsInstance(v, CFDictionaryRef)
111        self.failUnlessIsInstance(exact, (int, long))
112
113        v, exact = CGDisplayBestModeForParametersAndRefreshRate(
114                CGMainDisplayID(), 32, 800, 600, 70, None)
115        self.failUnlessIsInstance(v, CFDictionaryRef)
116        self.failUnlessIsInstance(exact, (int, long))
117
118        v, exact = CGDisplayBestModeForParametersAndRefreshRateWithProperty(
119                CGMainDisplayID(), 32, 800, 600, 70,
120                kCGDisplayModeIsSafeForHardware, None)
121        self.failUnlessIsInstance(v, CFDictionaryRef)
122        self.failUnlessIsInstance(exact, (int, long))
123
124        cur = CGDisplayCurrentMode(CGMainDisplayID())
125        self.failUnlessIsInstance(cur, CFDictionaryRef)
126
127        v = CGDisplaySwitchToMode(CGMainDisplayID(), v)
128        self.failUnlessEqual(v, 0)
129        v = CGDisplaySwitchToMode(CGMainDisplayID(), cur)
130        self.failUnlessEqual(v, 0)
131
132        v = CGDisplayBitsPerPixel(CGMainDisplayID())
133        self.failUnlessIsInstance(v, (int, long))
134
135        v = CGDisplayBitsPerSample(CGMainDisplayID())
136        self.failUnlessIsInstance(v, (int, long))
137
138        v = CGDisplaySamplesPerPixel(CGMainDisplayID())
139        self.failUnlessIsInstance(v, (int, long))
140
141        v = CGDisplayBytesPerRow(CGMainDisplayID())
142        self.failUnlessIsInstance(v, (int, long))
143
144        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 1)
145        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 2)
146        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 3)
147        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 4)
148        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 5)
149        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 6)
150        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 7)
151        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 8)
152        self.failUnlessArgIsOut(CGGetDisplayTransferByFormula, 9)
153        v = CGGetDisplayTransferByFormula(CGMainDisplayID(),
154                None, None, None, None, None, None, None, None, None)
155        self.failUnlessIsInstance(v[0], (int, long))
156        for i in range(9):
157            self.failUnlessIsInstance(v[i+1], float)
158
159        v = CGSetDisplayTransferByFormula(CGMainDisplayID(), *v[1:])
160        self.failUnlessEqual(v, 0)
161
162        tablen = CGDisplayGammaTableCapacity(CGMainDisplayID())
163        self.failUnlessIsInstance(tablen, (int, long))
164
165        err, red, green, blue, count = CGGetDisplayTransferByTable(
166                CGMainDisplayID(), tablen, None, None, None, None)
167        self.failUnlessIsInstance(err, (int, long))
168        self.failUnlessIsInstance(count, (int, long))
169        self.failUnlessEqual(err, 0)
170        self.failIfEqual(count, 0)
171
172        err = CGSetDisplayTransferByTable(CGMainDisplayID(), count,
173                red, green, blue)
174        self.failUnlessEqual(err, 0)
175
176        err, red, green, blue, count = CGGetDisplayTransferByTable(
177                CGMainDisplayID(), tablen, None, None, None, None)
178        self.failUnlessIsInstance(err, (int, long))
179        self.failUnlessIsInstance(count, (int, long))
180        self.failUnlessEqual(err, 0)
181        self.failIfEqual(count, 0)
182
183        err = CGSetDisplayTransferByTable(CGMainDisplayID(), count,
184                red, green, blue)
185        self.failUnlessEqual(err, 0)
186
187        CGDisplayRestoreColorSyncSettings()
188
189        v = CGDisplayIsCaptured(CGMainDisplayID())
190        self.failUnlessIsInstance(v, int)
191        self.failIf(v)
192
193        err = CGDisplayCapture(CGMainDisplayID())
194        self.failUnlessEqual(err, 0)
195
196        v = CGDisplayIsCaptured(CGMainDisplayID())
197        self.failUnless(v)
198
199        err = CGDisplayRelease(CGMainDisplayID())
200        self.failUnlessEqual(err, 0)
201
202        v = CGDisplayIsCaptured(CGMainDisplayID())
203        self.failIf(v)
204
205        err = CGDisplayCaptureWithOptions(CGMainDisplayID(), 0)
206        self.failUnlessEqual(err, 0)
207
208        err = CGDisplayRelease(CGMainDisplayID())
209        self.failUnlessEqual(err, 0)
210
211        err = CGCaptureAllDisplays()
212        self.failUnlessEqual(err, 0)
213
214        ctx = CGDisplayGetDrawingContext(CGMainDisplayID())
215        self.failUnlessIsInstance(ctx, CGContextRef)
216
217        err = CGReleaseAllDisplays()
218        self.failUnlessEqual(err, 0)
219
220        err = CGCaptureAllDisplaysWithOptions(0)
221        self.failUnlessEqual(err, 0)
222
223        err = CGReleaseAllDisplays()
224        self.failUnlessEqual(err, 0)
225
226        v = CGShieldingWindowID(CGMainDisplayID())
227        self.failUnlessIsInstance(v, (int, long))
228
229        v = CGShieldingWindowLevel()
230        self.failUnlessIsInstance(v, (int, long))
231
232        v = CGDisplayBaseAddress(CGMainDisplayID())
233        self.failUnlessIsInstance(v, objc.varlist)
234        self.failUnlessIsInstance(v[0], str)
235
236        v = CGDisplayAddressForPosition(CGMainDisplayID(), 100, 100)
237        self.failUnlessIsInstance(v, objc.varlist)
238        self.failUnlessIsInstance(v[0], str)
239
240        err = CGDisplayHideCursor(CGMainDisplayID())
241        self.failUnlessEqual(err, 0)
242
243        err = CGDisplayShowCursor(CGMainDisplayID())
244        self.failUnlessEqual(err, 0)
245
246        err = CGDisplayMoveCursorToPoint(CGMainDisplayID(), (100, 100))
247
248        dX, dY = CGGetLastMouseDelta(None, None)
249        self.failUnlessIsInstance(dX, (int, long))
250        self.failUnlessIsInstance(dY, (int, long))
251
252        v = CGDisplayCanSetPalette(CGMainDisplayID())
253        self.failUnlessIsInstance(v, (int, long))
254
255        err = CGDisplayWaitForBeamPositionOutsideLines(CGMainDisplayID(), 200, 400)
256        self.failUnlessEqual(err, 0)
257
258        v = CGDisplayBeamPosition(CGMainDisplayID())
259        self.failUnlessIsInstance(v, (int, long))
260
261        palette = CGPaletteCreateDefaultColorPalette()
262        self.failUnlessIsInstance(palette, CGDirectPaletteRef)
263
264        err = CGDisplaySetPalette(CGMainDisplayID(), palette)
265        self.failUnlessIsInstance(err, (int, long))
266
267if __name__ == "__main__":
268    main()
269