Beispiel #1
0
    def test_IMG_LoadTexture(self):
        sf = surface.SDL_CreateRGBSurface(0, 10, 10, 32, 0, 0, 0, 0)
        rd = render.SDL_CreateSoftwareRenderer(sf)

        fname = "surfacetest.%s"
        for fmt in formats:
            filename = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                    "resources", fname % fmt)
            tex = sdlimage.IMG_LoadTexture(rd, filename.encode("utf-8"))
            self.assertIsInstance(tex.contents, render.SDL_Texture)
            render.SDL_DestroyTexture(tex)

        #self.assertRaises(sdl.SDLError, sdlimage.load_texture, rd,
        #                  RESOURCES.get_path("rwopstest.txt"))

        #self.assertRaises(sdl.SDLError, sdlimage.load_texture, rd, None)
        #self.assertRaises(sdl.SDLError, sdlimage.load_texture, rd, 1234)
        #self.assertRaises((AttributeError, TypeError),
        #                  sdlimage.load_texture, None,
        #                  RESOURCES.get_path("surfacetest.bmp"))
        #self.assertRaises((AttributeError, TypeError),
        #                  sdlimage.load_texture, "Test",
        #                  RESOURCES.get_path("surfacetest.bmp"))
        #self.assertRaises((AttributeError, TypeError),
        #                  sdlimage.load_texture, 1234,
        #                  RESOURCES.get_path("surfacetest.bmp"))

        render.SDL_DestroyRenderer(rd)
        surface.SDL_FreeSurface(sf)
Beispiel #2
0
    def load_texture(self, fname, composite_op=None):
        # support for blacksrc
        tsurface = None

        if (not _HASSDLIMAGE) or (composite_op is not None
                                  and composite_op != "None"):
            tsurface = sdl2.ext.image.load_image(fname)
            if not tsurface:
                raise sdl2.ext.SDLError()

            if (composite_op is not None and composite_op != "None"):
                if (composite_op == "blacksrc"):
                    trans_color = (0, 0, 0)
                elif (composite_op == "greensrc"):
                    trans_color = (0, 255, 0)
                elif (composite_op == "magentasrc"):
                    trans_color = (255, 0, 255)
                else:
                    raise ValueError, "Composite_op '%s' not recognized/supported." % composite_op

                trans_color = convert_to_color(trans_color)
                sf = tsurface
                fmt = sf.format.contents

                if (sf.format.contents.BytesPerPixel == 4):
                    trans_color = sdl2.pixels.SDL_MapRGBA(
                        fmt, trans_color.r, trans_color.g, trans_color.b,
                        trans_color.a)
                else:
                    trans_color = sdl2.pixels.SDL_MapRGB(
                        fmt, trans_color.r, trans_color.g, trans_color.b)

                ret = sdl2.surface.SDL_SetColorKey(tsurface, sdl2.SDL_TRUE,
                                                   trans_color)
                if ret == -1:
                    raise sdl2.ext.SDLError()

            texture = sdl2.render.SDL_CreateTextureFromSurface(
                self.texture_renderer.renderer, tsurface)
        else:  # we have SDL image...
            texture = sdlimage.IMG_LoadTexture(self.texture_renderer.renderer,
                                               fname)

        if not texture:
            raise sdl2.ext.SDLError()
        t = sdl2.ext.TextureSprite(texture.contents)

        if (tsurface):
            sdl2.surface.SDL_FreeSurface(tsurface)

        return t
Beispiel #3
0
 def load_image(self, name, src):
     self._images[name] = sdlimage.IMG_LoadTexture(self.renderer, str.encode(src))