Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void convert_grayscale(ALLEGRO_BITMAP *bmp) {
- ALLEGRO_BITMAP *dispbuf = al_get_target_bitmap();
- int x, y, w, h, lum;
- unsigned char r, g, b;
- w = al_get_bitmap_width(bmp);
- h = al_get_bitmap_height(bmp);
- al_set_target_bitmap(bmp);
- al_lock_bitmap(bmp, ALLEGRO_PIXEL_FORMAT_ABGR_8888, ALLEGRO_LOCK_READWRITE);
- for (y = 0; y < h; y++) {
- for (x = 0; x < w; x++) {
- al_unmap_rgb(al_get_pixel(bmp, x, y), &r, &g, &b);
- lum = (0.299*r + 0.587*g + 0.114*b);
- al_put_pixel(x, y, al_map_rgb(lum, lum, lum));
- }
- }
- al_unlock_bitmap(bmp);
- al_set_target_bitmap(dispbuf);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement