1 /*
2 * Copyright (C) 2008 Google (Lei Zhang)
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 #include <stdarg.h>
20
21 #include "windef.h"
22 #include "winbase.h"
23 #include "wingdi.h"
24
25 #include "objbase.h"
26
27 #include "gdiplus.h"
28 #include "gdiplus_private.h"
29 #include "wine/debug.h"
30
31 WINE_DEFAULT_DEBUG_CHANNEL(gdiplus);
32
33 /**********************************************************
34 *
35 * Data returned by GdipGetRegionData (for rectangle based regions)
36 * looks something like this:
37 *
38 * struct region_data_header
39 * {
40 * DWORD size; size in bytes of the data - 8.
41 * DWORD magic1; probably a checksum.
42 * DWORD magic2; always seems to be 0xdbc01001 - version?
43 * DWORD num_ops; number of combining ops * 2
44 * };
45 *
46 * Then follows a sequence of combining ops and RECTFs.
47 *
48 * Combining ops are just stored as their CombineMode value.
49 *
50 * Each RECTF is preceded by the DWORD 0x10000000. An empty rect is
51 * stored as 0x10000002 (with no following RECTF) and an infinite rect
52 * is stored as 0x10000003 (again with no following RECTF).
53 *
54 * The combining ops are stored in the reverse order to the RECTFs and in the
55 * reverse order to which the region was constructed.
56 *
57 * When two or more complex regions (ie those with more than one rect)
58 * are combined, the combining op for the two regions comes first,
59 * then the combining ops for the rects in region 1, followed by the
60 * rects for region 1, then follows the combining ops for region 2 and
61 * finally region 2's rects. Presumably you're supposed to use the
62 * 0x10000000 rect header to find the end of the op list (the count of
63 * the rects in each region is not stored).
64 *
65 * When a simple region (1 rect) is combined, it's treated as if a single rect
66 * is being combined.
67 *
68 */
69
70 GpStatus WINGDIPAPI GdipCreateRegion(GpRegion **region)
71 {
72 FIXME("(%p): stub\n", region);
73
74 *region = NULL;
75 return NotImplemented;
76 }
77
78 GpStatus WINGDIPAPI GdipCreateRegionPath(GpPath *path, GpRegion **region)
79 {
80 FIXME("(%p, %p): stub\n", path, region);
81
82 *region = NULL;
83 return NotImplemented;
84 }
85
86 GpStatus WINGDIPAPI GdipDeleteRegion(GpRegion *region)
87 {
88 FIXME("(%p): stub\n", region);
89 return NotImplemented;
90 }
91
92 GpStatus WINGDIPAPI GdipGetRegionHRgn(GpRegion *region, GpGraphics *graphics, HRGN *hrgn)
93 {
94 FIXME("(%p, %p, %p): stub\n", region, graphics, hrgn);
95
96 *hrgn = NULL;
97 return NotImplemented;
98 }
99
100 GpStatus WINGDIPAPI GdipSetEmpty(GpRegion *region)
101 {
102 static int calls;
103
104 if(!(calls++))
105 FIXME("not implemented\n");
106
107 return NotImplemented;
108 }
109
110 GpStatus WINGDIPAPI GdipSetInfinite(GpRegion *region)
111 {
112 static int calls;
113
114 if(!(calls++))
115 FIXME("not implemented\n");
116
117 return NotImplemented;
118 }
119
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.