@@ -1582,66 +1582,54 @@ surf_convert(pgSurfaceObject *self, PyObject *args)
15821582static SDL_Surface *
15831583pg_DisplayFormat (SDL_Surface * surface )
15841584{
1585- SDL_PixelFormat * default_format = pg_GetDefaultConvertFormat ();
1585+ PG_PixelFormatEnum default_format = pg_GetDefaultConvertFormat ();
15861586 if (!default_format ) {
15871587 SDL_SetError (
15881588 "No convert format has been set, try display.set_mode()"
15891589 " or Window.get_surface()." );
15901590 return NULL ;
15911591 }
1592- return PG_ConvertSurface (surface , default_format );
1592+ return PG_ConvertSurfaceFormat (surface , default_format );
15931593}
15941594
15951595static SDL_Surface *
15961596pg_DisplayFormatAlpha (SDL_Surface * surface )
15971597{
1598- SDL_PixelFormat * dformat ;
1599- Uint32 pfe ;
1600- Uint32 amask = 0xff000000 ;
1601- Uint32 rmask = 0x00ff0000 ;
1602- Uint32 gmask = 0x0000ff00 ;
1603- Uint32 bmask = 0x000000ff ;
1604-
1605- dformat = pg_GetDefaultConvertFormat ();
1598+ PG_PixelFormatEnum pfe = SDL_PIXELFORMAT_ARGB8888 ;
1599+ PG_PixelFormatEnum dformat = pg_GetDefaultConvertFormat ();
16061600 if (!dformat ) {
16071601 SDL_SetError (
16081602 "No convert format has been set, try display.set_mode()"
16091603 " or Window.get_surface()." );
16101604 return NULL ;
16111605 }
16121606
1613- switch (PG_FORMAT_BytesPerPixel (dformat )) {
1614- case 2 :
1615- /* same behavior as SDL1 */
1616- if ((dformat -> Rmask == 0x1f ) &&
1617- (dformat -> Bmask == 0xf800 || dformat -> Bmask == 0x7c00 )) {
1618- rmask = 0xff ;
1619- bmask = 0xff0000 ;
1620- }
1607+ switch (dformat ) {
1608+ #if SDL_VERSION_ATLEAST (3 , 0 , 0 )
1609+ case SDL_PIXELFORMAT_XBGR1555 :
1610+ #else
1611+ case SDL_PIXELFORMAT_BGR555 :
1612+ #endif
1613+ case SDL_PIXELFORMAT_ABGR1555 :
1614+ case SDL_PIXELFORMAT_BGR565 :
1615+ case PG_PIXELFORMAT_XBGR8888 :
1616+ case SDL_PIXELFORMAT_ABGR8888 :
1617+ pfe = SDL_PIXELFORMAT_ABGR8888 ;
16211618 break ;
1622- case 3 :
1623- case 4 :
1624- /* keep the format if the high bits are free */
1625- if ((dformat -> Rmask == 0xff ) && (dformat -> Bmask == 0xff0000 )) {
1626- rmask = 0xff ;
1627- bmask = 0xff0000 ;
1628- }
1629- else if (dformat -> Rmask == 0xff00 &&
1630- (dformat -> Bmask == 0xff000000 )) {
1631- amask = 0x000000ff ;
1632- rmask = 0x0000ff00 ;
1633- gmask = 0x00ff0000 ;
1634- bmask = 0xff000000 ;
1635- }
1619+
1620+ case SDL_PIXELFORMAT_BGRX8888 :
1621+ case SDL_PIXELFORMAT_BGRA8888 :
1622+ #if SDL_BYTEORDER == SDL_BIG_ENDIAN
1623+ case SDL_PIXELFORMAT_BGR24 :
1624+ #else
1625+ case SDL_PIXELFORMAT_RGB24 :
1626+ #endif
1627+ pfe = SDL_PIXELFORMAT_BGRA8888 ;
16361628 break ;
1637- default : /* ARGB8888 */
1629+
1630+ default :
16381631 break ;
16391632 }
1640- pfe = SDL_MasksToPixelFormatEnum (32 , rmask , gmask , bmask , amask );
1641- if (pfe == SDL_PIXELFORMAT_UNKNOWN ) {
1642- SDL_SetError ("unknown pixel format" );
1643- return NULL ;
1644- }
16451633 return PG_ConvertSurfaceFormat (surface , pfe );
16461634}
16471635
0 commit comments