◆ MLV_get_image_data()
Renvoie les données internes de l'image. Cette fonction renvoie un pointeur vers la structure de donnée de la libriaire SDL codant une image. N'utilisez cette fonction que si vous souhaitez effectuer une opération sur une image qui n'existe pas dans la bibliothèque MLV. En effet, modifier les données internes d'une image de type MLV_Image peut corrompre le fonctionnement de la bibliothèque MLV. Vous pouvez alors utiliser les routines de la lirairie SDL pour modifier l'image. (http://libsdl.org) Voici un exemple de code montrant comment il est possible de récupérer les composantes rouge, vert, bleu et alpha du pixel (3,4) de l'image. int x=3, y=4;
SDL_Surface* surface = MLV_get_image_data( image );
Uint32 red, blue, green, alpha;
// Extracting color components from a 32-bit color value
SDL_PixelFormat *fmt;
Uint32 pixel;
SDL_LockSurface(surface);
fmt = surface->format;
pixel = *(((Uint32*) surface->pixels)+ y*surface->pitch/4 + x );
// Get Red component
red = pixel & fmt->Rmask; // Isolate red component
red = red >> fmt->Rshift; // Shift it down to 8-bit
red = red << fmt->Rloss; // Expand to a full 8-bit number
// Get Green component
green = pixel & fmt->Gmask; // Isolate green component
green = green >> fmt->Gshift; // Shift it down to 8-bit
green = green << fmt->Gloss; // Expand to a full 8-bit number
// Get Blue component
blue = pixel & fmt->Bmask; // Isolate blue component
blue = blue >> fmt->Bshift; // Shift it down to 8-bit
blue = blue << fmt->Bloss; // Expand to a full 8-bit number
// Get Alpha component
alpha = pixel & fmt->Amask; // Isolate alpha component
alpha = alpha >> fmt->Ashift; // Shift it down to 8-bit
alpha = alpha << fmt->Aloss; // Expand to a full 8-bit number
MLV_unlock_image( image );
|