File: ex_resize.c

package info (click to toggle)
allegro5 2%3A5.2.8.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 26,560 kB
  • sloc: ansic: 128,223; cpp: 15,902; objc: 4,620; python: 2,898; java: 2,254; javascript: 1,242; sh: 1,010; makefile: 50; perl: 37; xml: 25; pascal: 24
file content (88 lines) | stat: -rw-r--r-- 2,362 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "allegro5/allegro.h"
#include <allegro5/allegro_primitives.h>

#include "common.c"

static void redraw(void)
{
    ALLEGRO_COLOR black, white;
    int w, h;

    white = al_map_rgba_f(1, 1, 1, 1);
    black = al_map_rgba_f(0, 0, 0, 1);

    al_clear_to_color(white);
    w = al_get_bitmap_width(al_get_target_bitmap());
    h = al_get_bitmap_height(al_get_target_bitmap());
    al_draw_line(0, h, w / 2, 0, black, 0);
    al_draw_line(w / 2, 0, w, h, black, 0);
    al_draw_line(w / 4, h / 2, 3 * w / 4, h / 2, black, 0);
    al_flip_display();
}

int main(int argc, char **argv)
{
    ALLEGRO_DISPLAY *display;
    ALLEGRO_TIMER *timer;
    ALLEGRO_EVENT_QUEUE *events;
    ALLEGRO_EVENT event;
    int rs = 100;
    bool resize = false;

    (void)argc;
    (void)argv;

    /* Initialize Allegro and create an event queue. */
    if (!al_init()) {
        abort_example("Could not init Allegro.\n");
    }
    al_init_primitives_addon();
    events = al_create_event_queue();

    /* Setup a display driver and register events from it. */
    al_set_new_display_flags(ALLEGRO_RESIZABLE);
    display = al_create_display(rs, rs);
    if (!display) {
        abort_example("Could not create display.\n");
    }
    al_register_event_source(events, al_get_display_event_source(display));

    timer = al_create_timer(0.1);
    al_start_timer(timer);

    /* Setup a keyboard driver and register events from it. */
    al_install_keyboard();
    al_register_event_source(events, al_get_keyboard_event_source());
    al_register_event_source(events, al_get_timer_event_source(timer));

    /* Display a pulsating window until a key or the closebutton is pressed. */
    redraw();
    while (true) {
        if (resize) {
            int s;
            rs += 10;
            if (rs == 300)
                rs = 100;
            s = rs;
            if (s > 200)
                s = 400 - s;
            al_resize_display(display, s, s);
            redraw();
            resize = false;
        }
        al_wait_for_event(events, &event);
        if (event.type == ALLEGRO_EVENT_TIMER) {
            resize = true;
        }
        else if (event.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
            break;
        }
        else if (event.type == ALLEGRO_EVENT_KEY_DOWN) {
            break;
        }
    }

    return 0;
}

/* vim: set sts=4 sw=4 et: */