Ce programme explique comment, si elle n'est pas utilisée pour réaliser des effets de transparence, il est possible d'utiliser la composante alpha d'une image pour réaliser des zones de selection.
Attention, si vous ouvrez les images utilisées par cette démonstration avec un éditeur d'image, vous obtiendrez une image vide. En effet, nous avons détourné la composante alpha pour un autre usage. Dans notre cas elle varie entre 0 et 4. L'image disparait donc par rapport au fond. Si vous voulez voir l'image dans votre éditeur d'image, vous devez supprimer la composante alpha.
Dans la pratique, vous n'êtes pas obligé d'utiliser la composante alpha pour réaliser une zone de selection. Vous pouvez utiliser plmusieurs images, une pour l'affichage et une pour définir les zones de selection. Ainsi, vous conservez la composante alpha pour réaliser des effets de transparence évolués.
#define DEBUG(x) fprintf( stderr, "DEBUG : %s - line : %d- file : %s \n", x, __LINE__, __FILE__ );
int main( int argc, char *argv[] ){
int width=640,height=480;
int red;
int x,y;
int w, h;
int id_country;
MLV_Image *map, *map_display, *country_layer;
#define NB_COUNTRY 5
int nb_country = NB_COUNTRY;
const char* id_to_country[ NB_COUNTRY+1 ][ 2 ] = {
{ "", "" },
{ "Espagne", "spain.png" },
{ "France", "france.png" },
{ "Grèce", "greece.png" },
{ "Italie", "italy.png" },
{ "Portugal", "portugal.png" }
};
"advanced - 8 - zone click", "zone click", width, height
);
0, 0, width, height,
MLV_rgba(0,0,0,MLV_ALPHA_OPAQUE), map
);
for( id_country=1; id_country < nb_country+1; id_country++ ){
const char* file_name = id_to_country[id_country][1];
if( ! country_layer ){
fprintf( stderr, "Impossible de lire le fichier %s", file_name );
exit(0);
}
for( w = 0; w < width; w++ ){
for( h = 0; h < height; h++ ){
country_layer, w, h, &red, NULL, NULL, NULL
);
if( red != 0 ){
id_country, id_country, id_country,
MLV_ALPHA_OPAQUE
), map
);
}
}
}
}
while( event_type!=
MLV_KEY || touche != MLV_KEYBOARD_ESCAPE ){
if( 1 <= id_country && id_country <= nb_country ){
);
}
}
}
return 0;
}
Fichier d'entête principal incluant tous les autres fichiers entêtes de la bibliothèque MLV.
#define MLV_COLOR_BLACK
Definition: MLV_color.h:379
MLV_Color MLV_rgba(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha)
Raccourci vers MLV_Color MLV_get_color_from_rgba.
MLV_Event MLV_wait_keyboard_or_mouse(MLV_Keyboard_button *sym, MLV_Keyboard_modifier *mod, int *unicode, int *mouse_x, int *mouse_y)
Suspend l'exécution jusqu'à ce que l'utilisateur appuie sur une touche du clavier ou sur le bouton ga...
MLV_Event
Énumère les différents types d'évènement de la bibliothèque MLV.
Definition: MLV_event.h:46
@ MLV_MOUSE_BUTTON
Definition: MLV_event.h:51
@ MLV_KEY
Definition: MLV_event.h:48
@ MLV_NONE
Definition: MLV_event.h:47
MLV_Image * MLV_load_image(const char *file_image)
Charge en mémoire une image contenue dans un fichier.
void MLV_draw_image(const MLV_Image *image, int x, int y)
Dessine une image donnée à une position donnée de la fenêtre.
void MLV_get_image_size(const MLV_Image *image, int *width, int *height)
Retourne la taille d'une image donnée.
struct _MLV_Image MLV_Image
Définit le type Image dans la bibliothèque MLV.
Definition: MLV_image.h:53
void MLV_free_image(MLV_Image *image)
Libère la mémoire utilisée par l'image.
void MLV_get_pixel_on_image(const MLV_Image *image, int x, int y, int *red, int *green, int *blue, int *alpha)
Renvoie la couleur du pixel présent à une position donnée d'une image donnée.
MLV_Image * MLV_create_image(int width, int height)
Créer une image de composante alpha opaque.
void MLV_set_pixel_on_image(int x, int y, MLV_Color color, MLV_Image *image)
Écrase les composantes rouge, bleue, vert et alpha d'un pixel par celles passées en paramètre de la f...
MLV_Keyboard_button
Énumère l'ensemble des codes des touches du clavier.
Definition: MLV_keyboard.h:50
void MLV_draw_filled_rectangle_on_image(int x, int y, int width, int height, MLV_Color color, MLV_Image *image)
Dessine un rectangle plein dont la taille, la couleur et la position du sommet Nord-Ouest sont donnée...
void MLV_draw_text(int x, int y, const char *text, MLV_Color color,...)
Imprime un texte donné à une position et une couleur données.
void MLV_free_window()
Ferme la fenêtre de la bibliothèque MLV.
void MLV_create_window(const char *window_name, const char *icone_name, unsigned int width, unsigned int height)
Créé une fenêtre dont la taille, et les différents noms sont passés en paramètres.
void MLV_update_window()
Met à jour l'affichage de la fenêtre.
void MLV_change_window_size(unsigned int width, unsigned int height)
Change la taille de la fenêtre.