Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <allegro5/allegro.h>
  3. #include <allegro5/allegro_primitives.h>
  4. #include <allegro5/allegro_ttf.h>
  5. #include <math.h>
  6.  
  7. const float FPS = 60;
  8. const int SCREEN_W = 640;
  9. const int SCREEN_H = 480;
  10. ALLEGRO_FONT *font = NULL;
  11. double rotate = 0.0;
  12.  
  13. void draw_fliping_object()
  14. {
  15.     ALLEGRO_TRANSFORM trans;
  16.     rotate += 1.0 * (M_PI/180.0);
  17.     al_identity_transform(&trans);
  18.     al_scale_transform(&trans, 2, 2);
  19.  
  20.     al_hold_bitmap_drawing(true);
  21.     al_draw_text(font, al_map_rgb(255,0,0), 0, 0, 0, "Some Text 1!");
  22.     al_hold_bitmap_drawing(false);
  23.  
  24.     al_rotate_transform(&trans, rotate);
  25.     al_translate_transform(&trans, SCREEN_W / 2, SCREEN_H / 2);
  26.     al_use_transform(&trans);
  27.  
  28.     al_hold_bitmap_drawing(true);
  29.  
  30.     al_draw_filled_rectangle(-50, -50, 0, 0, al_map_rgb(255,255,255));
  31.     al_draw_filled_rectangle(0, 0, 50, 50, al_map_rgb(255,255,255));
  32.     al_draw_filled_rectangle(0, -50, 50, 0, al_map_rgb(255,255,255));
  33.     al_draw_filled_rectangle(-50, 0, 0, 50, al_map_rgb(255,255,255));
  34.  
  35. //  void al_draw_text (const ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x, float y, int flags, char const *text);
  36.     al_draw_text(font, al_map_rgb(255,0,0), 0, 0, 0, "Some Text 2!");
  37.     al_hold_bitmap_drawing(false);
  38.  
  39. }
  40.  
  41. int main(int argc, char **argv)
  42. {
  43.    ALLEGRO_DISPLAY *display = NULL;
  44.    ALLEGRO_EVENT_QUEUE *event_queue = NULL;
  45.    ALLEGRO_TIMER *timer = NULL;
  46.    bool redraw = true;
  47.  
  48.    if(!al_init()) {
  49.       fprintf(stderr, "failed to initialize allegro!\n");
  50.       return -1;
  51.    }
  52.  
  53.     al_init_primitives_addon();
  54.     al_init_font_addon();
  55.     al_init_ttf_addon();
  56.  
  57.     font = al_load_font("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf", 20, 0);
  58.     if(!font) {
  59.         fprintf(stderr, "failed to load font!\n");
  60.         return -1;
  61.     }
  62.  
  63.    timer = al_create_timer(1.0 / FPS);
  64.    if(!timer) {
  65.         al_destroy_font(font);
  66.       fprintf(stderr, "failed to create timer!\n");
  67.       return -1;
  68.    }
  69.  
  70.    display = al_create_display(SCREEN_W, SCREEN_H);
  71.    if(!display) {
  72.       fprintf(stderr, "failed to create display!\n");
  73.         al_destroy_font(font);
  74.       al_destroy_timer(timer);
  75.       return -1;
  76.    }
  77.  
  78.    event_queue = al_create_event_queue();
  79.    if(!event_queue) {
  80.       fprintf(stderr, "failed to create event_queue!\n");
  81.         al_destroy_font(font);
  82.       al_destroy_display(display);
  83.       al_destroy_timer(timer);
  84.       return -1;
  85.    }
  86.  
  87.    al_register_event_source(event_queue, al_get_display_event_source(display));
  88.  
  89.    al_register_event_source(event_queue, al_get_timer_event_source(timer));
  90.  
  91.    al_clear_to_color(al_map_rgb(0,0,0));
  92.  
  93.    al_flip_display();
  94.  
  95.    al_start_timer(timer);
  96.  
  97.    while(1)
  98.    {
  99.       ALLEGRO_EVENT ev;
  100.       al_wait_for_event(event_queue, &ev);
  101.  
  102.       if(ev.type == ALLEGRO_EVENT_TIMER) {
  103.          redraw = true;
  104.       }
  105.       else if(ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
  106.          break;
  107.       }
  108.  
  109.       if(redraw && al_event_queue_is_empty(event_queue)) {
  110.          redraw = false;
  111.  
  112.          al_clear_to_color(al_map_rgb(0,0,0));
  113.  
  114.             draw_fliping_object();
  115.  
  116.          al_flip_display();
  117.       }
  118.    }
  119.  
  120.     al_destroy_font(font);
  121.    al_destroy_timer(timer);
  122.    al_destroy_display(display);
  123.    al_destroy_event_queue(event_queue);
  124.  
  125.    return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement