This repository has been archived on 2025-03-20. You can view files and clone it, but cannot push or open issues or pull requests.
The-Powder-Toy/src/graphics/Pixel.h
2022-10-11 20:11:14 +02:00

44 lines
1.4 KiB
C

#ifndef PIXEL_H
#define PIXEL_H
#define PIXELCHANNELS 3
#ifdef PIX16
# define PIXELSIZE 2
# define PIXPACK(x) ((((x)>>8)&0xF800)|(((x)>>5)&0x07E0)|(((x)>>3)&0x001F)) //16bit RGB in 16bit int: ????
# define PIXRGB(r,g,b) ((((r)<<8)&0xF800)|(((g)<<3)&0x07E0)|(((b)>>3)&0x001F))
# define PIXR(x) (((x)>>8)&0xF8)
# define PIXG(x) (((x)>>3)&0xFC)
# define PIXB(x) (((x)<<3)&0xF8)
#else
# define PIXELSIZE 4
# ifdef PIX32BGRA
# define PIXPACK(x) ((((x)>>16)&0x0000FF)|((x)&0x00FF00)|(((x)<<16)&0xFF0000)) //24bit BGR in 32bit int: 00BBGGRR
# define PIXRGB(r,g,b) (((b)<<16)|((g)<<8)|((r)))// (((b)<<16)|((g)<<8)|(r))
# define PIXR(x) ((x)&0xFF)
# define PIXG(x) (((x)>>8)&0xFF)
# define PIXB(x) ((x)>>16)
# else
# ifdef PIX32BGRA
# define PIXPACK(x) ((((x)>>8)&0x0000FF00)|(((x)<<8)&0x00FF0000)|(((x)<<24)&0xFF000000)) //32bit BGRA in 32bit int: BBGGRRAA
# define PIXRGB(r,g,b) (((b)<<24)|((g)<<16)|((r)<<8))
# define PIXR(x) (((x)>>8)&0xFF)
# define PIXG(x) (((x)>>16)&0xFF)
# define PIXB(x) (((x)>>24)&0xFF)
# else
# define PIXPACK(x) (x) //24bit RGB in 32bit int: 00RRGGBB.
# define PIXRGB(r,g,b) (((r)<<16)|((g)<<8)|(b))
# define PIXR(x) (((x)>>16)&0xFF)
# define PIXG(x) (((x)>>8)&0xFF)
# define PIXB(x) ((x)&0xFF)
# endif
# endif
#endif
#ifdef PIX16
typedef unsigned short pixel;
#else
typedef unsigned int pixel;
#endif
#endif // PIXEL_H