From c242d92abf46998197240591b1c0a98eb6c416e0 Mon Sep 17 00:00:00 2001 From: Juraj Michalek Date: Sun, 25 Nov 2012 18:26:48 +0100 Subject: [PATCH] Add Allegro examples --- README.md | 34 +++++++++++++++++- allegro/Makefile | 25 +++++++++++++ allegro/example-01.c | 61 ++++++++++++++++++++++++++++++++ allegro/example-02.c | 82 +++++++++++++++++++++++++++++++++++++++++++ allegro/example-03.c | 77 ++++++++++++++++++++++++++++++++++++++++ allegro/smajlik.png | Bin 0 -> 6324 bytes 6 files changed, 278 insertions(+), 1 deletion(-) create mode 100644 allegro/Makefile create mode 100644 allegro/example-01.c create mode 100644 allegro/example-02.c create mode 100644 allegro/example-03.c create mode 100644 allegro/smajlik.png diff --git a/README.md b/README.md index baf114d..6523bec 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,36 @@ fimuni-c-cpp-examples ===================== -Examples related to talks at FI MUNI \ No newline at end of file +Examples related to talks at FI MUNI. + +Allegro +------- + +Three examples for Allegro 5.0 library. +- example-01 - display smiley +- example-02 - display smiley when pressed space +- example-03 - smiley follows mouse + +Requirements: Allegro 5.0 (works also with 5.1) +Package for Debian: liballegro5-dev + +How to run: + + cd allegro + make + ./example-01 + ./example-02 + ./example-03 + +GTK+ +---- + +Helloworld example from http://en.wikipedia.org/wiki/Gtk. +Requires: GTK+-3 +Package for Debian: libgtk-3-dev + +How to run: + + cd gtk + make + ./helloworld diff --git a/allegro/Makefile b/allegro/Makefile new file mode 100644 index 0000000..64f3c59 --- /dev/null +++ b/allegro/Makefile @@ -0,0 +1,25 @@ + +EXAMPLE_OBJECTS_01 = example-01.o +EXAMPLE_OBJECTS_02 = example-02.o +EXAMPLE_OBJECTS_03 = example-03.o + +CFLAGS = `pkg-config --cflags allegro-5.0 allegro_image-5.0` +LDADD = `pkg-config --libs allegro-5.0 allegro_image-5.0` + +all: example-01 example-02 example-03 + +example-01: $(EXAMPLE_OBJECTS_01) + ${CC} -o example-01 ${EXAMPLE_OBJECTS_01} ${LDADD} + +example-02: $(EXAMPLE_OBJECTS_02) + ${CC} -o example-02 ${EXAMPLE_OBJECTS_02} ${LDADD} + +example-03: $(EXAMPLE_OBJECTS_03) + ${CC} -o example-03 ${EXAMPLE_OBJECTS_03} ${LDADD} + +.c.o: + ${CC} ${CFLAGS} -c $< + +clean: + rm -f example-01 example-02 example-03 *.o + diff --git a/allegro/example-01.c b/allegro/example-01.c new file mode 100644 index 0000000..259b5b3 --- /dev/null +++ b/allegro/example-01.c @@ -0,0 +1,61 @@ +/** + * Example 01 - Allegro 5 + * Display image + * + * Juraj Michalek - http://georgik.sinusgear.com + */ + +#include +#include +#include + + +int main() +{ + ALLEGRO_EVENT_QUEUE *event_queue; + ALLEGRO_DISPLAY *display; + + ALLEGRO_EVENT event; + ALLEGRO_BITMAP *image; + + al_init(); + al_install_keyboard(); + al_init_image_addon(); + + display = al_create_display(640, 480); + if (!display) + { + return 2; + } + + // Create Event queue + event_queue = al_create_event_queue(); + + // Register Keyboard to queue + al_register_event_source(event_queue, al_get_keyboard_event_source()); + al_register_event_source(event_queue, al_get_display_event_source(display)); + + // Clear screen + al_clear_to_color(al_map_rgb_f(1.0, 1.0, 1.0)); + + // Load and display image + image = al_load_bitmap("smajlik.png"); + if (image != NULL) + { + al_draw_bitmap(image, 10, 10, 0); + } else { + printf("No bitmap.\n"); + return 1; + } + al_flip_display(); + + // Wait until some key is pressed + al_wait_for_event(event_queue, &event); + + // Release + al_destroy_bitmap(image); + al_uninstall_keyboard(); + al_uninstall_system(); + return 0; +} + diff --git a/allegro/example-02.c b/allegro/example-02.c new file mode 100644 index 0000000..149e259 --- /dev/null +++ b/allegro/example-02.c @@ -0,0 +1,82 @@ +/** + * Example 02 - Allegro 5 + * Display image based on keyboard events. + * + * Juraj Michalek - http://georgik.sinusgear.com + */ + +#include +#include +#include + + +int main() +{ + bool isStopSignal = false; + ALLEGRO_EVENT_QUEUE *event_queue; + ALLEGRO_DISPLAY *display; + + ALLEGRO_EVENT event; + ALLEGRO_BITMAP *image; + + ALLEGRO_COLOR white = al_map_rgb_f(1.0, 1.0, 1.0); + + al_init(); + al_install_keyboard(); + al_init_image_addon(); + + display = al_create_display(640, 480); + if (!display) + { + return 2; + } + + // Create Event queue + event_queue = al_create_event_queue(); + + // Register Keyboard to queue + al_register_event_source(event_queue, al_get_keyboard_event_source()); + al_register_event_source(event_queue, al_get_display_event_source(display)); + + // Clear screen + al_clear_to_color(white); + + // Load and display image + image = al_load_bitmap("smajlik.png"); + if (image == NULL) + { + printf("No bitmap.\n"); + return 1; + } + + + do { + al_get_next_event(event_queue, &event); + + // Handle SPACE key - display smiley in case of pressed space + // Clear screen in case of other key + if (event.keyboard.keycode == ALLEGRO_KEY_SPACE) + { + al_draw_bitmap(image, 10, 10, 0); + } else { + // Clear screen + al_clear_to_color(white); + } + al_flip_display(); + + // Handle ESC key + if (event.keyboard.keycode == ALLEGRO_KEY_ESCAPE) + { + isStopSignal = true; + } + + } while (!isStopSignal); + + // Release + al_destroy_bitmap(image); + al_uninstall_keyboard(); + al_uninstall_system(); + return 0; +} + + diff --git a/allegro/example-03.c b/allegro/example-03.c new file mode 100644 index 0000000..46572f2 --- /dev/null +++ b/allegro/example-03.c @@ -0,0 +1,77 @@ +/** + * Example 02 - Allegro 5 + * Display image based on keyboard events. + * + * Juraj Michalek - http://georgik.sinusgear.com + */ + +#include +#include +#include + + +int main() +{ + bool isStopSignal = false; + ALLEGRO_EVENT_QUEUE *event_queue; + ALLEGRO_DISPLAY *display; + + ALLEGRO_EVENT event; + ALLEGRO_BITMAP *image; + + ALLEGRO_MOUSE_STATE msestate; + ALLEGRO_KEYBOARD_STATE kbdstate; + + ALLEGRO_COLOR white = al_map_rgb_f(1.0, 1.0, 1.0); + + al_init(); + al_install_keyboard(); + al_init_image_addon(); + + display = al_create_display(640, 480); + if (!display) + { + return 2; + } + + // Create Event queue + event_queue = al_create_event_queue(); + + // Register Keyboard to queue + al_register_event_source(event_queue, al_get_keyboard_event_source()); + al_register_event_source(event_queue, al_get_display_event_source(display)); + + // Register Mouse + al_install_mouse(); + + // Clear screen + al_clear_to_color(white); + + // Load and display image + image = al_load_bitmap("smajlik.png"); + if (image == NULL) + { + printf("No bitmap.\n"); + return 1; + } + + + do { + al_get_mouse_state(&msestate); + al_get_keyboard_state(&kbdstate); + + al_clear_to_color(white); + al_draw_bitmap(image, msestate.x, msestate.y, 0); + + al_flip_display(); + } while (!al_key_down(&kbdstate, ALLEGRO_KEY_ESCAPE)); + + // Release + al_destroy_bitmap(image); + al_uninstall_mouse(); + al_uninstall_keyboard(); + al_uninstall_system(); + return 0; +} + + diff --git a/allegro/smajlik.png b/allegro/smajlik.png new file mode 100644 index 0000000000000000000000000000000000000000..6d8b23a96bfd4083267a5e568dbe1b965ebc2208 GIT binary patch literal 6324 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