1
2from PyObjCTools.TestSupport import *
3from AppKit import *
4
5class TestNSGraphics (TestCase):
6    def testConstants(self):
7        self.failUnlessEqual(NSCompositeClear, 0)
8        self.failUnlessEqual(NSCompositeCopy, 1)
9        self.failUnlessEqual(NSCompositeSourceOver, 2)
10        self.failUnlessEqual(NSCompositeSourceIn, 3)
11        self.failUnlessEqual(NSCompositeSourceOut, 4)
12        self.failUnlessEqual(NSCompositeSourceAtop, 5)
13        self.failUnlessEqual(NSCompositeDestinationOver, 6)
14        self.failUnlessEqual(NSCompositeDestinationIn, 7)
15        self.failUnlessEqual(NSCompositeDestinationOut, 8)
16        self.failUnlessEqual(NSCompositeDestinationAtop, 9)
17        self.failUnlessEqual(NSCompositeXOR, 10)
18        self.failUnlessEqual(NSCompositePlusDarker, 11)
19        self.failUnlessEqual(NSCompositeHighlight, 12)
20        self.failUnlessEqual(NSCompositePlusLighter, 13)
21        self.failUnlessEqual(NSBackingStoreRetained, 0)
22        self.failUnlessEqual(NSBackingStoreNonretained, 1)
23        self.failUnlessEqual(NSBackingStoreBuffered, 2)
24        self.failUnlessEqual(NSWindowAbove,  1)
25        self.failUnlessEqual(NSWindowBelow, -1)
26        self.failUnlessEqual(NSWindowOut,  0)
27        self.failUnlessEqual(NSFocusRingOnly, 0)
28        self.failUnlessEqual(NSFocusRingBelow, 1)
29        self.failUnlessEqual(NSFocusRingAbove, 2)
30        self.failUnlessEqual(NSFocusRingTypeDefault, 0)
31        self.failUnlessEqual(NSFocusRingTypeNone, 1)
32        self.failUnlessEqual(NSFocusRingTypeExterior, 2)
33
34        self.failUnlessIsInstance(NSCalibratedWhiteColorSpace, unicode)
35        self.failUnlessIsInstance(NSCalibratedBlackColorSpace, unicode)
36        self.failUnlessIsInstance(NSCalibratedRGBColorSpace, unicode)
37        self.failUnlessIsInstance(NSDeviceWhiteColorSpace, unicode)
38        self.failUnlessIsInstance(NSDeviceBlackColorSpace, unicode)
39        self.failUnlessIsInstance(NSDeviceRGBColorSpace, unicode)
40        self.failUnlessIsInstance(NSDeviceCMYKColorSpace, unicode)
41        self.failUnlessIsInstance(NSNamedColorSpace, unicode)
42        self.failUnlessIsInstance(NSPatternColorSpace, unicode)
43        self.failUnlessIsInstance(NSCustomColorSpace, unicode)
44        self.failUnlessIsInstance(NSWhite, float)
45        self.failUnlessIsInstance(NSLightGray, float)
46        self.failUnlessIsInstance(NSDarkGray, float)
47        self.failUnlessIsInstance(NSBlack, float)
48
49        self.failUnlessIsInstance(NSDeviceResolution, unicode)
50        self.failUnlessIsInstance(NSDeviceColorSpaceName, unicode)
51        self.failUnlessIsInstance(NSDeviceBitsPerSample, unicode)
52        self.failUnlessIsInstance(NSDeviceIsScreen, unicode)
53        self.failUnlessIsInstance(NSDeviceIsPrinter, unicode)
54        self.failUnlessIsInstance(NSDeviceSize, unicode)
55        self.failUnlessEqual(NSAnimationEffectDisappearingItemDefault, 0)
56        self.failUnlessEqual(NSAnimationEffectPoof, 10)
57
58
59    def testFunctions(self):
60        app = NSApplication.sharedApplication()
61
62        self.failUnlessArgHasType(NSBestDepth, 4, 'o^' + objc._C_NSBOOL)
63        self.failUnlessArgIsBOOL(NSBestDepth, 3)
64        d, e = NSBestDepth(NSDeviceRGBColorSpace, 8, 32, False, None)
65        self.failUnlessIsInstance(d, (int, long))
66        self.failUnlessIsInstance(e, bool)
67
68        self.failUnlessResultIsBOOL(NSPlanarFromDepth)
69        self.failUnlessIsInstance(NSPlanarFromDepth(0), bool)
70
71        self.failUnlessIsInstance(NSColorSpaceFromDepth(0), unicode)
72        self.failUnlessIsInstance(NSBitsPerSampleFromDepth(0), (int, long))
73        self.failUnlessIsInstance(NSBitsPerPixelFromDepth(0), (int, long))
74        self.failUnlessIsInstance(NSNumberOfColorComponents(NSDeviceRGBColorSpace), (int, long))
75
76        v = NSAvailableWindowDepths()
77        self.failUnlessIsInstance(v, tuple)
78        self.failIfEqual(len(v), 0)
79        self.failUnlessIsInstance(v[0], int)
80
81        img = NSBitmapImageRep.alloc().initWithBitmapDataPlanes_pixelsWide_pixelsHigh_bitsPerSample_samplesPerPixel_hasAlpha_isPlanar_colorSpaceName_bitmapFormat_bytesPerRow_bitsPerPixel_(
82                None, 255, 255, 8, 4, True, False, NSCalibratedRGBColorSpace, 0, 0, 0)
83        context = NSGraphicsContext.graphicsContextWithBitmapImageRep_(img)
84        current = NSGraphicsContext.currentContext()
85        try:
86            NSGraphicsContext.setCurrentContext_(context)
87            NSRectFill(((0, 0), (1, 2)))
88
89            self.failUnlessArgSizeInArg(NSRectFillList, 0, 1)
90            NSRectFillList([((0, 0), (1, 2)), ((10, 50), (9, 9))], 2)
91
92            self.failUnlessArgSizeInArg(NSRectFillListWithGrays, 0, 2)
93            self.failUnlessArgSizeInArg(NSRectFillListWithGrays, 1, 2)
94            NSRectFillListWithGrays([((0, 0), (1, 2)), ((10, 50), (9, 9))], (0.5, 0.6), 2)
95
96            self.failUnlessArgSizeInArg(NSRectFillListWithColors, 0, 2)
97            self.failUnlessArgSizeInArg(NSRectFillListWithColors, 1, 2)
98            NSRectFillListWithColors([((0, 0), (1, 2)), ((10, 50), (9, 9))], (NSColor.blueColor(), NSColor.redColor()), 2)
99
100            NSRectFillUsingOperation(((0, 0), (1, 2)), NSCompositeSourceOver)
101
102            self.failUnlessArgSizeInArg(NSRectFillListUsingOperation, 0, 1)
103            NSRectFillListUsingOperation([((0, 0), (1, 2)), ((10, 50), (9, 9))], 2, NSCompositeSourceOver)
104
105            self.failUnlessArgSizeInArg(NSRectFillListWithColorsUsingOperation, 0, 2)
106            self.failUnlessArgSizeInArg(NSRectFillListWithColorsUsingOperation, 1, 2)
107            NSRectFillListWithColorsUsingOperation([((0, 0), (1, 2)), ((10, 50), (9, 9))], (NSColor.blueColor(), NSColor.redColor()), 2, NSCompositeSourceOver)
108
109            NSFrameRect(((5, 5), (20, 30)))
110            NSFrameRectWithWidth(((5, 5), (20, 30)), 4)
111            NSFrameRectWithWidthUsingOperation(((5, 5), (20, 30)), 4, NSCompositeSourceOver)
112
113            NSRectClip(((5, 5), (200, 200)))
114            self.failUnlessArgSizeInArg(NSRectClipList, 0, 1)
115            NSRectClipList([((5, 5), (200, 200)), ((50, 50), (90, 100))], 2)
116
117            color = NSReadPixel((5, 5))
118            self.failUnlessIsInstance(color, NSColor)
119
120            self.failUnlessArgSizeInArg(NSDrawTiledRects, 2, 4)
121            self.failUnlessArgSizeInArg(NSDrawTiledRects, 3, 4)
122            self.failUnlessArgIsIn(NSDrawTiledRects, 2)
123            self.failUnlessArgIsIn(NSDrawTiledRects, 3)
124            NSDrawTiledRects(((10, 10), (50, 50)), ((15, 15), (10, 10)),  [NSMinXEdge, NSMaxXEdge], [0.8, 0.9], 2)
125
126            NSDrawGrayBezel(((0, 0), (10, 10)), ((0, 0), (50, 50)))
127            NSDrawGroove(((0, 0), (10, 10)), ((0, 0), (50, 50)))
128            NSDrawWhiteBezel(((0, 0), (10, 10)), ((0, 0), (50, 50)))
129            NSDrawButton(((0, 0), (10, 10)), ((0, 0), (50, 50)))
130            NSEraseRect(((0, 0), (10, 10)))
131            NSCopyBits(0, ((10, 10), (50, 50)), (50, 50))
132            NSHighlightRect(((10, 10), (50, 50)))
133            NSDrawDarkBezel(((0, 0), (10, 10)), ((0, 0), (50, 50)))
134            NSDrawLightBezel(((0, 0), (10, 10)), ((0, 0), (50, 50)))
135            NSDottedFrameRect(((10, 10), (50, 50)))
136            NSDrawWindowBackground(((10, 10), (50, 50)))
137
138        finally:
139            NSGraphicsContext.setCurrentContext_(current)
140
141            NSSetFocusRingStyle(NSFocusRingAbove)
142
143            self.failUnlessArgIsOut(NSGetWindowServerMemory, 1)
144            self.failUnlessArgIsOut(NSGetWindowServerMemory, 2)
145            self.failUnlessArgIsOut(NSGetWindowServerMemory, 3)
146            r = NSGetWindowServerMemory(0, None, None, None)
147            self.failUnlessIsInstance(r[0], (int, long))
148            self.failUnlessIsInstance(r[1], (int, long))
149            self.failUnlessIsInstance(r[2], (int, long))
150
151            self.failUnlessArgSizeInArg(NSDrawColorTiledRects, 2, 4)
152            self.failUnlessArgSizeInArg(NSDrawColorTiledRects, 3, 4)
153            self.failUnlessArgIsIn(NSDrawColorTiledRects, 2)
154            self.failUnlessArgIsIn(NSDrawColorTiledRects, 3)
155            NSDrawColorTiledRects(((10, 10), (50, 50)), ((15, 15), (10, 10)),  [NSMinXEdge, NSMaxXEdge], [NSColor.redColor(), NSColor.blueColor()], 2)
156
157            #self.failUnlessArgIsBOOL(NSDrawBitmap, 7)
158            #self.failUnlessArgIsBOOL(NSDrawBitmap, 8)
159            #NSDrawBitmap(((0, 0), (10, 10)), 10, 20, 8, 4, 32, 40, False, True,
160            #        NSDeviceRGBColorSpace, [' '*4*10*20, '', '', '', ''])
161
162            self.failUnlessArgSizeInArg(NSWindowList, 1, 0)
163            self.failUnlessArgIsOut(NSWindowList, 1)
164            v = NSWindowList(5, None)
165            self.failUnlessIsInstance(v, tuple)
166            self.failUnlessEqual(len(v), 5)
167            self.failUnlessIsInstance(v[0], (int, long))
168
169            self.failUnlessArgIsOut(NSCountWindowsForContext, 1)
170            v = NSCountWindowsForContext(1, None)
171            self.failUnlessIsInstance(v, (int, long))
172
173            self.failUnlessArgIsOut(NSWindowListForContext, 2)
174            self.failUnlessArgSizeInArg(NSWindowListForContext, 2, 1)
175            v = NSWindowListForContext(0, 5, None)
176            self.failUnlessIsInstance(v, tuple)
177            self.failUnlessEqual(len(v), 5)
178            self.failUnlessIsInstance(v[0], (int, long))
179
180
181
182
183        NSBeep()
184        count = NSCountWindows(None)
185        self.failUnlessIsInstance(count, (int, long))
186
187        try:
188            NSDisableScreenUpdates()
189        except objc.error:
190            pass
191
192        try:
193            NSEnableScreenUpdates()
194        except objc.error:
195            pass
196
197        self.failUnlessArgIsSEL(NSShowAnimationEffect, 4, 'v@:^v')
198        self.failUnlessArgHasType(NSShowAnimationEffect, 5, '^v')
199        try:
200            NSShowAnimationEffect(NSAnimationEffectPoof, (10, 10), (20, 30), None, None, None)
201        except objc.error:
202            pass
203
204
205if __name__ == "__main__":
206    main()
207