xref: /reactos/win32ss/gdi/gdi32/objects/arc.c (revision 98e8827a)
1 #include <precomp.h>
2 
3 BOOL
4 WINAPI
5 Arc(
6     _In_ HDC hdc,
7     _In_ INT xLeft,
8     _In_ INT yTop,
9     _In_ INT xRight,
10     _In_ INT yBottom,
11     _In_ INT xStartArc,
12     _In_ INT yStartArc,
13     _In_ INT xEndArc,
14     _In_ INT yEndArc)
15 {
16     HANDLE_METADC(BOOL,
17                   Arc,
18                   FALSE,
19                   hdc,
20                   xLeft,
21                   yTop,
22                   xRight,
23                   yBottom,
24                   xStartArc,
25                   yStartArc,
26                   xEndArc,
27                   yEndArc);
28 
29     if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
30 
31     return NtGdiArcInternal(GdiTypeArc,
32                             hdc,
33                             xLeft,
34                             yTop,
35                             xRight,
36                             yBottom,
37                             xStartArc,
38                             yStartArc,
39                             xEndArc,
40                             yEndArc);
41 }
42 
43 
44 /*
45  * @implemented
46  */
47 BOOL
48 WINAPI
49 AngleArc(
50     _In_ HDC hdc,
51     _In_ INT x,
52     _In_ INT y,
53     _In_ DWORD dwRadius,
54     _In_ FLOAT eStartAngle,
55     _In_ FLOAT eSweepAngle)
56 {
57     HANDLE_EMETAFDC(BOOL,
58                   AngleArc,
59                   FALSE,
60                   hdc,
61                   x,
62                   y,
63                   dwRadius,
64                   eStartAngle,
65                   eSweepAngle);
66 
67     if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
68 
69     return NtGdiAngleArc(hdc,
70                          x,
71                          y,
72                          dwRadius,
73                          RCAST(DWORD, eStartAngle),
74                          RCAST(DWORD, eSweepAngle));
75 }
76 
77 BOOL
78 WINAPI
79 ArcTo(
80     _In_ HDC hdc,
81     _In_ INT xLeft,
82     _In_ INT yTop,
83     _In_ INT xRight,
84     _In_ INT yBottom,
85     _In_ INT xRadial1,
86     _In_ INT yRadial1,
87     _In_ INT xRadial2,
88     _In_ INT yRadial2)
89 {
90     HANDLE_EMETAFDC(BOOL,
91                   ArcTo,
92                   FALSE,
93                   hdc,
94                   xLeft,
95                   yTop,
96                   xRight,
97                   yBottom,
98                   xRadial1,
99                   yRadial1,
100                   xRadial2,
101                   yRadial2);
102 
103     if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
104 
105     return NtGdiArcInternal(GdiTypeArcTo,
106                             hdc,
107                             xLeft,
108                             yTop,
109                             xRight,
110                             yBottom,
111                             xRadial1,
112                             yRadial1,
113                             xRadial2,
114                             yRadial2);
115 }
116 
117 BOOL
118 WINAPI
119 Chord(
120     _In_ HDC hdc,
121     _In_ INT xLeft,
122     _In_ INT yTop,
123     _In_ INT xRight,
124     _In_ INT yBottom,
125     _In_ INT xRadial1,
126     _In_ INT yRadial1,
127     _In_ INT xRadial2,
128     _In_ INT yRadial2)
129 {
130     HANDLE_METADC(BOOL,
131                   Chord,
132                   FALSE,
133                   hdc,
134                   xLeft,
135                   yTop,
136                   xRight,
137                   yBottom,
138                   xRadial1,
139                   yRadial1,
140                   xRadial2,
141                   yRadial2);
142 
143     if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
144 
145     return NtGdiArcInternal(GdiTypeChord,
146                             hdc,
147                             xLeft,
148                             yTop,
149                             xRight,
150                             yBottom,
151                             xRadial1,
152                             yRadial1,
153                             xRadial2,
154                             yRadial2);
155 }
156 
157 
158 /*
159  * @unimplemented
160  */
161 BOOL
162 WINAPI
163 Pie(
164     _In_ HDC hdc,
165     _In_ INT xLeft,
166     _In_ INT yTop,
167     _In_ INT xRight,
168     _In_ INT yBottom,
169     _In_ INT xRadial1,
170     _In_ INT yRadial1,
171     _In_ INT xRadial2,
172     _In_ INT yRadial2)
173 {
174     HANDLE_METADC(BOOL,
175                   Pie,
176                   FALSE,
177                   hdc,
178                   xLeft,
179                   yTop,
180                   xRight,
181                   yBottom,
182                   xRadial1,
183                   yRadial1,
184                   xRadial2,
185                   yRadial2);
186 
187     if ( GdiConvertAndCheckDC(hdc) == NULL ) return FALSE;
188 
189     return NtGdiArcInternal(GdiTypePie,
190                             hdc,
191                             xLeft,
192                             yTop,
193                             xRight,
194                             yBottom,
195                             xRadial1,
196                             yRadial1,
197                             xRadial2,
198                             yRadial2);
199 }
200 
201 
202