1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4from Quartz import CoreGraphics 5 6class TestCGDirectDisplay (TestCase): 7 8 def testConstants(self): 9 self.assertEqual(kCGNullDirectDisplay, 0) 10 11 self.assertEqual(kCGDisplayWidth, "Width") 12 self.assertEqual(kCGDisplayHeight, "Height") 13 self.assertEqual(kCGDisplayMode, "Mode") 14 self.assertEqual(kCGDisplayBitsPerPixel, "BitsPerPixel") 15 self.assertEqual(kCGDisplayBitsPerSample, "BitsPerSample") 16 self.assertEqual(kCGDisplaySamplesPerPixel, "SamplesPerPixel") 17 self.assertEqual(kCGDisplayRefreshRate, "RefreshRate") 18 self.assertEqual(kCGDisplayModeUsableForDesktopGUI, "UsableForDesktopGUI") 19 self.assertEqual(kCGDisplayIOFlags, "IOFlags") 20 self.assertEqual(kCGDisplayBytesPerRow, "kCGDisplayBytesPerRow") 21 self.assertEqual(kCGIODisplayModeID, "IODisplayModeID") 22 23 self.assertEqual(kCGDisplayModeIsSafeForHardware, "kCGDisplayModeIsSafeForHardware") 24 self.assertEqual(kCGDisplayModeIsInterlaced, "kCGDisplayModeIsInterlaced") 25 self.assertEqual(kCGDisplayModeIsStretched, "kCGDisplayModeIsStretched") 26 self.assertEqual(kCGDisplayModeIsTelevisionOutput, "kCGDisplayModeIsTelevisionOutput" ) 27 28 self.assertEqual(kCGCaptureNoOptions, 0) 29 self.assertEqual(kCGCaptureNoFill, 1) 30 31 self.assertNotHasAttr(CoreGraphics, 'kCGDirectMainDisplay') 32 33 def testFunctions(self): 34 self.assertIsInstance(CGMainDisplayID(), (int, long)) 35 36 self.assertArgIsOut(CGGetDisplaysWithPoint, 2) 37 self.assertArgIsOut(CGGetDisplaysWithPoint, 3) 38 v, ids, cnt = CGGetDisplaysWithPoint((0, 0), 10, None, None) 39 self.assertIsInstance(v, (int, long)) 40 self.assertIsInstance(cnt, (int, long)) 41 self.assertTrue(cnt) 42 self.assertEqual(len(ids), cnt) 43 self.assertIsInstance(ids[0], (int, long)) 44 45 self.assertArgIsOut(CGGetDisplaysWithRect, 2) 46 self.assertArgIsOut(CGGetDisplaysWithRect, 3) 47 v, ids, cnt = CGGetDisplaysWithRect(((0, 0), (400, 500)), 48 10, None, None) 49 self.assertIsInstance(v, (int, long)) 50 self.assertIsInstance(cnt, (int, long)) 51 self.assertTrue(cnt) 52 self.assertEqual(len(ids), cnt) 53 self.assertIsInstance(ids[0], (int, long)) 54 55 56 self.assertArgIsOut(CGGetDisplaysWithOpenGLDisplayMask, 2) 57 self.assertArgIsOut(CGGetDisplaysWithOpenGLDisplayMask, 3) 58 v, ids, cnt = CGGetDisplaysWithOpenGLDisplayMask(0xff, 59 10, None, None) 60 self.assertIsInstance(v, (int, long)) 61 self.assertIsInstance(cnt, (int, long)) 62 self.assertTrue(cnt) 63 self.assertEqual(len(ids), cnt) 64 self.assertIsInstance(ids[0], (int, long)) 65 66 self.assertArgIsOut(CGGetActiveDisplayList, 1) 67 self.assertArgIsOut(CGGetActiveDisplayList, 2) 68 v, ids, cnt = CGGetActiveDisplayList(10, None, None) 69 self.assertIsInstance(v, (int, long)) 70 self.assertIsInstance(cnt, (int, long)) 71 self.assertTrue(cnt) 72 self.assertEqual(len(ids), cnt) 73 self.assertIsInstance(ids[0], (int, long)) 74 75 self.assertArgIsOut(CGGetOnlineDisplayList, 1) 76 self.assertArgIsOut(CGGetOnlineDisplayList, 2) 77 v, ids, cnt = CGGetOnlineDisplayList(10, None, None) 78 self.assertIsInstance(v, (int, long)) 79 self.assertIsInstance(cnt, (int, long)) 80 self.assertTrue(cnt) 81 self.assertEqual(len(ids), cnt) 82 self.assertIsInstance(ids[0], (int, long)) 83 84 v = CGDisplayIDToOpenGLDisplayMask(CGMainDisplayID()) 85 self.assertIsInstance(v, (int, long)) 86 self.assertNotEqual(v, 0) 87 88 id = CGOpenGLDisplayMaskToDisplayID(v) 89 self.assertIsInstance(id, (int, long)) 90 self.assertEqual(id, CGMainDisplayID()) 91 92 box = CGDisplayBounds(CGMainDisplayID()) 93 self.assertIsInstance(box, CGRect) 94 95 v = CGDisplayPixelsWide(CGMainDisplayID()) 96 self.assertIsInstance(v, (int, long)) 97 v = CGDisplayPixelsHigh(CGMainDisplayID()) 98 self.assertIsInstance(v, (int, long)) 99 100 modes = CGDisplayAvailableModes(CGMainDisplayID()) 101 self.assertIsInstance(modes, CFArrayRef) 102 self.assertTrue(len(modes) > 0) 103 self.assertIsInstance(modes[0], CFDictionaryRef) 104 105 v, exact = CGDisplayBestModeForParameters(CGMainDisplayID(), 106 32, 800, 600, None) 107 self.assertIsInstance(v, CFDictionaryRef) 108 self.assertIsInstance(exact, (int, long)) 109 110 v, exact = CGDisplayBestModeForParametersAndRefreshRate( 111 CGMainDisplayID(), 32, 800, 600, 70, None) 112 self.assertIsInstance(v, CFDictionaryRef) 113 self.assertIsInstance(exact, (int, long)) 114 115 v, exact = CGDisplayBestModeForParametersAndRefreshRateWithProperty( 116 CGMainDisplayID(), 32, 800, 600, 70, 117 kCGDisplayModeIsSafeForHardware, None) 118 self.assertIsInstance(v, CFDictionaryRef) 119 self.assertIsInstance(exact, (int, long)) 120 121 cur = CGDisplayCurrentMode(CGMainDisplayID()) 122 self.assertIsInstance(cur, CFDictionaryRef) 123 124 v = CGDisplaySwitchToMode(CGMainDisplayID(), v) 125 self.assertEqual(v, 0) 126 v = CGDisplaySwitchToMode(CGMainDisplayID(), cur) 127 self.assertEqual(v, 0) 128 129 v = CGDisplayBitsPerPixel(CGMainDisplayID()) 130 self.assertIsInstance(v, (int, long)) 131 132 v = CGDisplayBitsPerSample(CGMainDisplayID()) 133 self.assertIsInstance(v, (int, long)) 134 135 v = CGDisplaySamplesPerPixel(CGMainDisplayID()) 136 self.assertIsInstance(v, (int, long)) 137 138 v = CGDisplayBytesPerRow(CGMainDisplayID()) 139 self.assertIsInstance(v, (int, long)) 140 141 self.assertArgIsOut(CGGetDisplayTransferByFormula, 1) 142 self.assertArgIsOut(CGGetDisplayTransferByFormula, 2) 143 self.assertArgIsOut(CGGetDisplayTransferByFormula, 3) 144 self.assertArgIsOut(CGGetDisplayTransferByFormula, 4) 145 self.assertArgIsOut(CGGetDisplayTransferByFormula, 5) 146 self.assertArgIsOut(CGGetDisplayTransferByFormula, 6) 147 self.assertArgIsOut(CGGetDisplayTransferByFormula, 7) 148 self.assertArgIsOut(CGGetDisplayTransferByFormula, 8) 149 self.assertArgIsOut(CGGetDisplayTransferByFormula, 9) 150 v = CGGetDisplayTransferByFormula(CGMainDisplayID(), 151 None, None, None, None, None, None, None, None, None) 152 self.assertIsInstance(v[0], (int, long)) 153 for i in range(9): 154 self.assertIsInstance(v[i+1], float) 155 156 v = CGSetDisplayTransferByFormula(CGMainDisplayID(), *v[1:]) 157 self.assertEqual(v, 0) 158 159 tablen = CGDisplayGammaTableCapacity(CGMainDisplayID()) 160 self.assertIsInstance(tablen, (int, long)) 161 162 err, red, green, blue, count = CGGetDisplayTransferByTable( 163 CGMainDisplayID(), tablen, None, None, None, None) 164 self.assertIsInstance(err, (int, long)) 165 self.assertIsInstance(count, (int, long)) 166 self.assertEqual(err, 0) 167 self.failIfEqual(count, 0) 168 169 err = CGSetDisplayTransferByTable(CGMainDisplayID(), count, 170 red, green, blue) 171 self.assertEqual(err, 0) 172 173 err, red, green, blue, count = CGGetDisplayTransferByTable( 174 CGMainDisplayID(), tablen, None, None, None, None) 175 self.assertIsInstance(err, (int, long)) 176 self.assertIsInstance(count, (int, long)) 177 self.assertEqual(err, 0) 178 self.failIfEqual(count, 0) 179 180 err = CGSetDisplayTransferByTable(CGMainDisplayID(), count, 181 red, green, blue) 182 self.assertEqual(err, 0) 183 184 CGDisplayRestoreColorSyncSettings() 185 186 v = CGDisplayIsCaptured(CGMainDisplayID()) 187 self.assertIsInstance(v, int) 188 self.failIf(v) 189 190 err = CGDisplayCapture(CGMainDisplayID()) 191 self.assertEqual(err, 0) 192 193 v = CGDisplayIsCaptured(CGMainDisplayID()) 194 self.assertTrue(v) 195 196 err = CGDisplayRelease(CGMainDisplayID()) 197 self.assertEqual(err, 0) 198 199 v = CGDisplayIsCaptured(CGMainDisplayID()) 200 self.failIf(v) 201 202 err = CGDisplayCaptureWithOptions(CGMainDisplayID(), 0) 203 self.assertEqual(err, 0) 204 205 err = CGDisplayRelease(CGMainDisplayID()) 206 self.assertEqual(err, 0) 207 208 err = CGCaptureAllDisplays() 209 self.assertEqual(err, 0) 210 211 ctx = CGDisplayGetDrawingContext(CGMainDisplayID()) 212 self.assertIsInstance(ctx, CGContextRef) 213 214 err = CGReleaseAllDisplays() 215 self.assertEqual(err, 0) 216 217 err = CGCaptureAllDisplaysWithOptions(0) 218 self.assertEqual(err, 0) 219 220 err = CGReleaseAllDisplays() 221 self.assertEqual(err, 0) 222 223 v = CGShieldingWindowID(CGMainDisplayID()) 224 self.assertIsInstance(v, (int, long)) 225 226 v = CGShieldingWindowLevel() 227 self.assertIsInstance(v, (int, long)) 228 229 v = CGDisplayBaseAddress(CGMainDisplayID()) 230 self.assertIsInstance(v, objc.varlist) 231 self.assertIsInstance(v[0], bytes) 232 233 v = CGDisplayAddressForPosition(CGMainDisplayID(), 100, 100) 234 self.assertIsInstance(v, objc.varlist) 235 self.assertIsInstance(v[0], str) 236 237 err = CGDisplayHideCursor(CGMainDisplayID()) 238 self.assertEqual(err, 0) 239 240 err = CGDisplayShowCursor(CGMainDisplayID()) 241 self.assertEqual(err, 0) 242 243 err = CGDisplayMoveCursorToPoint(CGMainDisplayID(), (100, 100)) 244 245 dX, dY = CGGetLastMouseDelta(None, None) 246 self.assertIsInstance(dX, (int, long)) 247 self.assertIsInstance(dY, (int, long)) 248 249 v = CGDisplayCanSetPalette(CGMainDisplayID()) 250 self.assertIsInstance(v, (int, long)) 251 252 err = CGDisplayWaitForBeamPositionOutsideLines(CGMainDisplayID(), 200, 400) 253 self.assertEqual(err, 0) 254 255 v = CGDisplayBeamPosition(CGMainDisplayID()) 256 self.assertIsInstance(v, (int, long)) 257 258 palette = CGPaletteCreateDefaultColorPalette() 259 self.assertIsInstance(palette, CGDirectPaletteRef) 260 261 err = CGDisplaySetPalette(CGMainDisplayID(), palette) 262 self.assertIsInstance(err, (int, long)) 263 264 # Don't actually call CGSetDisplayTransferByByteTable, it might have 265 # permanent effects. 266 self.assertResultHasType(CGSetDisplayTransferByByteTable, objc._C_INT) 267 self.assertArgHasType(CGSetDisplayTransferByByteTable, 0, objc._C_UINT) 268 self.assertArgHasType(CGSetDisplayTransferByByteTable, 1, objc._C_UINT) 269 self.assertArgHasType(CGSetDisplayTransferByByteTable, 2, 'n^' + objc._C_CHAR_AS_INT) 270 self.assertArgSizeInArg(CGSetDisplayTransferByByteTable, 2, 1) 271 self.assertArgHasType(CGSetDisplayTransferByByteTable, 3, 'n^' + objc._C_CHAR_AS_INT) 272 self.assertArgSizeInArg(CGSetDisplayTransferByByteTable, 3, 1) 273 self.assertArgHasType(CGSetDisplayTransferByByteTable, 4, 'n^' + objc._C_CHAR_AS_INT) 274 self.assertArgSizeInArg(CGSetDisplayTransferByByteTable, 4, 1) 275 276 @min_os_level('10.6') 277 def testTypes10_6(self): 278 self.assertIsCFType(CGDisplayModeRef) 279 280 @min_os_level('10.6') 281 def testFunction10_6(self): 282 mainID = CGMainDisplayID() 283 284 self.assertResultIsCFRetained(CGDisplayCopyAllDisplayModes) 285 v = CGDisplayCopyAllDisplayModes(mainID, None) 286 self.assertIsInstance(v, CFArrayRef) 287 288 self.assertResultIsCFRetained(CGDisplayCopyDisplayMode) 289 mode = CGDisplayCopyDisplayMode(mainID) 290 self.assertIsInstance(mode, CGDisplayModeRef) 291 292 v = CGDisplaySetDisplayMode(mainID, mode, None) 293 self.assertIsInstance(v, (int, long)) 294 295 v = CGDisplayModeGetWidth(mode) 296 self.assertIsInstance(v, (int, long)) 297 v = CGDisplayModeGetHeight(mode) 298 self.assertIsInstance(v, (int, long)) 299 v = CGDisplayModeCopyPixelEncoding(mode) 300 self.assertIsInstance(v, unicode) 301 v = CGDisplayModeGetRefreshRate(mode) 302 self.assertIsInstance(v, float) 303 v = CGDisplayModeGetIOFlags(mode) 304 self.assertIsInstance(v, (int, long)) 305 v = CGDisplayModeGetIODisplayModeID(mode) 306 self.assertIsInstance(v, (int, long)) 307 v = CGDisplayModeIsUsableForDesktopGUI(mode) 308 self.assertIsInstance(v, bool) 309 v = CGDisplayModeGetTypeID() 310 self.assertIsInstance(v, (int, long)) 311 v = CGDisplayModeRetain(mode) 312 self.assertTrue(v is mode) 313 CGDisplayModeRelease(mode) 314 315 self.assertResultIsCFRetained(CGDisplayCreateImage) 316 v = CGDisplayCreateImage(mainID) 317 self.assertIsInstance(v, CGImageRef) 318 self.assertResultIsCFRetained(CGDisplayCreateImageForRect) 319 v = CGDisplayCreateImageForRect(mainID, ((0, 0), (100, 100))) 320 self.assertIsInstance(v, CGImageRef) 321 322 323 324 325if __name__ == "__main__": 326 main() 327