SDL

Simple DirectMedia Layer

Instalação

Linux (Ubuntu)

sudo apt-get install libsdl11.2-dev

Exemplo

Para compilar : gcc ex1.c -o ex1 -Wall `sdl-config —cflags —libs`

#include <SDL.h> //usaremos funcoes da SDL
 
#define SCREEN_W 640 //tamanho da janela que sera criada
#define SCREEN_H 480
 
void put_pixel(SDL_Surface* surface, int x, int y, Uint8 r, Uint8 g, Uint8 b)
{
    int offset = y * surface->w + x;
    Uint32 color = SDL_MapRGB(surface->format, r, g, b);
 
    if(surface->format->BytesPerPixel == 1)
        *( ((Uint8*)surface->pixels) + offset) = color;
    else if(surface->format->BytesPerPixel == 2)
        *( ((Uint16*)surface->pixels) + offset) = color;
    else
        *( ((Uint32*)surface->pixels) + offset) = color;
}
int cor = 0;
int red = 255;
int green = 255;
int blue = 255;
 
int main(int argc, char** argv) //funcao de entrada
{
    SDL_Surface* screen; //superficie que representa a tela do computador
    SDL_Event event; //um evento enviado pela SDL
    int quit = 0; //devemos encerrar o programa?
 
    SDL_Init(SDL_INIT_VIDEO); //inicializar a SDL
    screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_SWSURFACE); //criar uma janela 640x480x16bits
 
    while(!quit) //rodar enquanto nao for para encerrar :)
    {
        while(SDL_PollEvent(&event)) //checar eventos
        {
       switch (event.type) {
            case SDL_MOUSEMOTION:
                //printf("Mouse foi movido de %d,%d para (%d,%d)\n", event.motion.xrel, event.motion.yrel, event.motion.x, event.motion.y);
                put_pixel(screen, event.motion.x, event.motion.y, red, green, blue);
                break;
            case SDL_MOUSEBUTTONDOWN:
                printf("botão %d do mouse pressionado em (%d,%d)\n",event.button.button, event.button.x, event.button.y);
                if(cor==0) {
               cor=1;
            red=0;
            green=255;
            blue=0;
        }else{
            if(cor==1){
                cor=2;
                red=0;
                green=0;
                blue=255;    
            }else {
                cor=0;
                red=255;
                green=0;
                blue=0;    
            }
        }
                break;
            case SDL_QUIT:
                exit(0);
           }
        }
 
        SDL_Flip(screen); //atualizar a tela
    }
 
    SDL_Quit(); //encerrar a SDL
 
    return 0;
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.