1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**************************************************************************\
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Copyright (c) 1998-2000, Microsoft Corp.  All Rights Reserved.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Module Name:
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*   GdiplusRegion.h
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov* Abstract:
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*   Region API related declarations
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov\**************************************************************************/
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _GDIPLUSREGION_H
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _GDIPLUSREGION_H
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Construct a new region object
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Region()
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpRegion *region = NULL;
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateRegion(&region);
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeRegion(region);
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Region(IN const RectF& rect)
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpRegion *region = NULL;
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateRegionRect(&rect, &region);
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeRegion(region);
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Region(IN const Rect& rect)
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpRegion *region = NULL;
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateRegionRectI(&rect, &region);
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeRegion(region);
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Region(IN const GraphicsPath* path)
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpRegion *region = NULL;
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateRegionPath(path->nativePath, &region);
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeRegion(region);
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Region(IN const BYTE* regionData, IN INT size)
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpRegion *region = NULL;
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateRegionRgnData(regionData, size, &region);
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeRegion(region);
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Region(IN HRGN hRgn)
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpRegion *region = NULL;
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = DllExports::GdipCreateRegionHrgn(hRgn, &region);
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeRegion(region);
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion* Region::FromHRGN(IN HRGN hRgn)
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpRegion *region = NULL;
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (DllExports::GdipCreateRegionHrgn(hRgn, &region) == Ok)
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Region* newRegion = new Region(region);
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        if (newRegion == NULL)
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        {
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov            DllExports::GdipDeleteRegion(region);
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        }
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return newRegion;
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    else
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return NULL;
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::~Region()
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    DllExports::GdipDeleteRegion(nativeRegion);
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Make a copy of the region object
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Region*
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Clone() const
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    GpRegion *region = NULL;
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipCloneRegion(nativeRegion, &region));
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return new Region(region);
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::MakeInfinite()
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipSetInfinite(nativeRegion));
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::MakeEmpty()
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipSetEmpty(nativeRegion));
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Region operations
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Intersect(IN const RectF& rect)
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRect(nativeRegion, &rect, CombineModeIntersect));
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Intersect(IN const Rect& rect)
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRectI(nativeRegion, &rect, CombineModeIntersect));
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Intersect(IN const GraphicsPath* path)
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionPath(nativeRegion, path->nativePath, CombineModeIntersect));
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Intersect(IN const Region* region)
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRegion(nativeRegion, region->nativeRegion, CombineModeIntersect));
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Union(IN const RectF& rect)
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRect(nativeRegion, &rect, CombineModeUnion));
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Union(IN const Rect& rect)
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRectI(nativeRegion, &rect, CombineModeUnion));
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Union(IN const GraphicsPath* path)
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionPath(nativeRegion, path->nativePath, CombineModeUnion));
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Union(IN const Region* region)
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRegion(nativeRegion, region->nativeRegion, CombineModeUnion));
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Xor(IN const RectF& rect)
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRect(nativeRegion, &rect, CombineModeXor));
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Xor(IN const Rect& rect)
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRectI(nativeRegion, &rect, CombineModeXor));
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Xor(IN const GraphicsPath* path)
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionPath(nativeRegion, path->nativePath, CombineModeXor));
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Xor(IN const Region* region)
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRegion(nativeRegion, region->nativeRegion, CombineModeXor));
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Exclude(IN const RectF& rect)
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRect(nativeRegion, &rect, CombineModeExclude));
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Exclude(IN const Rect& rect)
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov     return SetStatus(DllExports::GdipCombineRegionRectI(nativeRegion, &rect, CombineModeExclude));
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Exclude(IN const GraphicsPath* path)
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionPath(nativeRegion, path->nativePath, CombineModeExclude));
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Exclude(IN const Region* region)
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRegion(nativeRegion,
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                               region->nativeRegion, CombineModeExclude));
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Complement(IN const RectF& rect)
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRect(nativeRegion, &rect, CombineModeComplement));
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Complement(IN const Rect& rect)
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRectI(nativeRegion, &rect, CombineModeComplement));
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Complement(IN const GraphicsPath* path)
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionPath(nativeRegion,
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                path->nativePath, CombineModeComplement));
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Complement(IN const Region* region)
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipCombineRegionRegion(nativeRegion,
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  region->nativeRegion, CombineModeComplement));
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Transform operations
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Translate(IN REAL dx,
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  IN REAL dy)
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipTranslateRegion(nativeRegion, dx, dy));
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Translate(IN INT dx,
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  IN INT dy)
272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipTranslateRegionI(nativeRegion, dx, dy));
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Transform(IN const Matrix* matrix)
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipTransformRegion(nativeRegion, matrix->nativeMatrix));
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Get region attributes
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::GetBounds(OUT RectF* rect,
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  IN const Graphics* g) const
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipGetRegionBounds(nativeRegion,
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                g->nativeGraphics,
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                rect));
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::GetBounds(OUT Rect* rect,
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  IN const Graphics* g) const
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipGetRegionBoundsI(nativeRegion,
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                g->nativeGraphics,
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                rect));
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline HRGN
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::GetHRGN(IN const Graphics* g) const
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    HRGN hrgn;
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetRegionHRgn(nativeRegion,
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                            g->nativeGraphics,
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                            &hrgn));
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return hrgn;
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::IsEmpty(IN const Graphics *g) const
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    BOOL booln = FALSE;
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipIsEmptyRegion(nativeRegion,
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                            g->nativeGraphics,
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                            &booln));
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return booln;
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
328ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::IsInfinite(IN const Graphics *g) const
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    BOOL booln = FALSE;
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipIsInfiniteRegion(nativeRegion,
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                 g->nativeGraphics,
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                 &booln));
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return booln;
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::Equals(IN const Region* region,
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov               IN const Graphics* g) const
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    BOOL booln = FALSE;
344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipIsEqualRegion(nativeRegion,
346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                              region->nativeRegion,
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                              g->nativeGraphics,
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                              &booln));
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return booln;
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Get the size of the buffer needed for the GetData method
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline UINT
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::GetDataSize() const
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    UINT     bufferSize = 0;
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetRegionDataSize(nativeRegion, &bufferSize));
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return bufferSize;
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// buffer     - where to put the data
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// bufferSize - how big the buffer is (should be at least as big as GetDataSize())
365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// sizeFilled - if not NULL, this is an OUT param that says how many bytes
366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//              of data were written to the buffer.
367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
368ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::GetData(OUT BYTE* buffer,
369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                IN UINT bufferSize,
370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                OUT UINT* sizeFilled) const
371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipGetRegionData(nativeRegion, buffer, bufferSize, sizeFilled));
373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Hit testing operations
377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
379ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::IsVisible(IN const PointF& point,
380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  IN const Graphics* g) const
381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    BOOL booln = FALSE;
383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipIsVisibleRegionPoint(nativeRegion,
385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                     point.X, point.Y,
386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                     (g == NULL) ? NULL : g->nativeGraphics,
387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                     &booln));
388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return booln;
389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
392ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::IsVisible(IN const RectF& rect,
393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  IN const Graphics* g) const
394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    BOOL booln = FALSE;
396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipIsVisibleRegionRect(nativeRegion, rect.X,
398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                    rect.Y, rect.Width,
399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                    rect.Height,
400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                    (g == NULL) ? NULL : g->nativeGraphics,
401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                    &booln));
402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return booln;
403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
406ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::IsVisible(IN const Point& point,
407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  IN const Graphics* g) const
408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    BOOL booln = FALSE;
410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipIsVisibleRegionPointI(nativeRegion,
413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                   point.X,
414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                   point.Y,
415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                   (g == NULL) ? NULL : g->nativeGraphics,
416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                   &booln));
417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return booln;
418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline BOOL
421ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::IsVisible(IN const Rect& rect,
422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                  IN const Graphics* g) const
423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    BOOL booln = FALSE;
425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipIsVisibleRegionRectI(nativeRegion,
427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  rect.X,
428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  rect.Y,
429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  rect.Width,
430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  rect.Height,
431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  (g == NULL) ? NULL : g->nativeGraphics,
432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  &booln));
433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return booln;
434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline UINT
437ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::GetRegionScansCount(IN const Matrix* matrix) const
438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    UINT count = 0;
440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetStatus(DllExports::GdipGetRegionScansCount(nativeRegion,
442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  &count,
443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                  matrix->nativeMatrix));
444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return count;
445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
448ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::GetRegionScans(
449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN const Matrix* matrix,
450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    OUT RectF* rects,
451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN OUT INT* count) const
452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipGetRegionScans(nativeRegion,
454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                          rects,
455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                          count,
456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                          matrix->nativeMatrix));
457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// If rects is NULL, return the count of rects in the region.
460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Otherwise, assume rects is big enough to hold all the region rects
461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// and fill them in and return the number of rects filled in.
462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// The rects are returned in the units specified by the matrix
463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// (which is typically a world-to-device transform).
464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Note that the number of rects returned can vary, depending on the
465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// matrix that is used.
466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status
467ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovRegion::GetRegionScans(
468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN const Matrix* matrix,
469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    OUT Rect* rects,       // NULL to just get the count
470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    IN OUT INT* count) const
471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return SetStatus(DllExports::GdipGetRegionScansI(nativeRegion,
473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                          rects,
474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                          count,
475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                          matrix->nativeMatrix));
476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// protected method
479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Region::Region(GpRegion* nativeRegion)
480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SetNativeRegion(nativeRegion);
482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// protected method
485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline VOID Region::SetNativeRegion(GpRegion* nativeRegion)
486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    this->nativeRegion = nativeRegion;
488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovinline Status Region::GetLastStatus() const
491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    Status lastStatus = lastResult;
493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    lastResult = Ok;
494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return lastStatus;
496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif // !_GDIPLUSREGION_H
499