diff options
author | Olivier Gayot <duskcoder@gmail.com> | 2015-01-11 02:02:07 +0100 |
---|---|---|
committer | Olivier Gayot <duskcoder@gmail.com> | 2015-01-11 03:01:46 +0100 |
commit | 65364d2e2f40807fdd03ade25917f728adc0ef77 (patch) | |
tree | e2d2e5d0a7e329f50009a086959b4226fe27dde7 /rpg.c | |
parent | d590bfdcdfa8799439cffa41fc74346e9923b6e7 (diff) |
coding rules: stop at 78 colsrewrite
Signed-off-by: Olivier Gayot <duskcoder@gmail.com>
Diffstat (limited to 'rpg.c')
-rw-r--r-- | rpg.c | 181 |
1 files changed, 76 insertions, 105 deletions
@@ -12,7 +12,68 @@ struct rpg_t rpg_g; -static void colorize_surface(SDL_Surface *surf, const SDL_PixelFormat *fmt, Uint32 incr) +static Uint32 get_pixel(SDL_Surface *surface, int x, int y) +{ + int Bpp = surface->format->BytesPerPixel; + Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * Bpp; + + switch (Bpp) + { + case 1: + return *p; + + case 2: + return *(Uint16 *)p; + + case 3: + if(SDL_BYTEORDER == SDL_BIG_ENDIAN) { + return p[0] << 16 | p[1] << 8 | p[2]; + } else { + return p[0] | p[1] << 8 | p[2] << 16; + } + case 4: + return *(Uint32 *)p; + + default: + return 0; + } +} + +static void set_pixel(SDL_Surface *surface, int x, int y, Uint32 pixel) +{ + int Bpp = surface->format->BytesPerPixel; + Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * Bpp; + + switch (Bpp) + { + case 1: + *p = pixel; + break; + + case 2: + *(Uint16 *)p = pixel; + break; + + case 3: + if(SDL_BYTEORDER == SDL_BIG_ENDIAN) { + p[0] = (pixel >> 16) & 0xff; + p[1] = (pixel >> 8) & 0xff; + p[2] = pixel & 0xff; + } else { + p[0] = pixel & 0xff; + p[1] = (pixel >> 8) & 0xff; + p[2] = (pixel >> 16) & 0xff; + } + break; + + case 4: + *(Uint32 *)p = pixel; + break; + } +} + +static void +colorize_surface(SDL_Surface *surf, const SDL_PixelFormat *fmt, Uint32 incr) { int buffer = 0; Uint8 r, g, b; @@ -24,7 +85,7 @@ static void colorize_surface(SDL_Surface *surf, const SDL_PixelFormat *fmt, Uint for (int y = 0; y < surf->h; ++y) { for (int x = 0; x < surf->w; ++x) { - Uint32 pixel = obtenirPixel(surf, x, y); + Uint32 pixel = get_pixel(surf, x, y); SDL_GetRGB(pixel, fmt, &r, &g, &b); @@ -47,7 +108,7 @@ static void colorize_surface(SDL_Surface *surf, const SDL_PixelFormat *fmt, Uint b = buffer; pixel = SDL_MapRGB(fmt, r, g, b); - definirPixel(surf, x, y, pixel); + set_pixel(surf, x, y, pixel); } } @@ -57,7 +118,7 @@ static void colorize_surface(SDL_Surface *surf, const SDL_PixelFormat *fmt, Uint static void colorize_every_red_surface(SURFACES *surfaces) { - const SDL_PixelFormat *fmt = surfaces->Pecran->format; + const SDL_PixelFormat *fmt = surfaces->screen->format; Uint32 red = SDL_MapRGB(fmt, 30, 0, 0); colorize_surface(surfaces->red_paladin, fmt, red); @@ -107,7 +168,8 @@ static int rpg_load_images(SURFACES *surfaces) static int rpg_initialize_sprites(void) { #define set_color_key(surf_, r_, g_, b_) \ - SDL_SetColorKey((surf_), SDL_SRCCOLORKEY, SDL_MapRGB(rpg_g.surfaces.screen->format, (r_), (g_), (b_))) + SDL_SetColorKey((surf_), SDL_SRCCOLORKEY, \ + SDL_MapRGB(rpg_g.surfaces.screen->format, (r_), (g_), (b_))) #define load_sprite(surf_) \ tmp = SDL_DisplayFormat((surf_)); \ @@ -157,7 +219,8 @@ static int rpg_initialize_sprites(void) load_sprite(rpg_g.surfaces.background); rpg_g.surfaces.Pfondjeu = rpg_g.surfaces.background; - rpg_g.surfaces.red_warrior_gobelin = SDL_DisplayFormat(rpg_g.surfaces.Pgobelin); + rpg_g.surfaces.red_warrior_gobelin = + SDL_DisplayFormat(rpg_g.surfaces.Pgobelin); if (rpg_g.surfaces.red_warrior_gobelin == NULL) return -1; @@ -176,7 +239,8 @@ static int rpg_initialize_sprites(void) return 0; } -static void Finitialiserpositions (POSITIONS *positions, const SURFACES *surfaces) +static void +Finitialiserpositions(POSITIONS *positions, const SURFACES *surfaces) { int y = 0, z = 0; @@ -219,7 +283,9 @@ static void Finitialiserpositions (POSITIONS *positions, const SURFACES *surface } } - /* TODO this is pretty uggly .. and we can have multiple cursors as well */ + /* + * TODO this is pretty uggly .. and we can have multiple cursors as well + */ positions->last_cursor = (SDL_Rect){0, 0, 0, 0}; } @@ -251,7 +317,8 @@ static int rpg_init(int width, int height) return -1; } - rpg_g.screen = SDL_SetVideoMode(width, height, 0, SDL_HWSURFACE | SDL_DOUBLEBUF); + rpg_g.screen = SDL_SetVideoMode(width, height, 0, + SDL_HWSURFACE | SDL_DOUBLEBUF); if (rpg_g.screen == NULL) { fprintf(stderr, "SDL_SetVideoMode: %s\n", SDL_GetError()); @@ -343,99 +410,3 @@ int main (int argc, char *argv[]) return 0; } - - -/* ********************************************************************* */ -/*obtenirPixel : permet de récupérer la couleur d'un pixel -Paramètres d'entrée/sortie : -SDL_Surface *surface : la surface sur laquelle on va récupérer la couleur d'un pixel -int x : la coordonnée en x du pixel à récupérer -int y : la coordonnée en y du pixel à récupérer - -Uint32 resultat : la fonction renvoie le pixel aux coordonnées (x,y) dans la surface -*/ -Uint32 obtenirPixel(SDL_Surface *surface, int x, int y) -{ - /*nbOctetsParPixel représente le nombre d'octets utilisés pour stocker un pixel. - En multipliant ce nombre d'octets par 8 (un octet = 8 bits), on obtient la profondeur de couleur - de l'image : 8, 16, 24 ou 32 bits.*/ - int nbOctetsParPixel = surface->format->BytesPerPixel; - /* Ici p est l'adresse du pixel que l'on veut connaitre */ - /*surface->pixels contient l'adresse du premier pixel de l'image*/ - Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * nbOctetsParPixel; - - /*Gestion différente suivant le nombre d'octets par pixel de l'image*/ - switch(nbOctetsParPixel) - { - case 1: - return *p; - - case 2: - return *(Uint16 *)p; - - case 3: - /*Suivant l'architecture de la machine*/ - if(SDL_BYTEORDER == SDL_BIG_ENDIAN) - return p[0] << 16 | p[1] << 8 | p[2]; - else - return p[0] | p[1] << 8 | p[2] << 16; - - case 4: - return *(Uint32 *)p; - - /*Ne devrait pas arriver, mais évite les erreurs*/ - default: - return 0; - } -} - -/* ********************************************************************* */ -/*definirPixel : permet de modifier la couleur d'un pixel -Paramètres d'entrée/sortie : -SDL_Surface *surface : la surface sur laquelle on va modifier la couleur d'un pixel -int x : la coordonnée en x du pixel à modifier -int y : la coordonnée en y du pixel à modifier -Uint32 pixel : le pixel à insérer -*/ -void definirPixel(SDL_Surface *surface, int x, int y, Uint32 pixel) -{ - /*nbOctetsParPixel représente le nombre d'octets utilisés pour stocker un pixel. - En multipliant ce nombre d'octets par 8 (un octet = 8 bits), on obtient la profondeur de couleur - de l'image : 8, 16, 24 ou 32 bits.*/ - int nbOctetsParPixel = surface->format->BytesPerPixel; - /*Ici p est l'adresse du pixel que l'on veut modifier*/ - /*surface->pixels contient l'adresse du premier pixel de l'image*/ - Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * nbOctetsParPixel; - - /*Gestion différente suivant le nombre d'octets par pixel de l'image*/ - switch(nbOctetsParPixel) - { - case 1: - *p = pixel; - break; - - case 2: - *(Uint16 *)p = pixel; - break; - - case 3: - /*Suivant l'architecture de la machine*/ - if(SDL_BYTEORDER == SDL_BIG_ENDIAN) - { - p[0] = (pixel >> 16) & 0xff; - p[1] = (pixel >> 8) & 0xff; - p[2] = pixel & 0xff; - } - else - { - p[0] = pixel & 0xff; - p[1] = (pixel >> 8) & 0xff; - p[2] = (pixel >> 16) & 0xff; - } - break; - - case 4: - *(Uint32 *)p = pixel; - break; - } -} |