/* * call-seq: * clip = Rect or nil * * Set the current clipping area of the Surface. See also #cliprect. * * The clipping area of a Surface is the only part which can be drawn upon * by other Surface's #blits. The clipping area will be clipped to the edges * of the surface so that the clipping area for a Surface can never fall * outside the edges of the Surface. * * By default, the clipping area is the entire area of the Surface. * You may set clip to +nil+, which will reset the clipping area to cover * the entire Surface. */ VALUE rbgm_surface_set_clip( VALUE self, VALUE clip ) { SDL_Rect *rect; SDL_Surface *surf; Data_Get_Struct(self, SDL_Surface, surf); if(clip == Qnil) { SDL_SetClipRect(surf,NULL); } else { rect = make_rect(\ NUM2INT(rb_ary_entry(clip,0)),\ NUM2INT(rb_ary_entry(clip,1)),\ NUM2INT(rb_ary_entry(clip,2)),\ NUM2INT(rb_ary_entry(clip,3))\ ); SDL_SetClipRect(surf,rect); } return self; }