10 E:\Documents and Settings\Administrador\Escritorio\main.c syntax error before '*' token
y este es el programa:
Código C:
Ver original
#ifndef _PIXELS_H_ #define _PIXELS_H_ enum colores {R, G, B}; // Esta función sustituye el color del píxel (x, y) de la superficie // surface por el color que recibe en el parámtro pixel void PutPixel(SDL_Surface *superficie, int x, int y, Uint32 pixel); // Esta función devuelve el color del píxel de la // posición (x, y) de la superficie Uint32 GetPixel(SDL_Surface *superficie, int x, int y); #endif #include <SDL/SDL.h> #include "pixels.h" void PutPixel(SDL_Surface *superficie, int x, int y, Uint32 pixel) { // Obtenemos la profundida de color int bpp = superficie->format->BytesPerPixel; // Obtenemos la posición del píxel a sustituir Uint8 *p = (Uint8 *)superficie->pixels + y * superficie->pitch + x*bpp; // Según sea la profundidad de color switch (bpp) { case 1: // 8 bits (256 colores) *p = pixel; break; case 2: // 16 bits (65536 colores o HigColor) *(Uint16 *)p = pixel; break; case 3: // 24 bits (True Color) // Depende de la naturaleza del sistema // Puede ser Big Endian o Little Endian if (SDL_BYTEORDER == SDL_BIG_ENDIAN) { // Calculamos cada una de las componentes de color // 3 bytes, 3 posiciones p[R]=(pixel >> 16) & 0xFF; p[G]=(pixel >> 8) & 0xFF; p[B]=pixel & 0xFF; } else { // Calculamos cada una de las componentes de color // 3 byes, 3 posiciones p[R]=pixel & 0xFF; p[G]=(pixel >> 8) & 0xFF; p[B]=(pixel >> 16) & 0xFF; } break; case 4: // 32 bits (True Color + Alpha) *(Uint32 *) p = pixel; break; } } Uint32 GetPixel(SDL_Surface *superficie, int x, int y) { // Obtenemos la profunidad de color int bpp = superficie->format->BytesPerPixel; // Obtenemos la posición del píxel a consultar Uint8 *p = (Uint8 *)superficie->pixels + \ y * superficie->pitch + x * bpp; // Según sea la profundidad de color switch (bpp) { case 1: // 256 colores return *p; case 2: // 65536 colores return *(Uint16 *)p; case 3: // True Color // Según la naturaleza del sistema if (SDL_BYTEORDER == SDL_BIG_ENDIAN) // OR entre los distintos componentes del color return p[R] << 16 | p[G] << 8 | p[B]; else // OR entre los distintos componentes del color return p[R] | p[G] << 8 | p[B] << 16; case 4: // True Color + Alpha return *(Uint32 *)p; default: return 0; } }