Use "CALL" and "RET" in capital letters for distinction.
[wine.git] / objects / dcvalues.c
blob9afd47a079535a029fd47482dbe52595db62fcb4
1 /*
2 * DC device-independent Get/SetXXX functions
4 * Copyright 1993 Alexandre Julliard
6 */
8 #include "gdi.h"
9 #include "dc.h"
11 #define DC_GET_VAL_16( func_type, func_name, dc_field ) \
12 func_type WINAPI func_name( HDC16 hdc ) \
13 { \
14 DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \
15 if (!dc) return 0; \
16 return dc->dc_field; \
19 #define DC_GET_VAL_32( func_type, func_name, dc_field ) \
20 func_type WINAPI func_name( HDC hdc ) \
21 { \
22 DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \
23 if (!dc) return 0; \
24 return dc->dc_field; \
27 #define DC_GET_X_Y( func_type, func_name, ret_x, ret_y ) \
28 func_type WINAPI func_name( HDC16 hdc ) \
29 { \
30 DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \
31 if (!dc) return 0; \
32 return MAKELONG( dc->ret_x, dc->ret_y ); \
35 /* DC_GET_VAL_EX is used to define functions returning a POINT or a SIZE. It is
36 * important that the function has the right signature, for the implementation
37 * we can do whatever we want.
39 #define DC_GET_VAL_EX( func_name, ret_x, ret_y, type ) \
40 BOOL16 WINAPI func_name##16( HDC16 hdc, LP##type##16 pt ) \
41 { \
42 DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \
43 if (!dc) return FALSE; \
44 ((LPPOINT16)pt)->x = dc->ret_x; \
45 ((LPPOINT16)pt)->y = dc->ret_y; \
46 return TRUE; \
47 } \
49 BOOL WINAPI func_name( HDC hdc, LP##type pt ) \
50 { \
51 DC * dc = (DC *) GDI_GetObjPtr( (HDC16)hdc, DC_MAGIC ); \
52 if (!dc) return FALSE; \
53 ((LPPOINT)pt)->x = dc->ret_x; \
54 ((LPPOINT)pt)->y = dc->ret_y; \
55 return TRUE; \
58 #define DC_SET_MODE( func_name, dc_field, min_val, max_val ) \
59 INT16 WINAPI func_name##16( HDC16 hdc, INT16 mode ) \
60 { \
61 return func_name( hdc, mode ); \
62 } \
64 INT WINAPI func_name( HDC hdc, INT mode ) \
65 { \
66 INT prevMode; \
67 DC *dc = DC_GetDCPtr( hdc ); \
68 if(!dc) return 0; \
69 if ((mode < min_val) || (mode > max_val)) return 0; \
70 if (dc->funcs->p##func_name) { \
71 prevMode = dc->funcs->p##func_name( dc, mode ); \
72 } else { \
73 prevMode = dc->dc_field; \
74 dc->dc_field = mode; \
75 } \
76 GDI_HEAP_UNLOCK( hdc ); \
77 return prevMode; \
80 /***********************************************************************
81 * SetBkMode (GDI.2) (GDI32.306)
84 DC_SET_MODE( SetBkMode, w.backgroundMode, TRANSPARENT, OPAQUE )
86 /***********************************************************************
87 * SetROP2 (GDI.4) (GDI32.331)
89 DC_SET_MODE( SetROP2, w.ROPmode, R2_BLACK, R2_WHITE )
91 /***********************************************************************
92 * SetRelAbs (GDI.5) (GDI32.333)
94 DC_SET_MODE( SetRelAbs, w.relAbsMode, ABSOLUTE, RELATIVE )
96 /***********************************************************************
97 * SetPolyFillMode (GDI.6) (GDI32.330)
99 DC_SET_MODE( SetPolyFillMode, w.polyFillMode, ALTERNATE, WINDING )
101 /***********************************************************************
102 * SetStretchBltMode (GDI.7) (GDI32.334)
104 DC_SET_MODE( SetStretchBltMode, w.stretchBltMode, BLACKONWHITE, HALFTONE )
106 /***********************************************************************
107 * GetBkColor16 (GDI.75)
109 DC_GET_VAL_16( COLORREF, GetBkColor16, w.backgroundColor )
111 /***********************************************************************
112 * GetBkColor (GDI32.145)
114 DC_GET_VAL_32( COLORREF, GetBkColor, w.backgroundColor )
116 /***********************************************************************
117 * GetBkMode16 (GDI.76)
119 DC_GET_VAL_16( INT16, GetBkMode16, w.backgroundMode )
121 /***********************************************************************
122 * GetBkMode (GDI32.146)
124 DC_GET_VAL_32( INT, GetBkMode, w.backgroundMode )
126 /***********************************************************************
127 * GetCurrentPosition16 (GDI.78)
129 DC_GET_X_Y( DWORD, GetCurrentPosition16, w.CursPosX, w.CursPosY )
131 /***********************************************************************
132 * GetMapMode16 (GDI.81)
134 DC_GET_VAL_16( INT16, GetMapMode16, w.MapMode )
136 /***********************************************************************
137 * GetMapMode (GDI32.196)
139 DC_GET_VAL_32( INT, GetMapMode, w.MapMode )
141 /***********************************************************************
142 * GetPolyFillMode16 (GDI.84)
144 DC_GET_VAL_16( INT16, GetPolyFillMode16, w.polyFillMode )
146 /***********************************************************************
147 * GetPolyFillMode (GDI32.213)
149 DC_GET_VAL_32( INT, GetPolyFillMode, w.polyFillMode )
151 /***********************************************************************
152 * GetROP216 (GDI.85)
154 DC_GET_VAL_16( INT16, GetROP216, w.ROPmode )
156 /***********************************************************************
157 * GetROP2 (GDI32.214)
159 DC_GET_VAL_32( INT, GetROP2, w.ROPmode )
161 /***********************************************************************
162 * GetRelAbs16 (GDI.86)
164 DC_GET_VAL_16( INT16, GetRelAbs16, w.relAbsMode )
166 /***********************************************************************
167 * GetStretchBltMode16 (GDI.88)
169 DC_GET_VAL_16( INT16, GetStretchBltMode16, w.stretchBltMode )
171 /***********************************************************************
172 * GetStretchBltMode (GDI32.221)
174 DC_GET_VAL_32( INT, GetStretchBltMode, w.stretchBltMode )
176 /***********************************************************************
177 * GetTextColor16 (GDI.90)
179 DC_GET_VAL_16( COLORREF, GetTextColor16, w.textColor )
181 /***********************************************************************
182 * GetTextColor (GDI32.227)
184 DC_GET_VAL_32( COLORREF, GetTextColor, w.textColor )
186 /***********************************************************************
187 * GetViewportExt16 (GDI.94)
189 DC_GET_X_Y( DWORD, GetViewportExt16, vportExtX, vportExtY )
191 /***********************************************************************
192 * GetViewportOrg16 (GDI.95)
194 DC_GET_X_Y( DWORD, GetViewportOrg16, vportOrgX, vportOrgY )
196 /***********************************************************************
197 * GetWindowExt16 (GDI.96)
199 DC_GET_X_Y( DWORD, GetWindowExt16, wndExtX, wndExtY )
201 /***********************************************************************
202 * GetWindowOrg16 (GDI.97)
204 DC_GET_X_Y( DWORD, GetWindowOrg16, wndOrgX, wndOrgY )
206 /***********************************************************************
207 * InquireVisRgn16 (GDI.131)
209 DC_GET_VAL_16( HRGN16, InquireVisRgn16, w.hVisRgn )
211 /***********************************************************************
212 * GetClipRgn16 (GDI.173)
214 DC_GET_VAL_16( HRGN16, GetClipRgn16, w.hClipRgn )
216 /***********************************************************************
217 * GetBrushOrg16 (GDI.149)
219 DC_GET_X_Y( DWORD, GetBrushOrg16, w.brushOrgX, w.brushOrgY )
221 /***********************************************************************
222 * GetTextAlign16 (GDI.345)
224 DC_GET_VAL_16( UINT16, GetTextAlign16, w.textAlign )
226 /***********************************************************************
227 * GetTextAlign (GDI32.224)
229 DC_GET_VAL_32( UINT, GetTextAlign, w.textAlign )
231 /***********************************************************************
232 * GetCurLogFont16 (GDI.411)
234 DC_GET_VAL_16( HFONT16, GetCurLogFont16, w.hFont )
236 /***********************************************************************
237 * GetBrushOrgEx (GDI.469) (GDI32.148)
239 DC_GET_VAL_EX( GetBrushOrgEx, w.brushOrgX, w.brushOrgY, POINT ) /* */
241 /***********************************************************************
242 * GetCurrentPositionEx (GDI.470) (GDI32.167)
244 DC_GET_VAL_EX( GetCurrentPositionEx, w.CursPosX, w.CursPosY, POINT )
246 /***********************************************************************
247 * GetViewportExtEx (GDI.472 GDI32.239)
249 DC_GET_VAL_EX( GetViewportExtEx, vportExtX, vportExtY, SIZE )
251 /***********************************************************************
252 * GetViewportOrgEx (GDI.473) (GDI32.240)
254 DC_GET_VAL_EX( GetViewportOrgEx, vportOrgX, vportOrgY, POINT )
256 /***********************************************************************
257 * GetWindowExtEx (GDI.474) (GDI32.242)
259 DC_GET_VAL_EX( GetWindowExtEx, wndExtX, wndExtY, SIZE )
261 /***********************************************************************
262 * GetWindowOrgEx (GDI.475) (GDI32.243)
264 DC_GET_VAL_EX( GetWindowOrgEx, wndOrgX, wndOrgY, POINT )