Advertisement
Guest User

Mask

a guest
Apr 20th, 2015
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.84 KB | None | 0 0
  1. class Sprite
  2.   def mask(mask=nil)
  3.     return false if !self.bitmap
  4.     bitmap=self.bitmap.clone
  5.     if mask.is_a?(Bitmap)
  6.       mbmp=mask
  7.     elsif mask.is_a?(Sprite)
  8.       mbmp=mask.bitmap
  9.     elsif mask.is_a?(String)
  10.       mbmp=BitmapCache.load_bitmap(mask)
  11.     else
  12.       return false
  13.     end
  14.    
  15.     self.bitmap=Bitmap.new(bitmap.width,bitmap.height)
  16.     mask=Bitmap.new(bitmap.width,bitmap.height)
  17.     mask.stretch_blt(Rect.new(0,0,mask.width,mask.height),mbmp,Rect.new(0,0,mbmp.width,mbmp.height))
  18.    
  19.     for y in 0...bitmap.height
  20.       for x in 0...bitmap.width
  21.         pixel=mask.get_pixel(x,y)
  22.         color=bitmap.get_pixel(x,y)
  23.         alpha=pixel.alpha
  24.         alpha=color.alpha if color.alpha<pixel.alpha
  25.         self.bitmap.set_pixel(x,y,Color.new(color.red,color.green,color.blue,alpha))
  26.       end
  27.     end
  28.   end
  29. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement