[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] [bug] blit_array() fails with a 24 bit surface



That may be a fundamental weakness of the method used, seeing as how
pixels*d doesn't work on 24-bit surfaces.  If so, it should definitely
give a better error message and be mentioned in the docs.

-FM

On Wed, Oct 22, 2008 at 3:34 PM, Lenard Lindstrom <len-l@xxxxxxxxx> wrote:
> I've just filed bug 24 at http://pygame.motherhamster.org/bugzilla/
>
> Pygame-1.9.0a0 (rev. 1668)
> numpy 1.0.4
> Python 2.5.2
>
> pygame.surfarray.blit_array() raises an exception when a 3d array is copied
> to a 24 bit surface.
>
> Test Program:
>
> import pygame
>
> pygame.surfarray.use_arraytype('numpy')
> s = pygame.Surface((10,10), 0, 24)
> a = pygame.surfarray.array3d(s)
> pygame.surfarray.blit_array(s, a)
>
>
> Exception:
> Traceback (most recent call last):
>  File "array_bug.py", line 6, in <module>
>   pygame.surfarray.blit_array(s, a)
>  File "C:\PRG\PYTHON25\lib\site-packages\pygame\surfarray.py", line 260, in
> bli
> t_array
>   return numpysf.blit_array (surface, array)
>  File "C:\PRG\PYTHON25\lib\site-packages\pygame\_numpysurfarray.py", line
> 381,
> in blit_array
>   (array[:,:,1::3] >> losses[1] << shifts[1]) | \
> TypeError: unsupported operand type(s) for >>: 'float' and 'int'
>
>
> I will see what I can do with it.
>
> --
> Lenard Lindstrom
> <len-l@xxxxxxxxx>
>
>