====== Différences ====== Ci-dessous, les différences entre deux révisions de la page.
|
allegro:addon_memfile [2012/01/14 04:37] mrhide |
allegro:addon_memfile [2018/03/01 11:07] (Version actuelle) mrhide Add link |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ===== Memfile ===== | + | ===== Allegro — Memfile ===== |
| Cet addon permet de traiter un espace contigüe de la mémoire comme un fichier, et ainsi d'utiliser les opération d'E/S dessus. | Cet addon permet de traiter un espace contigüe de la mémoire comme un fichier, et ainsi d'utiliser les opération d'E/S dessus. | ||
| Ligne 8: | Ligne 8: | ||
| <code c> | <code c> | ||
| + | #include <allegro5/allegro.h> | ||
| #include <allegro5/allegro_memfile.h> | #include <allegro5/allegro_memfile.h> | ||
| + | #include <allegro5/allegro_image.h> | ||
| + | #include <stdio.h> | ||
| + | |||
| + | #define SIZE 262 | ||
| + | #define SCREEN_W 128 | ||
| + | #define SCREEN_H 128 | ||
| int main() { | int main() { | ||
| ALLEGRO_FILE *file; | ALLEGRO_FILE *file; | ||
| - | ALLEGRO_IMAGE *image; | + | ALLEGRO_BITMAP *image; |
| - | + | ALLEGRO_DISPLAY *display = NULL; | |
| /* Ce tableau contient une image au format png */ | /* Ce tableau contient une image au format png */ | ||
| unsigned char default_img[] = { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, | unsigned char default_img[] = { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, | ||
| Ligne 41: | Ligne 49: | ||
| 0x41, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, | 0x41, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, | ||
| 0x60, 0x82 }; | 0x60, 0x82 }; | ||
| - | + | ||
| - | al_init(); | + | if (!init(display)) return -1; |
| - | + | ||
| + | /* on ouvre */ | ||
| file = al_open_memfile(default_img, SIZE, "rw"); | file = al_open_memfile(default_img, SIZE, "rw"); | ||
| if (!file) return 0; | if (!file) return 0; | ||
| - | + | ||
| - | /* Charge l'image convertie en BITMAP en mémoire depuis le tableau */ | + | /* Charge l'image en mémoire depuis le tableau */ |
| image = al_load_bitmap_f(file, ".png"); | image = al_load_bitmap_f(file, ".png"); | ||
| - | + | ||
| /* On doit utiliser cette fonction lorsqu'on a plus besoin du fichier */ | /* On doit utiliser cette fonction lorsqu'on a plus besoin du fichier */ | ||
| al_fclose(file); | al_fclose(file); | ||
| - | + | ||
| + | |||
| + | al_draw_bitmap(image, 56,56, 0); | ||
| + | al_flip_display(); | ||
| + | |||
| + | al_rest(10.0); | ||
| + | al_destroy_bitmap(image); | ||
| + | al_destroy_display(display); | ||
| + | |||
| return 0; | return 0; | ||
| } | } | ||
| + | |||
| + | int init(ALLEGRO_DISPLAY *display) { | ||
| + | if(!al_init()) { | ||
| + | fprintf(stderr, "failed to initialize allegro!\n"); | ||
| + | return -1; | ||
| + | } | ||
| + | |||
| + | if (!al_init_image_addon()) { | ||
| + | fprintf(stderr, "failed to initialize allegro image IO addon!\n"); | ||
| + | return -1; | ||
| + | } | ||
| + | |||
| + | display = al_create_display(SCREEN_W, SCREEN_H); | ||
| + | if(!display) { | ||
| + | fprintf(stderr, "failed to create display!\n"); | ||
| + | return -1; | ||
| + | } | ||
| + | |||
| + | return 1; | ||
| + | } | ||
| + | |||
| </code> | </code> | ||
| + | |||
| + | [[allegro:code_memfile|Ce code]] permet de créer facilement le tableau à partir d'un fichier. | ||
| + | |||
| + | [[http://liballeg.org/a5docs/trunk/memfile.html]] | ||
| [[allegro:addons|Liste des greffons]] | [[allegro:addons|Liste des greffons]] | ||