/******************************************************************************* / / File: Region.h / / Description: BRegion represents an area that's composed of individual / rectangles. / / Copyright 1992-98, Be Incorporated, All Rights Reserved / *******************************************************************************/ #ifndef _REGION_H #define _REGION_H #include #include namespace BPrivate { class ServerLink; class LinkReceiver; }; /* Integer rect used to define a clipping rectangle. All bounds are inclusive. */ /* Moved from DirectWindow.h */ typedef struct { int32 left; int32 top; int32 right; int32 bottom; } clipping_rect; /*----- BRegion class --------------------------------------------*/ class BRegion { public: BRegion(); BRegion(const BRegion ®ion); BRegion(const BRect rect); virtual ~BRegion(); BRegion &operator=(const BRegion &from); BRect Frame() const; clipping_rect FrameInt() const; BRect RectAt(int32 index); clipping_rect RectAtInt(int32 index); int32 CountRects(); void Set(BRect newBounds); void Set(clipping_rect newBounds); bool Intersects(BRect r) const; bool Intersects(clipping_rect r) const; bool Contains(BPoint pt) const; bool Contains(int32 x, int32 y); void PrintToStream() const; void OffsetBy(int32 dh, int32 dv); void MakeEmpty(); void Include(BRect r); void Include(clipping_rect r); void Include(const BRegion*); void Exclude(BRect r); void Exclude(clipping_rect r); void Exclude(const BRegion*); void IntersectWith(const BRegion*); /*----- Private or reserved -----------------------------------------*/ class Support; private: friend class BView; friend class BDirectWindow; friend class Support; friend class BPrivate::ServerLink; friend class BPrivate::LinkReceiver; void _AddRect(clipping_rect r); void set_size(long new_size); private: long count; long data_size; clipping_rect bound; clipping_rect *data; }; #endif /* _REGION_H */