1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
import sys
import pytest
import ctypes
from sdl2 import SDL_Init, SDL_Quit, SDL_QuitSubSystem, SDL_INIT_EVERYTHING
from sdl2 import video, shape, surface
class TestSDLShape(object):
__tags__ = ["sdl"]
@classmethod
def setup_class(cls):
SDL_Init(SDL_INIT_EVERYTHING)
if video.SDL_GetCurrentVideoDriver() is None:
raise pytest.skip('Video subsystem not supported')
@classmethod
def teardown_class(cls):
SDL_QuitSubSystem(SDL_INIT_EVERYTHING)
SDL_Quit()
def test_SDL_CreateShapedWindow(self):
if video.SDL_GetCurrentVideoDriver() == b"dummy":
pytest.skip("dummy video driver does not support shaped windows")
flags = (video.SDL_WINDOW_HIDDEN,)
for flag in flags:
window = shape.SDL_CreateShapedWindow(b"Test", 10, 10, 10, 10,
flag)
assert isinstance(window.contents, video.SDL_Window)
video.SDL_DestroyWindow(window)
def test_SDL_IsShapedWindow(self):
if video.SDL_GetCurrentVideoDriver() == b"dummy":
pytest.skip("dummy video driver does not support shaped windows")
flags = (video.SDL_WINDOW_HIDDEN,)
for flag in flags:
window = shape.SDL_CreateShapedWindow(b"Test", 10, 10, 10, 10,
flag)
assert isinstance(window.contents, video.SDL_Window)
val = shape.SDL_IsShapedWindow(window)
assert val
video.SDL_DestroyWindow(window)
window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, flag)
assert isinstance(window.contents, video.SDL_Window)
val = shape.SDL_IsShapedWindow(window)
assert not val
video.SDL_DestroyWindow(window)
def test_SDL_SetWindowShape(self):
if video.SDL_GetCurrentVideoDriver() == b"dummy":
pytest.skip("dummy video driver does not support shaped windows")
sf = surface.SDL_CreateRGBSurface(0, 10, 10, 32,
0xFF000000,
0x00FF0000,
0x0000FF00,
0x000000FF)
mode = shape.SDL_WindowShapeMode()
mode.mode = shape.ShapeModeDefault
mode.parameters = shape.SDL_WindowShapeParams()
mode.parameters.binarizationCutoff = 1
flags = (video.SDL_WINDOW_HIDDEN,)
for flag in flags:
# TODO: find out, how shaping is supposed to work :-)
# window = shape.SDL_CreateShapedWindow(b"Test", 10, 10, 10, 10,
# flag)
# self.assertIsInstance(window, video.SDL_Window)
# self.assertTrue(shape.SDL_IsShapedWindow(window))
# self.assertRaises(TypeError, shape.SDL_SetWindowShape,
# None, None, None)
# self.assertRaises(TypeError, shape.SDL_SetWindowShape,
# window, None, None)
# self.assertRaises(TypeError, shape.SDL_SetWindowShape,
# window, sf, None)
# self.assertRaises(TypeError, shape.SDL_SetWindowShape,
# "Test", sf, mode)
# self.assertRaises(TypeError, shape.SDL_SetWindowShape,
# window, 12345, mode)
# self.assertRaises(TypeError, shape.SDL_SetWindowShape,
# window, sf, "Test")
# shape.SDL_SetWindowShape(window, sf, mode)
# wmode = shape.SDL_GetShapedWindowMode(window)
# self.assertEqual(wmode.mode, mode.mode)
# self.assertEqual(wmode.parameters.binarizationCutoff,
# mode.parameters.binarizationCutoff)
# video.SDL_DestroyWindow(window)
window = video.SDL_CreateWindow(b"Test", 10, 10, 10, 10, flag)
assert isinstance(window.contents, video.SDL_Window)
#self.assertRaises(sdl.SDLError, shape.SDL_SetWindowShape,
# window, sf, mode)
video.SDL_DestroyWindow(window)
surface.SDL_FreeSurface(sf)
def test_SDL_GetShapedWindowMode(self):
if video.SDL_GetCurrentVideoDriver() == b"dummy":
pytest.skip("dummy video driver does not support shaped windows")
flags = (video.SDL_WINDOW_HIDDEN,)
for flag in flags:
window = shape.SDL_CreateShapedWindow(b"Test", 10, 10, 10, 10,
flag)
assert isinstance(window.contents, video.SDL_Window)
mode = shape.SDL_WindowShapeMode()
ret = shape.SDL_GetShapedWindowMode(window, ctypes.byref(mode))
assert ret == 0
video.SDL_DestroyWindow(window)
|