def test_get_set_texture_blend_mode(self): window = video.create_window("Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window, video.SDL_Window) renderer = render.create_renderer(window, -1, render.SDL_RENDERER_SOFTWARE) self.assertIsInstance(renderer, render.SDL_Renderer) tex = render.create_texture(renderer, pixels.SDL_PIXELFORMAT_ARGB8888, render.SDL_TEXTUREACCESS_STREAMING, 10, 10) self.assertIsInstance(tex, render.SDL_Texture) modes = (video.SDL_BLENDMODE_NONE, video.SDL_BLENDMODE_ADD, video.SDL_BLENDMODE_BLEND, video.SDL_BLENDMODE_MOD, ) for mode in modes: render.set_texture_blend_mode(tex, mode) tmode = render.get_texture_blend_mode(tex) self.assertEqual(tmode, mode) render.destroy_texture(tex) self.assertRaises(sdl.SDLError, render.set_texture_blend_mode, tex, modes[2]) self.assertRaises(sdl.SDLError, render.get_texture_blend_mode, tex) render.destroy_renderer(renderer) video.destroy_window(window)
def test_get_set_texture_color_mod(self): window = video.create_window("Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window, video.SDL_Window) renderer = render.create_renderer(window, -1, render.SDL_RENDERER_SOFTWARE) self.assertIsInstance(renderer, render.SDL_Renderer) tex = render.create_texture(renderer, pixels.SDL_PIXELFORMAT_ARGB8888, render.SDL_TEXTUREACCESS_STREAMING, 10, 10) self.assertIsInstance(tex, render.SDL_Texture) colors = ((16, 22, 185), (32, 64, 128), (64, 32, 128), (64, 32, 255), (255, 32, 64), (255, 32, 128), (0, 0, 0), (255, 255, 255), (128, 128, 128), ) for r, g, b in colors: render.set_texture_color_mod(tex, r, g, b) tr, tg, tb = render.get_texture_color_mod(tex) self.assertEqual((tr, tg, tb), (r, g, b)) render.destroy_texture(tex) self.assertRaises(sdl.SDLError, render.set_texture_color_mod, tex, 10, 20, 30) self.assertRaises(sdl.SDLError, render.get_texture_color_mod, tex) render.destroy_renderer(renderer) video.destroy_window(window)
def test_query_texture(self): window = video.create_window("Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window, video.SDL_Window) renderer = render.create_renderer(window, -1, render.SDL_RENDERER_SOFTWARE) self.assertIsInstance(renderer, render.SDL_Renderer) formats = (pixels.SDL_PIXELFORMAT_ARGB8888, pixels.SDL_PIXELFORMAT_RGB555, pixels.SDL_PIXELFORMAT_RGBA4444, pixels.SDL_PIXELFORMAT_ARGB2101010, pixels.SDL_PIXELFORMAT_YUY2 ) access = (render.SDL_TEXTUREACCESS_STATIC, render.SDL_TEXTUREACCESS_STREAMING, render.SDL_TEXTUREACCESS_TARGET) for fmt in formats: for acc in access: for w in range(1, 300, 5): for h in range(1, 300, 5): tex = render.create_texture(renderer, fmt, acc, w, h) self.assertIsInstance(tex, render.SDL_Texture) qf, qa, qw, qh = render.query_texture(tex) self.assertEqual(qf, fmt) self.assertEqual(qa, acc) self.assertEqual(w, qw) self.assertEqual(h, qh) render.destroy_texture(tex) render.destroy_renderer(renderer) video.destroy_window(window)
def test_create_destroy_texture(self): window = video.create_window("Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window, video.SDL_Window) renderer = render.create_renderer(window, -1, render.SDL_RENDERER_SOFTWARE) self.assertIsInstance(renderer, render.SDL_Renderer) formats = (pixels.SDL_PIXELFORMAT_ARGB8888, pixels.SDL_PIXELFORMAT_RGB555, pixels.SDL_PIXELFORMAT_RGBA4444, pixels.SDL_PIXELFORMAT_RGBA8888, pixels.SDL_PIXELFORMAT_ARGB2101010, pixels.SDL_PIXELFORMAT_YUY2 ) access = (render.SDL_TEXTUREACCESS_STATIC, render.SDL_TEXTUREACCESS_STREAMING, render.SDL_TEXTUREACCESS_TARGET) for fmt in formats: for acc in access: for w in range(1, 300, 5): for h in range(1, 300, 5): tex = render.create_texture(renderer, fmt, acc, w, h) self.assertIsInstance(tex, render.SDL_Texture) render.destroy_texture(tex) self.assertRaises(sdl.SDLError, render.create_texture, renderer, pixels.SDL_PIXELFORMAT_RGB555, 1, -10, 10) self.assertRaises(sdl.SDLError, render.create_texture, renderer, pixels.SDL_PIXELFORMAT_RGB555, 1, 10, -10) self.assertRaises(sdl.SDLError, render.create_texture, renderer, pixels.SDL_PIXELFORMAT_RGB555, 1, -10, -10) self.assertRaises(ValueError, render.create_texture, renderer, pixels.SDL_PIXELFORMAT_RGB555, -5, 10, 10) self.assertRaises(ValueError, render.create_texture, renderer, -10, 1, 10, 10) self.assertRaises((AttributeError, TypeError), render.create_texture, None, pixels.SDL_PIXELFORMAT_RGB555, 1, 10, 10) self.assertRaises((AttributeError, TypeError), render.create_texture, "Test", pixels.SDL_PIXELFORMAT_RGB555, 1, 10, 10) self.assertRaises(ValueError, render.create_texture, renderer, "Test", 1, 10, 10) self.assertRaises(ValueError, render.create_texture, renderer, pixels.SDL_PIXELFORMAT_RGB555, None, 10, 10) self.assertRaises(ValueError, render.create_texture, renderer, pixels.SDL_PIXELFORMAT_RGB555, "Test", 10, 10) render.destroy_renderer(renderer) self.assertRaises(sdl.SDLError, render.create_texture, renderer, pixels.SDL_PIXELFORMAT_RGB555, 1, 10, 10) video.destroy_window(window)
def test_get_set_render_target(self): window = video.create_window("Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window, video.SDL_Window) skipcount = 0 for i in range(render.get_num_render_drivers()): renderer = render.create_renderer(window, i, render.SDL_RENDERER_ACCELERATED) self.assertIsInstance(renderer, render.SDL_Renderer) supported = render.render_target_supported(renderer) if not supported: skipcount += 1 render.destroy_renderer(renderer) continue render.set_render_target(renderer) self.assertIsNone(render.get_render_target(renderer)) tex = render.create_texture(renderer, pixels.SDL_PIXELFORMAT_ARGB8888, render.SDL_TEXTUREACCESS_TARGET, 10, 10) render.set_render_target(renderer, tex) self.assertIsInstance(render.get_render_target(renderer), render.SDL_Texture) render.destroy_texture(tex) # TODO: Check in the SDL codebase, why the code below does # not fail... # tex2 = render.create_texture(renderer, # pixels.SDL_PIXELFORMAT_ARGB8888, # render.SDL_TEXTUREACCESS_STREAMING, # 10, 10) # self.assertRaises(SDLError, render.set_render_target, renderer, # tex2) # render.destroy_texture(tex2) render.destroy_renderer(renderer) video.destroy_window(window) if skipcount == render.get_num_render_drivers(): self.skipTest("None of the renderers supports render targets")
def create_texture_sprite(self, renderer, size=(0, 0), pformat=pixels.SDL_PIXELFORMAT_RGBA8888, static=True): """Creates a texture sprite. A size tuple containing the width and height of the sprite needs to be provided. TextureSprite objects are assumed to be static by default, making it impossible to access their pixel buffer in favour for faster copy operations. If you need to update the pixel data frequently, static can be set to False to allow a streaming access on the underlying texture pixel buffer. """ if isinstance(renderer, render.SDL_Renderer): sdlrenderer = renderer elif isinstance(renderer, RenderContext): sdlrenderer = renderer.renderer else: raise TypeError("renderer must be a Renderer or SDL_Renderer") access = render.SDL_TEXTUREACCESS_STATIC if not static: access = render.SDL_TEXTUREACCESS_STREAMING texture = render.create_texture(sdlrenderer, pformat, access, size[0], size[1]) return TextureSprite(texture)
def test_get_set_texture_alpha_mod(self): window = video.create_window("Test", 10, 10, 10, 10, video.SDL_WINDOW_HIDDEN) self.assertIsInstance(window, video.SDL_Window) renderer = render.create_renderer(window, -1, render.SDL_RENDERER_SOFTWARE) self.assertIsInstance(renderer, render.SDL_Renderer) tex = render.create_texture(renderer, pixels.SDL_PIXELFORMAT_ARGB8888, render.SDL_TEXTUREACCESS_STREAMING, 10, 10) self.assertIsInstance(tex, render.SDL_Texture) for alpha in range(0, 255): render.set_texture_alpha_mod(tex, alpha) talpha = render.get_texture_alpha_mod(tex) self.assertEqual(talpha, alpha) render.destroy_texture(tex) self.assertRaises(sdl.SDLError, render.set_texture_color_mod, tex, 10, 20, 30) self.assertRaises(sdl.SDLError, render.get_texture_color_mod, tex) render.destroy_renderer(renderer) video.destroy_window(window)