Make UEFI boot-platform build again
[haiku.git] / headers / os / interface / Region.h
blobb5e729004d216c406faef305a80682e835f68099
1 /*
2 * Copyright 2003-2014 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef _REGION_H
6 #define _REGION_H
9 #include <Rect.h>
12 namespace BPrivate {
13 class ServerLink;
14 class LinkReceiver;
17 /* Integer rect used to define a clipping rectangle. All bounds are inclusive. */
18 /* Moved from DirectWindow.h */
19 typedef struct {
20 int32 left;
21 int32 top;
22 int32 right;
23 int32 bottom;
24 } clipping_rect;
27 class BRegion {
28 public:
29 BRegion();
30 BRegion(const BRegion& other);
31 BRegion(const BRect rect);
32 virtual ~BRegion();
34 BRegion& operator=(const BRegion& other);
35 bool operator==(const BRegion& other) const;
37 void Set(BRect rect);
38 void Set(clipping_rect clipping);
40 BRect Frame() const;
41 clipping_rect FrameInt() const;
43 BRect RectAt(int32 index);
44 BRect RectAt(int32 index) const;
45 clipping_rect RectAtInt(int32 index);
46 clipping_rect RectAtInt(int32 index) const;
48 int32 CountRects();
49 int32 CountRects() const;
51 bool Intersects(BRect rect) const;
52 bool Intersects(clipping_rect clipping) const;
54 bool Contains(BPoint point) const;
55 bool Contains(int32 x, int32 y);
56 bool Contains(int32 x, int32 y) const;
58 void PrintToStream() const;
60 void OffsetBy(const BPoint& point);
61 void OffsetBy(int32 x, int32 y);
62 void ScaleBy(BSize scale);
63 void ScaleBy(float x, float y);
65 void MakeEmpty();
67 void Include(BRect rect);
68 void Include(clipping_rect clipping);
69 void Include(const BRegion* region);
71 void Exclude(BRect rect);
72 void Exclude(clipping_rect clipping);
73 void Exclude(const BRegion* region);
75 void IntersectWith(const BRegion* region);
77 void ExclusiveInclude(const BRegion* region);
79 private:
80 friend class BDirectWindow;
81 friend class BPrivate::ServerLink;
82 friend class BPrivate::LinkReceiver;
84 class Support;
85 friend class Support;
87 private:
88 BRegion(const clipping_rect& clipping);
90 void _AdoptRegionData(BRegion& region);
91 bool _SetSize(int32 newSize);
93 clipping_rect _Convert(const BRect& rect) const;
94 clipping_rect _ConvertToInternal(const BRect& rect) const;
95 clipping_rect _ConvertToInternal(
96 const clipping_rect& rect) const;
98 private:
99 int32 fCount;
100 int32 fDataSize;
101 clipping_rect fBounds;
102 clipping_rect* fData;
106 #endif // _REGION_H