Mercurial > hg > pub > prymula > com
diff lamertetris/sources/shape.C @ 0:2787f5e749ae
INIT
author | prymula <prymula76@outlook.com> |
---|---|
date | Thu, 21 Sep 2023 22:33:57 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lamertetris/sources/shape.C Thu Sep 21 22:33:57 2023 +0200 @@ -0,0 +1,82 @@ +#include "shape.h" + +Shape::Shape() {} + +SDL_Surface * Shape::createBoxMask(int width, int height) { + + /* Create a 32-bit surface with the bytes of each pixel in R,G,B,A order, + as expected by OpenGL for textures */ + SDL_Surface *surface; + Uint32 rmask, gmask, bmask, amask; + //int width=80; + //int height=80; + + /* SDL interprets each pixel as a 32-bit number, so our masks must depend + on the endianness (byte order) of the machine */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + rmask = 0xff000000; + gmask = 0x00ff0000; + bmask = 0x0000ff00; + amask = 0x000000ff; +#else + rmask = 0x000000ff; + gmask = 0x0000ff00; + bmask = 0x00ff0000; + amask = 0xff000000; +#endif + + surface = SDL_CreateRGBSurface(0, width, height, 32, + rmask, gmask, bmask, amask); + + if (surface == NULL) { + SDL_Log("SDL_CreateRGBSurface() failed: %s", SDL_GetError()); + exit(1); + } + + /* or using the default masks for the depth: */ + //surface = SDL_CreateRGBSurface(0, width, height, 32, 0, 0, 0, 0); + + + return surface; +} + + +SDL_Surface * Shape::createField(int w,int h, int r, int g, int b){ + + SDL_Surface *s; + //s=Szlam::createBoxMask(w,h); + s=Shape::createBoxMask(w,h); + SDL_FillRect(s, NULL, SDL_MapRGB(s->format, r, g, b)); + return s; +} + +void Shape::setColor(int color, int *r, int *g, int*b){ + + switch(color){ + case 0: + *r=255, *g=255, *b=255; + break; + case 1: + *r=255, *g=0, *b=0; //czerwony + break; + case 2: + *r=0, *g=255, *b=0; //zielony + break; + case 3: + *r=0, *g=0, *b=255; //niebieski + break; + case 4: + *r=0, *g=255, *b=255; //seledynowy + break; + case 5: + *r=255, *g=255, *b=0; //żółty + break; + case 6: + *r=170, *g=0, *b=255; //fiolet + break; + case 7: + *r=113, *g=255, *b=0; //fiolet + break; + + } +}