MLV_Image*MLV_copy_image(constMLV_Image*image)
Copie une image. Cette fonction créé une nouvelle image qui est la copie conforme de l'image passée en
paramètre. La gestion de la mémoire de l'image créée est laissée à l'utilisateur.
Paramètresimage L'image à copier.
Renvoie
La copie de l'image.
MLV_Image*MLV_copy_partial_image(constMLV_Image*image,intx,inty,intwidth,intheight)
Copie une partie de l'image. Cette fonction créé une nouvelle image qui est la copie conforme d'une
partie de l'image passée en paramètre. La gestion de la mémoire de l'image créée est laissée à
l'utilisateur.
Paramètresimage L'image à copier.
x Abscisse du sommet Nord-Ouest de la partie de l'image à copier
y Ordonnée du sommet Nord-Ouest de la partie de l'image à copier
width Largeur de la partie de l'image à copier
height Hauteur de la partie de l'image à copier
Renvoie
La copie de l'image.
Exemplesadvanced/09_animation.c.
MLV_Image*MLV_create_image(intwidth,intheight)
Créer une image de composante alpha opaque.
Paramètreswidth Largeur de l'image
height Hauteur de l'image
Renvoie
L'image créé.
Exemplesadvanced/08_zone_click.c.
voidMLV_draw_image(constMLV_Image*image,intx,inty)
Dessine une image donnée à une position donnée de la fenêtre.
Paramètresimage Image à dessiner.
x Coordonnée en X de la position dans la fenêtre de sommet Nord-Ouest de l'image.
y Coordonnée en Y de la position dans la fenêtre du sommet Nord-Ouest de l'image.
Exemplesadvanced/06_image.c, advanced/07_transparency.c, et advanced/08_zone_click.c.
voidMLV_draw_image_on_image(constMLV_Image*source_image,MLV_Image*destination_image,intdestination_x,intdestination_y)
Dessine une image dans une image destination.
Paramètressource_image Image source
destination_image Image destination
destination_x Abscisse de la position où devra être recopier l'image. Il s'agit de la futur position
du sommet nord-Ouest de la portion d'image à recopier.
destination_y Ordonnée de la position où devra être recopier l'image. Il s'agit de la futur position
du sommet nord-Ouest de la portion d'image à recopier.
voidMLV_draw_partial_image(constMLV_Image*image,intx_source,inty_source,intwidth_source,intheight_source,intx,inty)
Dessine une partie d'une image donnée à une position donnée sur la fenêtre.
Paramètresimage L'image à afficher sur la fenêtre
x_source La coordonnée en X du sommet Nord-Ouest de la partie de l'image à afficher.
y_source La coordonnée en Y du sommet Nord-Ouest de la partie de l'image à afficher.
width_source La largeur de la partie de l'image à afficher.
height_source La hauteur de la partie de l'image à afficher.
x Coordonnée en X de la position dans la fenêtre du sommet Nord-Ouest de la partie de l'image à
afficher.
y Coordonnée en Y de la position dans la fenêtre du sommet Nord-Ouest de la partie de l'image à
afficher.
voidMLV_draw_partial_image_on_image(constMLV_Image*source_image,intsource_x,intsource_y,intwidth,intheight,MLV_Image*destination_image,intdestination_x,intdestination_y)
Dessine une image dans une image destination.
Paramètressource_image Image source
source_x Abscisse du sommet nord-Ouest de la position de la portion d'image à recopier
source_y Ordonné du sommet nord-Ouest de la position de la portion d'image à recopier
width Largeur de la position à recopier
height Hauteur de la position à recopier
destination_image Image destination
destination_x Abscisse de la position où devra être recopier l'image. Il s'agit de la futur position
du sommet nord-Ouest de la portion d'image à recopier.
destination_y Ordonnée de la position où devra être recopier l'image. Il s'agit de la futur position
du sommet nord-Ouest de la portion d'image à recopier.
voidMLV_free_image(MLV_Image*image)
Libère la mémoire utilisée par l'image.
Paramètresimage Image à supprimer de la mémoire
Exemplesadvanced/06_image.c, advanced/07_transparency.c, advanced/08_zone_click.c, et
advanced/09_animation.c.
SDL_Surface*MLV_get_image_data(MLV_Image*image)
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 );
Paramètresimage L'image dont vous souhaitez récuperer les données internes.
Renvoie
un pointeur vers une image de la bibliothèque SDL.
intMLV_get_image_height(constMLV_Image*image)
Retourne la hauteur d'une image donnée.
Paramètresimage L'image à analyser.
Renvoie
La hauteur de l'image
voidMLV_get_image_size(constMLV_Image*image,int*width,int*height)
Retourne la taille d'une image donnée.
Paramètresimage L'image pour laquelle la fonction doit retourner sa taille.
width La largeur de l'image.
height La hauteur de l'image.
Exemplesadvanced/06_image.c, et advanced/08_zone_click.c.
intMLV_get_image_width(constMLV_Image*image)
Retourne la largeur d'une image donnée.
Paramètresimage L'image à analyser.
Renvoie
La largeur de l'image.
voidMLV_get_pixel(intx,inty,int*red,int*green,int*blue,int*alpha)
Renvoie la couleur du pixel de l'écran pour une position donnée. Les paramètres red, blue, green et alpha
peuvent être égaux à 0. Dans ce cas, ils sont ignorés.
Paramètresx Coordonnée en X de la position du pixel.
y Coordonnée en Y de la position du pixel.
red Composante rouge du pixel.
green Composante verte du pixel.
blue Composante bleue du pixel.
alpha Composante alpha (transparence) du pixel.
voidMLV_get_pixel_on_image(constMLV_Image*image,intx,inty,int*red,int*green,int*blue,int*alpha)
Renvoie la couleur du pixel présent à une position donnée d'une image donnée. Les paramètres red, blue,
green et alpha peuvent être égaux à NULL. Dans ce cas, ils sont ignorés.
Paramètresimage Image à inspecter.
x Coordonnée en X de la position du pixel à inspecter.
y Coordonnée en Y de la position du pixel à inspecter.
red Composante rouge du pixel.
green Composante verte du pixel.
blue Composante bleue du pixel.
alpha Composante alpha (transparence) du pixel.
Exemplesadvanced/08_zone_click.c.
MLV_Image*MLV_get_screen()
Renvoie l'image qui se trouve à l'écran.
Renvoie
L'image qui est affiché à l'écran.
voidMLV_horizontal_image_mirror(MLV_Image*image)
Modifie l'image en réalisant une réflexion horizontale.
Paramètresimage L'image à modifier.
MLV_Image*MLV_load_image(constchar*file_image)
Charge en mémoire une image contenue dans un fichier. Cette fonction permet de charger les images des
formats suivants: ICO(Icon)/CUR(Cursor)/BMP, PNM (PPM/PGM/PBM), XPM, LBM(IFF ILBM), PCX, GIF, JPEG, PNG,
TGA, TIFF, and XV.
Bogue
Cette fonction provoque une erreur de segmentation si elle est utilisée avant MLV_create_window().
Pour l'instant, nous vous conseillons d'utiliser cette fonction apres MLV_create_window().
Bogue
Il est possible que cette fonction n'arrive pas à charger correctement les images qui ne sont pas en
32 bits (RGBA) - bug à tester.
Bogue
BUG PRESENT SOUS WINDOWS ET MACOS X : Lorsque la composante alpha d'un pixel est à 0, MLV_load_image
met à 0 les composantes Rouge, Verte et bleue du pixel associé. Ce bug provient de la bibliothèque
SDL_image.
Paramètresfile_image Chemin d'accès du fichier contenant l'image.
Renvoie
L'image chargée.
Exemplesadvanced/06_image.c, advanced/07_transparency.c, advanced/08_zone_click.c, et
advanced/09_animation.c.
voidMLV_resize_image(MLV_Image*image,intwidth,intheight)
Redimensionne l'image en ne respectant pas les proportions de l'image originale. La hauteur et la largeur
de la nouvelle image deviennent respectivement la hauteur et la largeur passées en paramètres.
Paramètresimage L'image à redimentionner.
width La largeur de l'image.
height La hauteur de l'image.
voidMLV_resize_image_with_proportions(MLV_Image*image,intwidth,intheight)
Cette fonction redimensionne l'image en repsectant les proportions de l'image originale. L'image résultat
est la plus grande image possible incluse dans le rectangle de largeur width et de hauteur height.
L'utilisateur peut entrer un entier négatif pour les champs width et height. Ces champs ne sont alors pas
pris en compte dans le redimensionnement de l'image. Dans ce cas, si le paramètre width (resp. height)
est négatif, alors l'image finale aura pour largeur (resp. hauteur) la taille spécifiée dans le paramètre
width (resp. height).
Paramètresimage L'image à redimentionner.
width La nouvelle largeur de l'image.
height La nouvlle hauteur de l'image.
Exemplesadvanced/06_image.c.
voidMLV_rotate_and_scale_image(MLV_Image*image,doublerotation,doublescalar)
Éffectue une rotation suivie d'une homotétie.
Paramètresimage L'image à modifier.
rotation L'angle de la rotation.
scalar Le coéfficient de proportionnalité de l'homotétie.
voidMLV_rotate_and_scale_xy_image(MLV_Image*image,doublerotation,doublescalar_x,doublescalar_y)
Éffectue une rotation, puis étire l'image suivant l'axe X et l'axe Y avec des coefficients de
proportionnalité différents pour les deux axes.
Paramètresimage L'image à modifier.
rotation L'angle de la rotaiton.
scalar_x Le coéfficient de proportionnalité de l'axe X.
scalar_y Le coéfficient de proportionnalité de l'axe Y.
voidMLV_rotate_image(MLV_Image*image,doublerotation)
Éffectue une rotation sur une image donnée.
Paramètresimage L'image à modifier.
rotation L'angle de la rotation.
intMLV_save_image_as_bmp(constMLV_Image*image,constchar*file_image)
Sauvegarde une image dans une fichier BMP.
Bogue
Cette fonction ne sauvegarde pas la composante alpha.
Paramètresimage Image à sauvegarder
file_image Chemin d'accès du fichier contenant l'image.
Renvoie
0 si c'est un succés, -1 s'il y a eut une erreur.
voidMLV_scale_image(MLV_Image*image,doublescalar)
Modifie l'image à l'aide d'une homotétie ( Étire l'image )
Paramètresimage L'image à modifier.
scalar Coefficient de proportionalité de l'homotétie ( >1 l'image est agrandie, <1 l'image est
rétrécie ).
voidMLV_scale_xy_image(MLV_Image*image,doublescalar_x,doublescalar_y)
Étire l'image suivant l'axe X et l'axe Y avec des coefficients de proportionnalité différents pour les
deux axes.
Paramètresimage L'image à modifier.
scalar_x Le coéfficient de proportionnalité de l'axe X.
scalar_y Le coéfficient de proportionnalité de l'axe Y.
voidMLV_set_alpha_on_image(MLV_Alphaalpha,MLV_Image*image)
La composante alpha de l'image est remplacée par une composante alpha homogène dont la valeur est donnée
en paramètre. La transparence joue un role lorsqu'une image est dessinée à l'écran, ou lorsqu'une image
est recopiée à l'intérieure d'une autre image. Lorsque l'on recopie une image, les pixels du résultat
final sont obtenus en faisant un barycentre entre le pixel de l'image source avec celui de l'image
destination. Les poids des barycentres sont définis par la composante transparente ( composante alpha )
de l'image source. La transparence de l'image destination reste inchangée.
Par exemple,
couleur pixel source : RGBA( 60,80,100,128 )
couleur destination : RGBA( 0,20,40,30 )
couleur final après recopie :
RGBA(
barycentre( 60, 128, 0, 256-128 ),
barycentre( 80, 128, 20, 256-128 ),
barycentre( 100, 128, 40, 256-128 ),
30
) =
RGBA(
( 60 * 128 + 0 * (256-128) ) / 256,
( 80 * 128 + 20 * (256-128) ) / 256,
( 100 * 128 + 40 * (256-128) ) / 256,
30
) =
RGBA( 30, 50, 70, 30 )
Paramètresimage L'image à modifier.
alpha La nouvelle composante alpha de l'image.
Exemplesadvanced/07_transparency.c.
voidMLV_set_pixel_on_image(intx,inty,MLV_Colorcolor,MLV_Image*image)
Écrase les composantes rouge, bleue, vert et alpha d'un pixel par celles passées en paramètre de la
fonction.
Paramètresx La coordonnée en x du pixel à modifier.
y La coordonnée en y du pixel à modifier.
color La nouvelle couleur du pixel.
image L'image à modifier.
Exemplesadvanced/08_zone_click.c.
voidMLV_vertical_image_mirror(MLV_Image*image)
Modifie l'image en réalisant une réflexion verticale.
Paramètresimage L'image à modifier.