◆ 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 );
|