Manipulating pixels in SDL

This topic is 4503 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

How would I manipulate a pixels (RGB) color value in SDL, based on what that color value is? I came this far, if i haven't made any mistakes:
//Putting a pixel somewhere, given that:
//...Image is an SDL_Surface*
//...x and y are the integer coordinates
//...Pixel is a Uint32 pixel value
Uint8* Ptr = (Uint8*) Image->pixels + y * Image->pitch + x * 4;
*(Uint32 *)Ptr = Pixel;
//Getting a pixel I assume one would simply do:
Uint32 TempPixel = *(Uint32 *)Ptr;  //Now temppixel == pixel

//Now I'm sort of stuck. I would like to, for example, change the RGB values of a pixel so that,
//all R, G and B values will be 255-R, etc. This will turn the pixel into it's negative.

//According to (my understanding of) the documentation:
TempPixel = Pixel >> Image->format->Rshift;
TempPixel = Pixel << Image->format->Rloss;
//Will yield the Uint8 value of the red component in TempPixel


Will I have to go through all this for every color component, and then call SDL_MapRGB? I just have a very basic understanding of bitwise operations, maybe I'm just on a wrong track here. [Edited by - DeadXorAlive on October 22, 2005 8:35:07 AM]

Share on other sites
Ah yes. I did check the wiki, but I just overlooked the SDL_GetRGB function, how dumb. Thank you very much.

EDIT: Just want to add how happy I am now I can manipulate those pixels! [grin]