Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.58 KB | None | 0 0
  1. void convert_grayscale(ALLEGRO_BITMAP *bmp) {
  2.     ALLEGRO_BITMAP *dispbuf = al_get_target_bitmap();
  3.     int x, y, w, h, lum;
  4.     unsigned char r, g, b;
  5.     w = al_get_bitmap_width(bmp);
  6.     h = al_get_bitmap_height(bmp);
  7.  
  8.     al_set_target_bitmap(bmp);
  9.     al_lock_bitmap(bmp, ALLEGRO_PIXEL_FORMAT_ABGR_8888, ALLEGRO_LOCK_READWRITE);
  10.  
  11.     for (y = 0; y < h; y++) {
  12.         for (x = 0; x < w; x++) {
  13.             al_unmap_rgb(al_get_pixel(bmp, x, y), &r, &g, &b);
  14.             lum = (0.299*r + 0.587*g + 0.114*b);
  15.             al_put_pixel(x, y, al_map_rgb(lum, lum, lum));
  16.         }
  17.     }
  18.     al_unlock_bitmap(bmp);
  19.     al_set_target_bitmap(dispbuf);
  20. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement