cliprect.h
Go to the documentation of this file.00001
00007 #ifndef CLIPRECT_H
00008 #define CLIPRECT_H
00009 #ifndef RECT_H
00010 #include "rect.h"
00011 #endif
00012
00028 typedef struct ClipRect
00029 {
00030 Rect bounds;
00031 size_t maxDirty;
00032 Rect* dirty;
00033 size_t cDirty;
00034 } ClipRect;
00035 void ClipRect_init( ClipRect* self, Rect* dirty, size_t cDirty, const Rect* bounds );
00036 void ClipRect_add( ClipRect* self, const Rect* r );
00037 void ClipRect_remove( ClipRect* self, const Rect* r );
00038 Rect ClipRect_union( const ClipRect* self );
00039 void ClipRect_merge( ClipRect* self, const ClipRect* other );
00040 void ClipRect_copy( ClipRect* self, const ClipRect* other );
00041 #define ClipRect_empty(self) (0 == (self)->cDirty)
00042 #define ClipRect_clear(self) { (self)->cDirty = 0; }
00043
00049 #define ClipRect_foreach( instance, iterator )\
00050 pointer_foreach_const( Rect, (instance)->dirty, (instance)->cDirty, iterator )
00051
00057 #define ClipRect_foreach_mutable( instance, iterator )\
00058 Rect* iterator = (instance)->dirty;\
00059 size_t iterator##_curr;\
00060 for( iterator##_curr = 0; iterator##_curr < (instance)->cDirty; ++iterator##_curr, ++iterator )
00061
00062 #endif