ReactOS  0.4.15-dev-1039-gb9754fa
dc.c File Reference
#include <precomp.h>
#include <debug.h>
Include dependency graph for dc.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

HDC FASTCALL IntCreateDICW (LPCWSTR lpwszDriver, LPCWSTR lpwszDevice, LPCWSTR lpwszOutput, PDEVMODEW lpInitData, ULONG iType)
 
HDC WINAPI CreateCompatibleDC (_In_ HDC hdc)
 
HDC WINAPI CreateDCA (LPCSTR lpszDriver, LPCSTR lpszDevice, LPCSTR lpszOutput, CONST DEVMODEA *lpdvmInit)
 
HDC WINAPI CreateDCW (LPCWSTR lpwszDriver, LPCWSTR lpwszDevice, LPCWSTR lpwszOutput, CONST DEVMODEW *lpInitData)
 
HDC WINAPI CreateICW (LPCWSTR lpszDriver, LPCWSTR lpszDevice, LPCWSTR lpszOutput, CONST DEVMODEW *lpdvmInit)
 
HDC WINAPI CreateICA (LPCSTR lpszDriver, LPCSTR lpszDevice, LPCSTR lpszOutput, CONST DEVMODEA *lpdvmInit)
 
BOOL WINAPI DeleteDC (HDC hdc)
 
INT WINAPI SaveDC (IN HDC hdc)
 
BOOL WINAPI RestoreDC (IN HDC hdc, IN INT iLevel)
 
BOOL WINAPI CancelDC (HDC hDC)
 
INT WINAPI GetArcDirection (_In_ HDC hdc)
 
INT WINAPI SetArcDirection (_In_ HDC hdc, _In_ INT nDirection)
 
BOOL WINAPI GdiReleaseDC (HDC hdc)
 
BOOL WINAPI GdiCleanCacheDC (HDC hdc)
 
HDC WINAPI GdiConvertAndCheckDC (HDC hdc)
 
HGDIOBJ WINAPI GetCurrentObject (_In_ HDC hdc, _In_ UINT uObjectType)
 
int WINAPI EnumObjects (HDC hdc, int nObjectType, GOBJENUMPROC lpObjectFunc, LPARAM lParam)
 
int WINAPI GetDeviceCaps (_In_ HDC hdc, _In_ int nIndex)
 
DWORD WINAPI GetRelAbs (_In_ HDC hdc, _In_ DWORD dwIgnore)
 
INT WINAPI SetRelAbs (HDC hdc, INT Mode)
 
DWORD WINAPI GetAndSetDCDWord (_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwIn, _In_ ULONG ulMFId, _In_ USHORT usMF16Id, _In_ DWORD dwError)
 
DWORD WINAPI GetDCDWord (_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwError)
 
BOOL WINAPI GetAspectRatioFilterEx (HDC hdc, LPSIZE lpAspectRatio)
 
UINT WINAPI GetBoundsRect (HDC hdc, LPRECT lprcBounds, UINT flags)
 
UINT WINAPI SetBoundsRect (HDC hdc, CONST RECT *prc, UINT flags)
 
int WINAPI GetClipBox (HDC hdc, LPRECT lprc)
 
COLORREF WINAPI GetDCBrushColor (_In_ HDC hdc)
 
COLORREF WINAPI GetDCPenColor (_In_ HDC hdc)
 
COLORREF WINAPI SetDCBrushColor (_In_ HDC hdc, _In_ COLORREF crColor)
 
COLORREF WINAPI SetDCPenColor (_In_ HDC hdc, _In_ COLORREF crColor)
 
COLORREF WINAPI GetBkColor (_In_ HDC hdc)
 
COLORREF WINAPI SetBkColor (_In_ HDC hdc, _In_ COLORREF crColor)
 
int WINAPI GetBkMode (HDC hdc)
 
int WINAPI SetBkMode (_In_ HDC hdc, _In_ int iBkMode)
 
int WINAPI GetROP2 (_In_ HDC hdc)
 
int WINAPI SetROP2 (_In_ HDC hdc, _In_ int rop2)
 
int WINAPI GetPolyFillMode (HDC hdc)
 
int WINAPI SetPolyFillMode (_In_ HDC hdc, _In_ int iPolyFillMode)
 
int WINAPI GetGraphicsMode (HDC hdc)
 
int WINAPI SetGraphicsMode (_In_ HDC hdc, _In_ int iMode)
 
HDC WINAPI ResetDCW (_In_ HDC hdc, _In_ CONST DEVMODEW *lpInitData)
 
HDC WINAPI ResetDCA (_In_ HDC hdc, _In_ CONST DEVMODEA *lpInitData)
 
HPALETTE WINAPI NtUserSelectPalette (HDC hDC, HPALETTE hpal, BOOL ForceBackground)
 
HPALETTE WINAPI SelectPalette (HDC hdc, HPALETTE hpal, BOOL bForceBackground)
 
int WINAPI GetStretchBltMode (HDC hdc)
 
int WINAPI SetStretchBltMode (_In_ HDC hdc, _In_ int iStretchMode)
 
HFONT WINAPI GetHFONT (HDC hdc)
 
HBITMAP WINAPI GdiSelectBitmap (_In_ HDC hdc, _In_ HBITMAP hbmp)
 
HBRUSH WINAPI GdiSelectBrush (_In_ HDC hdc, _In_ HBRUSH hbr)
 
HPEN WINAPI GdiSelectPen (_In_ HDC hdc, _In_ HPEN hpen)
 
HFONT WINAPI GdiSelectFont (_In_ HDC hdc, _In_ HFONT hfont)
 
HGDIOBJ WINAPI SelectObject (_In_ HDC hdc, _In_ HGDIOBJ hobj)
 
DWORD WINAPI D3DKMTCreateDCFromMemory (D3DKMT_CREATEDCFROMMEMORY *desc)
 
DWORD WINAPI D3DKMTDestroyDCFromMemory (const D3DKMT_DESTROYDCFROMMEMORY *desc)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 3 of file dc.c.

Function Documentation

◆ CancelDC()

BOOL WINAPI CancelDC ( HDC  hDC)

Definition at line 341 of file dc.c.

342 {
343  PDC_ATTR pDc_Attr;
344 
347  {
348  PLDC pLDC = GdiGetLDC(hDC);
349  if ( !pLDC )
350  {
352  return FALSE;
353  }
354  /* If a document has started set it to die. */
355  if (pLDC->Flags & LDC_INIT_DOCUMENT) pLDC->Flags |= LDC_KILL_DOCUMENT;
356 
357  return NtGdiCancelDC(hDC);
358  }
359 
361  {
362  pDc_Attr->ulDirty_ &= ~DC_PLAYMETAFILE;
363  return TRUE;
364  }
365 
366  return FALSE;
367 }
#define TRUE
Definition: types.h:120
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
__kernel_entry W32KAPI BOOL APIENTRY NtGdiCancelDC(_In_ HDC hdc)
ULONG Flags
Definition: ntgdihdl.h:278
#define LDC_KILL_DOCUMENT
Definition: ntgdihdl.h:178
#define FALSE
Definition: types.h:117
#define LDC_INIT_DOCUMENT
Definition: ntgdihdl.h:173
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
PLDC FASTCALL GdiGetLDC(HDC hDC)
Definition: misc.c:785
#define DC_PLAYMETAFILE
Definition: ntgdihdl.h:156
#define SetLastError(x)
Definition: compat.h:500
#define GDI_OBJECT_TYPE_METADC
Definition: gdi.h:57
Definition: ntgdihdl.h:275
#define GDI_OBJECT_TYPE_DC
Definition: gdi.h:46
static HDC hDC
Definition: 3dtext.c:33
PVOID GdiGetHandleUserData(_In_ HGDIOBJ hobj)
Definition: gditools.c:68

◆ CreateCompatibleDC()

HDC WINAPI CreateCompatibleDC ( _In_ HDC  hdc)

Definition at line 97 of file dc.c.

99 {
100  HDC hdcNew;
101 // PDC_ATTR pdcattr;
102 
103  hdcNew = NtGdiCreateCompatibleDC(hdc);
104 #if 0
105  if ( hdc && hdcNew)
106  {
108  {
109  if (pdcattr->pvLIcm) IcmCompatibleDC(hdcNew, hdc, pdcattr);
110  }
111  }
112 #endif
113 
114  return hdcNew;
115 }
static HDC
Definition: imagelist.c:92
#define GDI_OBJECT_TYPE_DC
Definition: gdi.h:46
HDC hdc
Definition: main.c:9
__kernel_entry W32KAPI HDC APIENTRY NtGdiCreateCompatibleDC(_In_opt_ HDC hdc)
PVOID GdiGetHandleUserData(_In_ HGDIOBJ hobj)
Definition: gditools.c:68

Referenced by test_boundsrect(), test_CreateCompatibleDC(), test_DC_bitmap(), and test_printer_dc().

◆ CreateDCA()

HDC WINAPI CreateDCA ( LPCSTR  lpszDriver,
LPCSTR  lpszDevice,
LPCSTR  lpszOutput,
CONST DEVMODEA lpdvmInit 
)

Definition at line 122 of file dc.c.

127 {
128  ANSI_STRING DriverA, DeviceA, OutputA;
129  UNICODE_STRING DriverU, DeviceU, OutputU;
130  LPDEVMODEW dvmInitW = NULL;
131  HDC hdc;
132 
133  /*
134  * If needed, convert to Unicode
135  * any string parameter.
136  */
137 
138  if (lpszDriver != NULL)
139  {
140  RtlInitAnsiString(&DriverA, (LPSTR)lpszDriver);
141  RtlAnsiStringToUnicodeString(&DriverU, &DriverA, TRUE);
142  }
143  else
144  {
145  DriverU.Buffer = NULL;
146  }
147 
148  if (lpszDevice != NULL)
149  {
150  RtlInitAnsiString(&DeviceA, (LPSTR)lpszDevice);
151  RtlAnsiStringToUnicodeString(&DeviceU, &DeviceA, TRUE);
152  }
153  else
154  {
155  DeviceU.Buffer = NULL;
156  }
157 
158  if (lpszOutput != NULL)
159  {
160  RtlInitAnsiString(&OutputA, (LPSTR)lpszOutput);
161  RtlAnsiStringToUnicodeString(&OutputU, &OutputA, TRUE);
162  }
163  else
164  {
165  OutputU.Buffer = NULL;
166  }
167 
168  if (lpdvmInit != NULL)
169  dvmInitW = GdiConvertToDevmodeW((LPDEVMODEA)lpdvmInit);
170 
171  hdc = IntCreateDICW(DriverU.Buffer,
172  DeviceU.Buffer,
173  OutputU.Buffer,
174  lpdvmInit ? dvmInitW : NULL,
175  0);
176  HEAP_free(dvmInitW);
177 
178  /* Free Unicode parameters. */
179  RtlFreeUnicodeString(&DriverU);
180  RtlFreeUnicodeString(&DeviceU);
181  RtlFreeUnicodeString(&OutputU);
182 
183  /* Return the DC handle. */
184  return hdc;
185 }
VOID HEAP_free(LPVOID memory)
Definition: heap.c:63
#define TRUE
Definition: types.h:120
static HDC
Definition: imagelist.c:92
char * LPSTR
Definition: xmlstorage.h:182
DEVMODEW *WINAPI GdiConvertToDevmodeW(const DEVMODEA *)
Definition: misc.c:969
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
smooth NULL
Definition: ftsmooth.c:416
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
HDC hdc
Definition: main.c:9
HDC FASTCALL IntCreateDICW(LPCWSTR lpwszDriver, LPCWSTR lpwszDevice, LPCWSTR lpwszOutput, PDEVMODEW lpInitData, ULONG iType)
Definition: dc.c:8
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)

Referenced by create_printer_dc(), test_CreateCompatibleDC(), test_dc_values(), and test_savedc().

◆ CreateDCW()

HDC WINAPI CreateDCW ( LPCWSTR  lpwszDriver,
LPCWSTR  lpwszDevice,
LPCWSTR  lpwszOutput,
CONST DEVMODEW lpInitData 
)

Definition at line 193 of file dc.c.

198 {
199  return IntCreateDICW(lpwszDriver,
200  lpwszDevice,
201  lpwszOutput,
202  (PDEVMODEW)lpInitData,
203  0);
204 }
HDC FASTCALL IntCreateDICW(LPCWSTR lpwszDriver, LPCWSTR lpwszDevice, LPCWSTR lpwszOutput, PDEVMODEW lpInitData, ULONG iType)
Definition: dc.c:8

◆ CreateICA()

HDC WINAPI CreateICA ( LPCSTR  lpszDriver,
LPCSTR  lpszDevice,
LPCSTR  lpszOutput,
CONST DEVMODEA lpdvmInit 
)

Definition at line 231 of file dc.c.

236 {
238  LPWSTR lpszDriverW, lpszDeviceW, lpszOutputW;
239  LPDEVMODEW dvmInitW = NULL;
240  HDC hdc = 0;
241 
242  Status = HEAP_strdupA2W(&lpszDriverW, lpszDriver);
243  if (!NT_SUCCESS(Status))
245  else
246  {
247  Status = HEAP_strdupA2W(&lpszDeviceW, lpszDevice);
248  if (!NT_SUCCESS(Status))
250  else
251  {
252  Status = HEAP_strdupA2W(&lpszOutputW, lpszOutput);
253  if (!NT_SUCCESS(Status))
255  else
256  {
257  if (lpdvmInit)
258  dvmInitW = GdiConvertToDevmodeW((LPDEVMODEA)lpdvmInit);
259 
260  hdc = IntCreateDICW(lpszDriverW,
261  lpszDeviceW,
262  lpszOutputW,
263  lpdvmInit ? dvmInitW : NULL,
264  1 );
265  HEAP_free(dvmInitW);
266  HEAP_free(lpszOutputW);
267  }
268  HEAP_free(lpszDeviceW);
269  }
270  HEAP_free(lpszDriverW);
271  }
272 
273  return hdc;
274 }
VOID HEAP_free(LPVOID memory)
Definition: heap.c:63
LONG NTSTATUS
Definition: precomp.h:26
static HDC
Definition: imagelist.c:92
DEVMODEW *WINAPI GdiConvertToDevmodeW(const DEVMODEA *)
Definition: misc.c:969
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
smooth NULL
Definition: ftsmooth.c:416
NTSTATUS HEAP_strdupA2W(LPWSTR *ppszW, LPCSTR lpszA)
Definition: heap.c:43
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define SetLastError(x)
Definition: compat.h:500
Status
Definition: gdiplustypes.h:24
HDC hdc
Definition: main.c:9
HDC FASTCALL IntCreateDICW(LPCWSTR lpwszDriver, LPCWSTR lpwszDevice, LPCWSTR lpwszOutput, PDEVMODEW lpInitData, ULONG iType)
Definition: dc.c:8
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ CreateICW()

HDC WINAPI CreateICW ( LPCWSTR  lpszDriver,
LPCWSTR  lpszDevice,
LPCWSTR  lpszOutput,
CONST DEVMODEW lpdvmInit 
)

Definition at line 212 of file dc.c.

217 {
218  return IntCreateDICW(lpszDriver,
219  lpszDevice,
220  lpszOutput,
221  (PDEVMODEW)lpdvmInit,
222  1);
223 }
HDC FASTCALL IntCreateDICW(LPCWSTR lpwszDriver, LPCWSTR lpwszDevice, LPCWSTR lpwszOutput, PDEVMODEW lpInitData, ULONG iType)
Definition: dc.c:8

◆ D3DKMTCreateDCFromMemory()

DWORD WINAPI D3DKMTCreateDCFromMemory ( D3DKMT_CREATEDCFROMMEMORY desc)

Definition at line 1546 of file dc.c.

1547 {
1549 }
static const WCHAR desc[]
Definition: protectdata.c:36
__kernel_entry W32KAPI DWORD APIENTRY NtGdiDdDDICreateDCFromMemory(_Inout_ D3DKMT_CREATEDCFROMMEMORY *desc)

◆ D3DKMTDestroyDCFromMemory()

DWORD WINAPI D3DKMTDestroyDCFromMemory ( const D3DKMT_DESTROYDCFROMMEMORY desc)

Definition at line 1551 of file dc.c.

1552 {
1554 }
__kernel_entry W32KAPI DWORD APIENTRY NtGdiDdDDIDestroyDCFromMemory(_In_ CONST D3DKMT_DESTROYDCFROMMEMORY *desc)
static const WCHAR desc[]
Definition: protectdata.c:36

◆ DeleteDC()

BOOL WINAPI DeleteDC ( HDC  hdc)

Definition at line 282 of file dc.c.

283 {
284  BOOL bResult = TRUE;
285  PLDC pLDC = NULL;
286  HANDLE hPrinter = NULL;
287  ULONG hType = GDI_HANDLE_GET_TYPE(hdc);
288 
289  pLDC = GdiGetLDC(hdc);
290 
291  if (hType != GDILoObjType_LO_DC_TYPE)
292  {
293  return METADC_DeleteDC(hdc);
294  }
295 
296  bResult = NtGdiDeleteObjectApp(hdc);
297 
298  if (bResult && pLDC)
299  {
300  DPRINT1("Delete the Local DC structure\n");
301  LocalFree( pLDC );
302  }
303 
304  if (hPrinter)
305  fpClosePrinter(hPrinter);
306 
307  return bResult;
308 }
BOOL WINAPI METADC_DeleteDC(_In_ HDC hdc)
Definition: rosglue.c:1270
#define TRUE
Definition: types.h:120
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
PLDC FASTCALL GdiGetLDC(HDC hDC)
Definition: misc.c:785
Definition: ntgdihdl.h:275
HDC hdc
Definition: main.c:9
__kernel_entry W32KAPI BOOL APIENTRY NtGdiDeleteObjectApp(_In_ HANDLE hobj)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
#define DPRINT1
Definition: precomp.h:8
unsigned int ULONG
Definition: retypes.h:1
CLOSEPRINTER fpClosePrinter
Definition: printdrv.c:43

Referenced by test_boundsrect(), test_CreateCompatibleDC(), test_dc_values(), test_DeleteDC(), test_printer_dc(), test_pscript_printer_dc(), and test_savedc().

◆ EnumObjects()

int WINAPI EnumObjects ( HDC  hdc,
int  nObjectType,
GOBJENUMPROC  lpObjectFunc,
LPARAM  lParam 
)

Definition at line 502 of file dc.c.

506 {
507  ULONG ObjectsCount;
508  ULONG Size;
509  PVOID Buffer = NULL;
510  DWORD_PTR EndOfBuffer;
511  int Result = 0;
512 
513  switch (nObjectType)
514  {
515  case OBJ_BRUSH:
516  Size = sizeof(LOGBRUSH);
517  break;
518 
519  case OBJ_PEN:
520  Size = sizeof(LOGPEN);
521  break;
522 
523  default:
525  return 0;
526  }
527 
528  ObjectsCount = NtGdiEnumObjects(hdc, nObjectType, 0, NULL);
529  if (!ObjectsCount) return 0;
530 
531  Buffer = HeapAlloc(GetProcessHeap(), 0, ObjectsCount * Size);
532  if (!Buffer)
533  {
535  return 0;
536  }
537 
538  if (!NtGdiEnumObjects(hdc, nObjectType, ObjectsCount * Size, Buffer))
539  {
541  return 0;
542  }
543 
544  EndOfBuffer = (DWORD_PTR)Buffer + (ObjectsCount * Size);
545  while ((DWORD_PTR)Buffer < EndOfBuffer)
546  {
547  Result = lpObjectFunc(Buffer, lParam);
548  if (!Result) break;
549  Buffer = (PVOID)((DWORD_PTR)Buffer + Size);
550  }
551 
553  return Result;
554 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define DWORD_PTR
Definition: treelist.c:76
__kernel_entry W32KAPI ULONG APIENTRY NtGdiEnumObjects(_In_ HDC hdc, _In_ INT iObjectType, _In_ ULONG cjBuf, _Out_writes_bytes_opt_(cjBuf) PVOID pvBuf)
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define OBJ_PEN
Definition: objidl.idl:1409
smooth NULL
Definition: ftsmooth.c:416
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
Definition: bufpool.h:45
void * PVOID
Definition: retypes.h:9
#define GetProcessHeap()
Definition: compat.h:484
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
uint32_t DWORD_PTR
Definition: typedefs.h:65
struct tagLOGPEN LOGPEN
#define OBJ_BRUSH
Definition: objidl.idl:1410
unsigned int ULONG
Definition: retypes.h:1
struct tagLOGBRUSH LOGBRUSH
LPARAM lParam
Definition: combotst.c:139
#define HeapFree(x, y, z)
Definition: compat.h:483

◆ GdiCleanCacheDC()

BOOL WINAPI GdiCleanCacheDC ( HDC  hdc)

Definition at line 403 of file dc.c.

404 {
406  return TRUE;
408  return FALSE;
409 }
#define TRUE
Definition: types.h:120
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
#define FALSE
Definition: types.h:117
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9

◆ GdiConvertAndCheckDC()

HDC WINAPI GdiConvertAndCheckDC ( HDC  hdc)

Definition at line 416 of file dc.c.

417 {
418  PLDC pldc;
419  ULONG hType = GDI_HANDLE_GET_TYPE(hdc);
421  return hdc;
422  pldc = GdiGetLDC(hdc);
423  if (pldc)
424  {
425  if (pldc->Flags & LDC_SAPCALLBACK) GdiSAPCallback(pldc);
426  if (pldc->Flags & LDC_KILL_DOCUMENT) return NULL;
427  if (pldc->Flags & LDC_STARTPAGE) StartPage(hdc);
428  return hdc;
429  }
431  return NULL;
432 }
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
ULONG Flags
Definition: ntgdihdl.h:278
int WINAPI StartPage(_In_ HDC)
#define LDC_KILL_DOCUMENT
Definition: ntgdihdl.h:178
smooth NULL
Definition: ftsmooth.c:416
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
#define LDC_STARTPAGE
Definition: ntgdihdl.h:175
VOID GdiSAPCallback(PLDC pldc)
Definition: misc.c:819
PLDC FASTCALL GdiGetLDC(HDC hDC)
Definition: misc.c:785
#define SetLastError(x)
Definition: compat.h:500
Definition: ntgdihdl.h:275
HDC hdc
Definition: main.c:9
#define LDC_SAPCALLBACK
Definition: ntgdihdl.h:172
unsigned int ULONG
Definition: retypes.h:1

Referenced by AngleArc(), Arc(), ArcTo(), BitBlt(), Chord(), Ellipse(), ExtFloodFill(), ExtTextOutW(), FillRgn(), FrameRgn(), GdiAlphaBlend(), GdiGradientFill(), GdiTransparentBlt(), InvertRgn(), LineTo(), MaskBlt(), PatBlt(), Pie(), PlgBlt(), PolyBezier(), PolyBezierTo(), PolyDraw(), Polygon(), Polyline(), PolylineTo(), PolyPolygon(), PolyPolyline(), Rectangle(), RoundRect(), SetPixel(), StretchBlt(), and StretchDIBits().

◆ GdiReleaseDC()

BOOL WINAPI GdiReleaseDC ( HDC  hdc)

Definition at line 392 of file dc.c.

393 {
394  return 0;
395 }

Referenced by ReleaseDC().

◆ GdiSelectBitmap()

HBITMAP WINAPI GdiSelectBitmap ( _In_ HDC  hdc,
_In_ HBITMAP  hbmp 
)

Definition at line 1379 of file dc.c.

1382 {
1383  return NtGdiSelectBitmap(hdc, hbmp);
1384 }
__kernel_entry W32KAPI HBITMAP APIENTRY NtGdiSelectBitmap(_In_ HDC hdc, _In_ HBITMAP hbm)
HBITMAP hbmp
HDC hdc
Definition: main.c:9

Referenced by SelectObject().

◆ GdiSelectBrush()

HBRUSH WINAPI GdiSelectBrush ( _In_ HDC  hdc,
_In_ HBRUSH  hbr 
)

Definition at line 1388 of file dc.c.

1391 {
1392  PDC_ATTR pdcattr;
1393  HBRUSH hbrOld;
1394 
1395  HANDLE_METADC(HBRUSH, SelectBrush, NULL, hdc, hbr);
1396 
1397  /* Get the DC attribute */
1398  pdcattr = GdiGetDcAttr(hdc);
1399  if (pdcattr == NULL)
1400  {
1402  return NULL;
1403  }
1404 
1405  /* Get the current brush. If it matches the new brush, we're done */
1406  hbrOld = pdcattr->hbrush;
1407  if (hbrOld == hbr)
1408  return hbrOld;
1409 
1410  /* Set the new brush and update dirty flags */
1411  pdcattr->hbrush = hbr;
1412  pdcattr->ulDirty_ |= DC_BRUSH_DIRTY;
1413  return hbrOld;
1414 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
HANDLE hbrush
Definition: ntgdihdl.h:299
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
smooth NULL
Definition: ftsmooth.c:416
ULONG ulDirty_
Definition: ntgdihdl.h:298
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
#define DC_BRUSH_DIRTY
Definition: ntgdihdl.h:157
#define SelectBrush(hdc, hbr)
Definition: windowsx.h:490

Referenced by SelectObject().

◆ GdiSelectFont()

HFONT WINAPI GdiSelectFont ( _In_ HDC  hdc,
_In_ HFONT  hfont 
)

Definition at line 1448 of file dc.c.

1451 {
1452  PDC_ATTR pdcattr;
1453  HFONT hfontOld;
1454 
1456 
1457  /* Get the DC attribute */
1458  pdcattr = GdiGetDcAttr(hdc);
1459  if (pdcattr == NULL)
1460  {
1462  return NULL;
1463  }
1464 
1465  /* Get the current font. If it matches the new font, we're done */
1466  hfontOld = pdcattr->hlfntNew;
1467  if (hfontOld == hfont)
1468  return hfontOld;
1469 
1470  /* Set the new font and update dirty flags */
1471  pdcattr->hlfntNew = hfont;
1472  pdcattr->ulDirty_ &= ~SLOW_WIDTHS;
1473  pdcattr->ulDirty_ |= DIRTY_CHARSET;
1474 
1475  /* If the DC does not have a DIB section selected, try a batch command */
1476  if (!(pdcattr->ulDirty_ & DC_DIBSECTION))
1477  {
1478  PGDIBSOBJECT pgO;
1479 
1481  if (pgO)
1482  {
1483  pgO->hgdiobj = hfont;
1484  return hfontOld;
1485  }
1486  }
1487 
1488  /* We could not use the batch command, call win32k */
1489  return NtGdiSelectFont(hdc, hfont);
1490 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define DIRTY_CHARSET
Definition: ntgdihdl.h:149
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define DC_DIBSECTION
Definition: ntgdihdl.h:159
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
HANDLE hlfntNew
Definition: ntgdihdl.h:334
smooth NULL
Definition: ftsmooth.c:416
static HFONT hfont
ULONG ulDirty_
Definition: ntgdihdl.h:298
__kernel_entry W32KAPI HFONT APIENTRY NtGdiSelectFont(_In_ HDC hdc, _In_ HFONT hf)
Definition: dcobjs.c:597
HGDIOBJ hgdiobj
Definition: ntgdityp.h:560
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
#define SLOW_WIDTHS
Definition: ntgdihdl.h:150
#define SelectFont(hdc, hfont)
Definition: windowsx.h:491
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
FORCEINLINE PVOID GdiAllocBatchCommand(HDC hdc, USHORT Cmd)
Definition: gdi32p.h:381

Referenced by SelectObject().

◆ GdiSelectPen()

HPEN WINAPI GdiSelectPen ( _In_ HDC  hdc,
_In_ HPEN  hpen 
)

Definition at line 1418 of file dc.c.

1421 {
1422  PDC_ATTR pdcattr;
1423  HPEN hpenOld;
1424 
1425  HANDLE_METADC(HPEN, SelectPen, NULL, hdc, hpen);
1426 
1427  /* Get the DC attribute */
1428  pdcattr = GdiGetDcAttr(hdc);
1429  if (pdcattr == NULL)
1430  {
1432  return NULL;
1433  }
1434 
1435  /* Get the current pen. If it matches the new pen, we're done */
1436  hpenOld = pdcattr->hpen;
1437  if (hpenOld == hpen)
1438  return hpenOld;
1439 
1440  /* Set the new pen and update dirty flags */
1441  pdcattr->ulDirty_ |= DC_PEN_DIRTY;
1442  pdcattr->hpen = hpen;
1443  return hpenOld;
1444 }
HANDLE hpen
Definition: ntgdihdl.h:300
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define DC_PEN_DIRTY
Definition: ntgdihdl.h:158
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
static HPEN hpen
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
#define SelectPen(hdc, hpen)
Definition: windowsx.h:492
smooth NULL
Definition: ftsmooth.c:416
ULONG ulDirty_
Definition: ntgdihdl.h:298
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9

Referenced by SelectObject().

◆ GetAndSetDCDWord()

DWORD WINAPI GetAndSetDCDWord ( _In_ HDC  hdc,
_In_ UINT  u,
_In_ DWORD  dwIn,
_In_ ULONG  ulMFId,
_In_ USHORT  usMF16Id,
_In_ DWORD  dwError 
)

Definition at line 737 of file dc.c.

744 {
745  DWORD dwResult;
746 
747  /* This is a special API, handle it appropriately */
748  HANDLE_METADC2(DWORD, GetAndSetDCDWord, hdc, u, dwIn, ulMFId, usMF16Id, dwError);
749 
750  /* Call win32k to do the real work */
751  if (!NtGdiGetAndSetDCDword(hdc, u, dwIn, &dwResult))
752  {
753  return dwError;
754  }
755 
756  return dwResult;
757 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
unsigned long DWORD
Definition: ntddk_ex.h:95
HDC hdc
Definition: main.c:9
DWORD WINAPI GetAndSetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwIn, _In_ ULONG ulMFId, _In_ USHORT usMF16Id, _In_ DWORD dwError)
Definition: dc.c:737
_In_ UINT _In_ DWORD dwIn
Definition: ntgdi.h:248
#define HANDLE_METADC2(_RetType, _Func, hdc,...)
Definition: gdi32p.h:722

Referenced by SetArcDirection(), SetMapMode(), and SetRelAbs().

◆ GetArcDirection()

INT WINAPI GetArcDirection ( _In_ HDC  hdc)

Definition at line 371 of file dc.c.

373 {
374  return GetDCDWord( hdc, GdiGetArcDirection, 0);
375 }
DWORD WINAPI GetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwError)
Definition: dc.c:765
HDC hdc
Definition: main.c:9

Referenced by eto_emf_enum_proc(), and test_ExtTextOut().

◆ GetAspectRatioFilterEx()

BOOL WINAPI GetAspectRatioFilterEx ( HDC  hdc,
LPSIZE  lpAspectRatio 
)

Definition at line 786 of file dc.c.

789 {
790  return NtGdiGetDCPoint(hdc, GdiGetAspectRatioFilter, (PPOINTL)lpAspectRatio );
791 }
HDC hdc
Definition: main.c:9
BOOL APIENTRY NtGdiGetDCPoint(HDC hDC, UINT iPoint, PPOINTL Point)
Definition: coord.c:1421

◆ GetBkColor()

COLORREF WINAPI GetBkColor ( _In_ HDC  hdc)

Definition at line 956 of file dc.c.

958 {
959  PDC_ATTR pdcattr;
960 
961  /* Get the DC attribute */
962  pdcattr = GdiGetDcAttr(hdc);
963  if (pdcattr == NULL)
964  {
965  /* Don't set LastError here! */
966  return CLR_INVALID;
967  }
968 
969  return pdcattr->ulBackgroundClr;
970 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:882
ULONG ulBackgroundClr
Definition: ntgdihdl.h:302
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9

Referenced by cd_wndproc(), draw_graphics(), EDIT_PaintText(), EMFDRV_StretchBlt(), eto_emf_enum_proc(), HEADER_FillItemFrame(), ImageList_DrawIndirect(), LISTVIEW_Refresh(), MaskBlt(), MONTHCAL_Refresh(), parent_wnd_proc(), PlgBlt(), REBAR_EraseBkGnd(), SS_ItemOut(), test_dc_values(), test_ExtTextOut(), test_mf_SaveDC(), test_SaveDC(), and Test_SrcMono1().

◆ GetBkMode()

int WINAPI GetBkMode ( HDC  hdc)

Definition at line 1013 of file dc.c.

1014 {
1015  PDC_ATTR pdcattr;
1016 
1017  /* Get the DC attribute */
1018  pdcattr = GdiGetDcAttr(hdc);
1019  if (pdcattr == NULL)
1020  {
1021  /* Don't set LastError here! */
1022  return 0;
1023  }
1024 
1025  return pdcattr->lBkMode;
1026 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9
LONG lBkMode
Definition: ntgdihdl.h:317

◆ GetBoundsRect()

UINT WINAPI GetBoundsRect ( HDC  hdc,
LPRECT  lprcBounds,
UINT  flags 
)

Definition at line 799 of file dc.c.

804 {
805  return NtGdiGetBoundsRect(hdc,lprcBounds,flags & ~DCB_WINDOWMGR);
806 }
#define DCB_WINDOWMGR
Definition: ntgdityp.h:244
GLbitfield flags
Definition: glext.h:7161
HDC hdc
Definition: main.c:9
DWORD APIENTRY NtGdiGetBoundsRect(IN HDC hdc, OUT LPRECT prc, IN DWORD flags)
Definition: dcutil.c:708

Referenced by test_boundsrect(), and test_device_caps().

◆ GetClipBox()

int WINAPI GetClipBox ( HDC  hdc,
LPRECT  lprc 
)

Definition at line 829 of file dc.c.

831 {
832  return NtGdiGetAppClipBox(hdc, lprc);
833 }
_In_ int _Inout_ LPRECT lprc
Definition: winuser.h:4440
HDC hdc
Definition: main.c:9

Referenced by test_device_caps(), and test_savedc_2().

◆ GetCurrentObject()

HGDIOBJ WINAPI GetCurrentObject ( _In_ HDC  hdc,
_In_ UINT  uObjectType 
)

Definition at line 441 of file dc.c.

444 {
445  PDC_ATTR pdcattr = NULL;
446 
447  /* Check if this is a user mode object */
448  if ((uObjectType == OBJ_PEN) ||
449  (uObjectType == OBJ_EXTPEN) ||
450  (uObjectType == OBJ_BRUSH) ||
451  (uObjectType == OBJ_COLORSPACE))
452  {
453  /* Get the DC attribute */
454  pdcattr = GdiGetDcAttr(hdc);
455  if (pdcattr == NULL)
456  {
457  return NULL;
458  }
459  }
460 
461  /* Check what object was requested */
462  switch (uObjectType)
463  {
464  case OBJ_EXTPEN:
465  case OBJ_PEN:
466  return pdcattr->hpen;
467 
468  case OBJ_BRUSH:
469  return pdcattr->hbrush;
470 
471  case OBJ_COLORSPACE:
472  return pdcattr->hColorSpace;
473 
474  case OBJ_PAL:
475  uObjectType = GDI_OBJECT_TYPE_PALETTE;
476  break;
477 
478  case OBJ_FONT:
479  uObjectType = GDI_OBJECT_TYPE_FONT;
480  break;
481 
482  case OBJ_BITMAP:
483  uObjectType = GDI_OBJECT_TYPE_BITMAP;
484  break;
485 
486  /* All others are invalid */
487  default:
489  return NULL;
490  }
491 
492  /* Pass the request to win32k */
493  return NtGdiGetDCObject(hdc, uObjectType);
494 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
HANDLE hbrush
Definition: ntgdihdl.h:299
HANDLE hpen
Definition: ntgdihdl.h:300
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
HCOLORSPACE hColorSpace
Definition: ntgdihdl.h:323
#define OBJ_PEN
Definition: objidl.idl:1409
#define OBJ_COLORSPACE
Definition: wingdi.h:703
smooth NULL
Definition: ftsmooth.c:416
#define GDI_OBJECT_TYPE_PALETTE
Definition: gdi.h:49
__kernel_entry W32KAPI HANDLE APIENTRY NtGdiGetDCObject(_In_ HDC hdc, _In_ INT itype)
#define SetLastError(x)
Definition: compat.h:500
#define OBJ_PAL
Definition: objidl.idl:1413
#define OBJ_FONT
Definition: objidl.idl:1414
HDC hdc
Definition: main.c:9
#define GDI_OBJECT_TYPE_BITMAP
Definition: gdi.h:48
#define OBJ_EXTPEN
Definition: objidl.idl:1419
#define OBJ_BRUSH
Definition: objidl.idl:1410
#define GDI_OBJECT_TYPE_FONT
Definition: gdi.h:50
#define OBJ_BITMAP
Definition: objidl.idl:1415

Referenced by ANIMATE_EraseBackground(), ANIMATE_PaintFrame(), buffer_size(), check_item_height(), close_preview(), D3DXCreateTextW(), DrawClock(), DrawShadowText(), EDIT_PaintText(), EMFDRV_SetDCBrushColor(), EMFDRV_SetDCPenColor(), EMFDRV_StretchBlt(), EnumEnhMetaFile(), EnumMetaFile(), eto_emf_enum_proc(), fnIMLangFontLink2_MapFont(), GdipCreateFontFromDC(), GdipCreateFromHDC2(), get_graphics_device_bounds(), GuiReleaseScreenBuffer(), init_script_cache(), IntDrawState(), IntGrayString(), MFDRV_StretchBlt(), MONTHCAL_Refresh(), OLEPictureImpl_SetBitmap(), PaintRgn(), parent_wnd_proc(), PlayEnhMetaFileRecord(), PlayMetaFile(), ScriptStringAnalyse(), SetDIBits(), START_TEST(), sw_SetContext(), test_bitmap_colors(), test_button_messages(), test_CreateBitmap(), test_createtext(), test_D3DKMTCreateDCFromMemory(), test_font_metrics(), test_gdi_objects(), Test_GetCurrentObject(), test_GetCurrentObject(), test_item_height(), test_MapFont(), test_mono_bitmap(), test_ScriptShape(), and wglUseFontOutlines_common().

◆ GetDCBrushColor()

COLORREF WINAPI GetDCBrushColor ( _In_ HDC  hdc)

Definition at line 841 of file dc.c.

843 {
844  PDC_ATTR pdcattr;
845 
846  /* Get the DC attribute */
847  pdcattr = GdiGetDcAttr(hdc);
848  if (pdcattr == NULL)
849  {
851  return CLR_INVALID;
852  }
853 
854  return pdcattr->ulBrushClr;
855 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:882
smooth NULL
Definition: ftsmooth.c:416
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
ULONG ulBrushClr
Definition: ntgdihdl.h:306

Referenced by Test_IsSpecialState().

◆ GetDCDWord()

DWORD WINAPI GetDCDWord ( _In_ HDC  hdc,
_In_ UINT  u,
_In_ DWORD  dwError 
)

Definition at line 765 of file dc.c.

769 {
770  DWORD dwResult;
771 
772  if (!NtGdiGetDCDword(hdc, u, &dwResult))
773  {
774  return dwError;
775  }
776 
777  return dwResult;
778 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
__kernel_entry W32KAPI BOOL APIENTRY NtGdiGetDCDword(_In_ HDC hdc, _In_ UINT u, _Out_ DWORD *Result)
unsigned long DWORD
Definition: ntddk_ex.h:95
HDC hdc
Definition: main.c:9

Referenced by DRIVER_RestoreDC(), GetArcDirection(), GetFontLanguageInfo(), GetObjectType(), and GetRelAbs().

◆ GetDCPenColor()

COLORREF WINAPI GetDCPenColor ( _In_ HDC  hdc)

Definition at line 862 of file dc.c.

864 {
865  PDC_ATTR pdcattr;
866 
867  /* Get the DC attribute */
868  pdcattr = GdiGetDcAttr(hdc);
869  if (pdcattr == NULL)
870  {
872  return CLR_INVALID;
873  }
874 
875  return pdcattr->ulPenClr;
876 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:882
smooth NULL
Definition: ftsmooth.c:416
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
ULONG ulPenClr
Definition: ntgdihdl.h:308

Referenced by Test_IsSpecialState().

◆ GetDeviceCaps()

int WINAPI GetDeviceCaps ( _In_ HDC  hdc,
_In_ int  nIndex 
)

Definition at line 563 of file dc.c.

566 {
567  PDC_ATTR pdcattr;
568  PDEVCAPS pDevCaps = GdiDevCaps; // Primary display device capabilities.
569  DPRINT("Device CAPS1\n");
570 
571  HANDLE_METADC(INT, GetDeviceCaps, 0, hdc, nIndex);
572 
573  /* Get the DC attribute */
574  pdcattr = GdiGetDcAttr(hdc);
575  if (pdcattr == NULL)
576  {
578  return 0;
579  }
580 
581  if (!(pdcattr->ulDirty_ & DC_PRIMARY_DISPLAY))
582  return NtGdiGetDeviceCaps(hdc, nIndex);
583 
584  switch (nIndex)
585  {
586  case DRIVERVERSION:
587  return pDevCaps->ulVersion;
588 
589  case TECHNOLOGY:
590  return pDevCaps->ulTechnology;
591 
592  case HORZSIZE:
593  return pDevCaps->ulHorzSize;
594 
595  case VERTSIZE:
596  return pDevCaps->ulVertSize;
597 
598  case HORZRES:
599  return pDevCaps->ulHorzRes;
600 
601  case VERTRES:
602  return pDevCaps->ulVertRes;
603 
604  case LOGPIXELSX:
605  return pDevCaps->ulLogPixelsX;
606 
607  case LOGPIXELSY:
608  return pDevCaps->ulLogPixelsY;
609 
610  case BITSPIXEL:
611  return pDevCaps->ulBitsPixel;
612 
613  case PLANES:
614  return pDevCaps->ulPlanes;
615 
616  case NUMBRUSHES:
617  return -1;
618 
619  case NUMPENS:
620  return pDevCaps->ulNumPens;
621 
622  case NUMFONTS:
623  return pDevCaps->ulNumFonts;
624 
625  case NUMCOLORS:
626  return pDevCaps->ulNumColors;
627 
628  case ASPECTX:
629  return pDevCaps->ulAspectX;
630 
631  case ASPECTY:
632  return pDevCaps->ulAspectY;
633 
634  case ASPECTXY:
635  return pDevCaps->ulAspectXY;
636 
637  case CLIPCAPS:
638  return CP_RECTANGLE;
639 
640  case SIZEPALETTE:
641  return pDevCaps->ulSizePalette;
642 
643  case NUMRESERVED:
644  return 20;
645 
646  case COLORRES:
647  return pDevCaps->ulColorRes;
648 
649  case DESKTOPVERTRES:
650  return pDevCaps->ulVertRes;
651 
652  case DESKTOPHORZRES:
653  return pDevCaps->ulHorzRes;
654 
655  case BLTALIGNMENT:
656  return pDevCaps->ulBltAlignment;
657 
658  case SHADEBLENDCAPS:
659  return pDevCaps->ulShadeBlend;
660 
661  case COLORMGMTCAPS:
662  return pDevCaps->ulColorMgmtCaps;
663 
664  case PHYSICALWIDTH:
665  return pDevCaps->ulPhysicalWidth;
666 
667  case PHYSICALHEIGHT:
668  return pDevCaps->ulPhysicalHeight;
669 
670  case PHYSICALOFFSETX:
671  return pDevCaps->ulPhysicalOffsetX;
672 
673  case PHYSICALOFFSETY:
674  return pDevCaps->ulPhysicalOffsetY;
675 
676  case VREFRESH:
677  return pDevCaps->ulVRefresh;
678 
679  case RASTERCAPS:
680  return pDevCaps->ulRasterCaps;
681 
682  case CURVECAPS:
683  return (CC_CIRCLES | CC_PIE | CC_CHORD | CC_ELLIPSES | CC_WIDE |
685 
686  case LINECAPS:
689 
690  case POLYGONALCAPS:
693 
694  case TEXTCAPS:
695  return pDevCaps->ulTextCaps;
696 
697  case PDEVICESIZE:
698  case SCALINGFACTORX:
699  case SCALINGFACTORY:
700  default:
701  return 0;
702  }
703  return 0;
704 }
#define CP_RECTANGLE
Definition: wingdi.h:825
#define DESKTOPHORZRES
Definition: wingdi.h:741
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define CC_PIE
Definition: wingdi.h:761
_Out_ PDEVCAPS pDevCaps
Definition: ntgdi.h:2664
#define DESKTOPVERTRES
Definition: wingdi.h:742
#define NUMBRUSHES
Definition: wingdi.h:721
#define CC_CHORD
Definition: wingdi.h:762
#define BITSPIXEL
Definition: wingdi.h:719
#define HORZRES
Definition: wingdi.h:715
#define LOGPIXELSX
Definition: wingdi.h:717
ULONG ulBltAlignment
Definition: ntgdityp.h:327
#define NUMRESERVED
Definition: wingdi.h:732
#define LC_WIDE
Definition: wingdi.h:774
ULONG ulHorzRes
Definition: ntgdityp.h:304
#define PC_INTERIORS
Definition: wingdi.h:803
#define ASPECTX
Definition: wingdi.h:726
ULONG ulRasterCaps
Definition: ntgdityp.h:311
#define LC_POLYLINE
Definition: wingdi.h:771
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CC_STYLED
Definition: wingdi.h:765
ULONG ulNumFonts
Definition: ntgdityp.h:309
PDEVCAPS GdiDevCaps
Definition: dllmain.c:9
#define COLORRES
Definition: wingdi.h:733
#define DRIVERVERSION
Definition: wingdi.h:704
#define PDEVICESIZE
Definition: wingdi.h:729
#define BLTALIGNMENT
Definition: wingdi.h:743
ULONG ulHorzSize
Definition: ntgdityp.h:302
#define SCALINGFACTORX
Definition: wingdi.h:738
#define LC_POLYMARKER
Definition: wingdi.h:773
#define POLYGONALCAPS
Definition: wingdi.h:778
ULONG ulBitsPixel
Definition: ntgdityp.h:306
#define PC_WINDPOLYGON
Definition: wingdi.h:797
ULONG ulPhysicalHeight
Definition: ntgdityp.h:320
#define RASTERCAPS
Definition: wingdi.h:744
int32_t INT
Definition: typedefs.h:58
#define TECHNOLOGY
Definition: wingdi.h:705
ULONG ulVRefresh
Definition: ntgdityp.h:324
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
#define TEXTCAPS
Definition: wingdi.h:805
#define PHYSICALHEIGHT
Definition: wingdi.h:735
ULONG ulShadeBlend
Definition: ntgdityp.h:332
#define DC_PRIMARY_DISPLAY
Definition: ntgdihdl.h:161
#define PC_WIDESTYLED
Definition: wingdi.h:802
#define NUMCOLORS
Definition: wingdi.h:724
ULONG ulNumPens
Definition: ntgdityp.h:308
ULONG ulVertRes
Definition: ntgdityp.h:305
#define VREFRESH
Definition: wingdi.h:740
int WINAPI GetDeviceCaps(_In_ HDC hdc, _In_ int nIndex)
Definition: dc.c:563
#define CC_INTERIORS
Definition: wingdi.h:767
ULONG ulVertSize
Definition: ntgdityp.h:303
smooth NULL
Definition: ftsmooth.c:416
ULONG ulAspectXY
Definition: ntgdityp.h:314
#define LC_MARKER
Definition: wingdi.h:772
void DPRINT(...)
Definition: polytest.cpp:61
ULONG ulDirty_
Definition: ntgdihdl.h:298
#define SCALINGFACTORY
Definition: wingdi.h:739
#define PC_STYLED
Definition: wingdi.h:801
#define CC_WIDE
Definition: wingdi.h:764
ULONG ulColorRes
Definition: ntgdityp.h:318
ULONG ulPhysicalOffsetY
Definition: ntgdityp.h:322
#define LC_STYLED
Definition: wingdi.h:775
ULONG ulAspectY
Definition: ntgdityp.h:313
#define PC_WIDE
Definition: wingdi.h:800
ULONG ulPlanes
Definition: ntgdityp.h:307
#define ASPECTXY
Definition: wingdi.h:728
ULONG ulVersion
Definition: ntgdityp.h:298
#define PHYSICALOFFSETY
Definition: wingdi.h:737
#define CC_ROUNDRECT
Definition: wingdi.h:768
#define ASPECTY
Definition: wingdi.h:727
#define CLIPCAPS
Definition: wingdi.h:730
#define SetLastError(x)
Definition: compat.h:500
#define LC_WIDESTYLED
Definition: wingdi.h:776
#define SIZEPALETTE
Definition: wingdi.h:731
ULONG ulLogPixelsY
Definition: ntgdityp.h:316
HDC hdc
Definition: main.c:9
#define CC_ELLIPSES
Definition: wingdi.h:763
ULONG ulPhysicalOffsetX
Definition: ntgdityp.h:321
#define HORZSIZE
Definition: wingdi.h:713
#define PHYSICALOFFSETX
Definition: wingdi.h:736
#define PHYSICALWIDTH
Definition: wingdi.h:734
#define PC_RECTANGLE
Definition: wingdi.h:796
#define VERTSIZE
Definition: wingdi.h:714
#define NUMPENS
Definition: wingdi.h:722
#define LINECAPS
Definition: wingdi.h:769
ULONG ulTextCaps
Definition: ntgdityp.h:323
ULONG ulPhysicalWidth
Definition: ntgdityp.h:319
#define VERTRES
Definition: wingdi.h:716
#define PC_POLYGON
Definition: wingdi.h:793
#define PC_SCANLINE
Definition: wingdi.h:798
ULONG ulAspectX
Definition: ntgdityp.h:312
ULONG ulColorMgmtCaps
Definition: ntgdityp.h:333
#define LOGPIXELSY
Definition: wingdi.h:718
ULONG ulNumColors
Definition: ntgdityp.h:310
#define CC_WIDESTYLED
Definition: wingdi.h:766
__kernel_entry W32KAPI INT APIENTRY NtGdiGetDeviceCaps(_In_ HDC hdc, _In_ INT i)
ULONG ulSizePalette
Definition: ntgdityp.h:317
#define CC_CIRCLES
Definition: wingdi.h:760
ULONG ulLogPixelsX
Definition: ntgdityp.h:315
#define LC_INTERIORS
Definition: wingdi.h:777
#define CURVECAPS
Definition: wingdi.h:758
#define NUMFONTS
Definition: wingdi.h:723
ULONG ulTechnology
Definition: ntgdityp.h:299
#define PLANES
Definition: wingdi.h:720

Referenced by EMFDRV_GetDeviceCaps(), test_CreateCompatibleDC(), test_DC_bitmap(), test_desktop_colorres(), test_device_caps(), and test_printer_dc().

◆ GetGraphicsMode()

int WINAPI GetGraphicsMode ( HDC  hdc)

Definition at line 1183 of file dc.c.

1184 {
1185  PDC_ATTR pdcattr;
1186 
1187  /* Get the DC attribute */
1188  pdcattr = GdiGetDcAttr(hdc);
1189  if (pdcattr == NULL)
1190  {
1191  /* Don't set LastError here! */
1192  return 0;
1193  }
1194 
1195  /* Return current graphics mode */
1196  return pdcattr->iGraphicsMode;
1197 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9
INT iGraphicsMode
Definition: ntgdihdl.h:310

◆ GetHFONT()

HFONT WINAPI GetHFONT ( HDC  hdc)

Definition at line 1359 of file dc.c.

1360 {
1361  PDC_ATTR pdcattr;
1362 
1363  /* Get the DC attribute */
1364  pdcattr = GdiGetDcAttr(hdc);
1365  if (pdcattr == NULL)
1366  {
1367  /* Don't set LastError here! */
1368  return NULL;
1369  }
1370 
1371  /* Return the current font */
1372  return pdcattr->hlfntNew;
1373 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
HANDLE hlfntNew
Definition: ntgdihdl.h:334
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9

◆ GetPolyFillMode()

int WINAPI GetPolyFillMode ( HDC  hdc)

Definition at line 1124 of file dc.c.

1125 {
1126  PDC_ATTR pdcattr;
1127 
1128  /* Get DC attribute */
1129  pdcattr = GdiGetDcAttr(hdc);
1130  if (pdcattr == NULL)
1131  {
1132  /* Don't set LastError here! */
1133  return 0;
1134  }
1135 
1136  /* Return current fill mode */
1137  return pdcattr->lFillMode;
1138 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
LONG lFillMode
Definition: ntgdihdl.h:318
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9

◆ GetRelAbs()

DWORD WINAPI GetRelAbs ( _In_ HDC  hdc,
_In_ DWORD  dwIgnore 
)

Definition at line 711 of file dc.c.

714 {
715  return GetDCDWord(hdc, GdiGetRelAbs, 0);
716 }
DWORD WINAPI GetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwError)
Definition: dc.c:765
HDC hdc
Definition: main.c:9

Referenced by init_function_pointers().

◆ GetROP2()

int WINAPI GetROP2 ( _In_ HDC  hdc)

Definition at line 1064 of file dc.c.

1066 {
1067  PDC_ATTR pdcattr;
1068 
1069  /* Get the DC attribute */
1070  pdcattr = GdiGetDcAttr(hdc);
1071  if (pdcattr == NULL)
1072  {
1073  /* Do not set LastError here! */
1074  return 0;
1075  }
1076 
1077  return pdcattr->jROP2;
1078 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
smooth NULL
Definition: ftsmooth.c:416
BYTE jROP2
Definition: ntgdihdl.h:311
HDC hdc
Definition: main.c:9

Referenced by eto_emf_enum_proc(), Poly(), RectSel(), test_dc_attributes(), test_destroyed_window(), and test_ExtTextOut().

◆ GetStretchBltMode()

int WINAPI GetStretchBltMode ( HDC  hdc)

Definition at line 1306 of file dc.c.

1307 {
1308  PDC_ATTR pdcattr;
1309 
1310  /* Get the DC attribute */
1311  pdcattr = GdiGetDcAttr(hdc);
1312  if (pdcattr == NULL)
1313  {
1314  /* Don't set LastError here! */
1315  return 0;
1316  }
1317 
1318  return pdcattr->lStretchBltMode;
1319 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9
LONG lStretchBltMode
Definition: ntgdihdl.h:319

◆ IntCreateDICW()

HDC FASTCALL IntCreateDICW ( LPCWSTR  lpwszDriver,
LPCWSTR  lpwszDevice,
LPCWSTR  lpwszOutput,
PDEVMODEW  lpInitData,
ULONG  iType 
)

Definition at line 8 of file dc.c.

14 {
16  HDC hdc = NULL;
18  HANDLE UMdhpdev = 0;
19 
20  HANDLE hspool = NULL;
21 
22  if ( !ghSpooler && !LoadTheSpoolerDrv())
23  {
24  DPRINT1("WinSpooler.Drv Did not load!\n");
25  }
26  else
27  {
28  DPRINT("WinSpooler.Drv Loaded! hMod -> 0x%p\n", ghSpooler);
29  }
30 
31  if ((!lpwszDevice) && (!lpwszDriver))
32  {
33  Default = TRUE; // Ask Win32k to set Default device.
34  Display = TRUE; // Most likely to be DISPLAY.
35  }
36  else
37  {
38  if ((lpwszDevice) && (wcslen(lpwszDevice) != 0)) // First
39  {
40  if (!_wcsnicmp(lpwszDevice, L"\\\\.\\DISPLAY",11)) Display = TRUE;
41  RtlInitUnicodeString(&Device, lpwszDevice);
42  }
43  else
44  {
45  if (lpwszDriver) // Second
46  {
47  if ((!_wcsnicmp(lpwszDriver, L"DISPLAY",7)) ||
48  (!_wcsnicmp(lpwszDriver, L"\\\\.\\DISPLAY",11))) Display = TRUE;
49  RtlInitUnicodeString(&Device, lpwszDriver);
50  }
51  }
52  }
53 
54  if (lpwszOutput) RtlInitUnicodeString(&Output, lpwszOutput);
55 
56  // Handle Print device or something else.
57  if (!Display)
58  {
59  // WIP - GDI Print Commit coming in soon.
60  DPRINT1("Not a DISPLAY device! %wZ\n", &Device);
61  return NULL; // Return NULL until then.....
62  }
63 
65  (PDEVMODEW) lpInitData,
66  (lpwszOutput ? &Output : NULL),
67  iType, // DCW 0 and ICW 1.
68  Display,
69  hspool,
70  &UMdhpdev );
71 #if 0
72 // Handle something other than a normal dc object.
74  {
75  PDC_ATTR Dc_Attr;
76  PLDC pLDC;
77 
79 
80  pLDC = LocalAlloc(LMEM_ZEROINIT, sizeof(LDC));
81 
82  Dc_Attr->pvLDC = pLDC;
83  pLDC->hDC = hdc;
84  pLDC->iType = LDC_LDC; // 1 (init) local DC, 2 EMF LDC
85  DbgPrint("DC_ATTR Allocated -> 0x%x\n",Dc_Attr);
86  }
87 #endif
88  return hdc;
89 }
_In_ PIRP _In_ PDEVICE_OBJECT Device
Definition: fatprocs.h:2029
PVOID pvLDC
Definition: ntgdihdl.h:297
#define LDC_LDC
Definition: gdi_private.h:56
#define DbgPrint
Definition: loader.c:25
#define TRUE
Definition: types.h:120
_In_ ULONG iType
Definition: winddi.h:3748
__kernel_entry W32KAPI HDC APIENTRY NtGdiOpenDCW(_In_opt_ PUNICODE_STRING pustrDevice, _In_ DEVMODEW *pdm, _In_ PUNICODE_STRING pustrLogAddr, _In_ ULONG iType, _In_ BOOL bDisplay, _In_opt_ HANDLE hspool, _At_((PUMDHPDEV *) pUMdhpdev, _Out_) PVOID pUMdhpdev)
Definition: dclife.c:694
static HDC
Definition: imagelist.c:92
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
HANDLE ghSpooler
Definition: printdrv.c:40
void DPRINT(...)
Definition: polytest.cpp:61
HDC hDC
Definition: ntgdihdl.h:277
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
#define LMEM_ZEROINIT
Definition: winbase.h:356
Definition: ntgdihdl.h:275
INT iType
Definition: ntgdihdl.h:279
#define GDI_OBJECT_TYPE_DC
Definition: gdi.h:46
static const WCHAR L[]
Definition: oid.c:1250
HDC hdc
Definition: main.c:9
Definition: arc.h:85
PVOID GdiGetHandleUserData(_In_ HGDIOBJ hobj)
Definition: gditools.c:68
#define DPRINT1
Definition: precomp.h:8
int Display
Definition: x11stubs.h:25
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1373
BOOL FASTCALL LoadTheSpoolerDrv(VOID)
Definition: printdrv.c:188
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)

Referenced by CreateDCA(), CreateDCW(), CreateICA(), and CreateICW().

◆ NtUserSelectPalette()

HPALETTE WINAPI NtUserSelectPalette ( HDC  hDC,
HPALETTE  hpal,
BOOL  ForceBackground 
)

Select logical palette into device context.

Parameters
hDChandle to the device context
hpalhandle to the palette
ForceBackgroundIf this value is FALSE the logical palette will be copied to the device palette only when the applicatioon is in the foreground. If this value is TRUE then map the colors in the logical palette to the device palette colors in the best way.
Returns
old palette
Todo:
implement ForceBackground == TRUE

Definition at line 1033 of file windc.c.

1036 {
1037  HPALETTE oldPal;
1039  // Implement window checks
1040  oldPal = GdiSelectPalette( hDC, hpal, ForceBackground);
1041  UserLeave();
1042  return oldPal;
1043 }
VOID FASTCALL UserEnterExclusive(VOID)
Definition: ntuser.c:247
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:255
static HDC hDC
Definition: 3dtext.c:33
HPALETTE NTAPI GdiSelectPalette(_In_ HDC hDC, _In_ HPALETTE hpal, _In_ BOOL ForceBackground)

Referenced by SelectPalette(), and START_TEST().

◆ ResetDCA()

HDC WINAPI ResetDCA ( _In_ HDC  hdc,
_In_ CONST DEVMODEA lpInitData 
)

Definition at line 1269 of file dc.c.

1272 {
1273  LPDEVMODEW InitDataW;
1274 
1275  InitDataW = GdiConvertToDevmodeW((LPDEVMODEA)lpInitData);
1276 
1277  NtGdiResetDC ( hdc, InitDataW, NULL, NULL, NULL);
1278  HEAP_free(InitDataW);
1279  return hdc;
1280 }
VOID HEAP_free(LPVOID memory)
Definition: heap.c:63
DEVMODEW *WINAPI GdiConvertToDevmodeW(const DEVMODEA *)
Definition: misc.c:969
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9
__kernel_entry W32KAPI BOOL APIENTRY NtGdiResetDC(_In_ HDC hdc, _In_ LPDEVMODEW pdm, _Out_ PBOOL pbBanding, _In_opt_ DRIVER_INFO_2W *pDriverInfo2, _At_((PUMDHPDEV *) ppUMdhpdev, _Out_) PVOID ppUMdhpdev)
Definition: dcstate.c:122

Referenced by create_printer_dc(), and test_CreateCompatibleDC().

◆ ResetDCW()

HDC WINAPI ResetDCW ( _In_ HDC  hdc,
_In_ CONST DEVMODEW lpInitData 
)

Definition at line 1255 of file dc.c.

1258 {
1259  NtGdiResetDC ( hdc, (PDEVMODEW)lpInitData, NULL, NULL, NULL);
1260  return hdc;
1261 }
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9
__kernel_entry W32KAPI BOOL APIENTRY NtGdiResetDC(_In_ HDC hdc, _In_ LPDEVMODEW pdm, _Out_ PBOOL pbBanding, _In_opt_ DRIVER_INFO_2W *pDriverInfo2, _At_((PUMDHPDEV *) ppUMdhpdev, _Out_) PVOID ppUMdhpdev)
Definition: dcstate.c:122

◆ RestoreDC()

BOOL WINAPI RestoreDC ( IN HDC  hdc,
IN INT  iLevel 
)

Definition at line 328 of file dc.c.

330 {
331  HANDLE_METADC(BOOL, RestoreDC, FALSE, hdc, iLevel);
332  return NtGdiRestoreDC(hdc, iLevel);
333 }
__kernel_entry W32KAPI BOOL APIENTRY NtGdiRestoreDC(_In_ HDC hdc, _In_ INT iLevel)
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
HDC hdc
Definition: main.c:9
BOOL WINAPI RestoreDC(IN HDC hdc, IN INT iLevel)
Definition: dc.c:328

Referenced by test_boundsrect(), test_savedc(), and test_savedc_2().

◆ SaveDC()

INT WINAPI SaveDC ( IN HDC  hdc)

Definition at line 316 of file dc.c.

317 {
319  return NtGdiSaveDC(hdc);
320 }
#define HANDLE_METADC0P(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:606
int32_t INT
Definition: typedefs.h:58
__kernel_entry W32KAPI INT APIENTRY NtGdiSaveDC(_In_ HDC hdc)
INT WINAPI SaveDC(IN HDC hdc)
Definition: dc.c:316
HDC hdc
Definition: main.c:9

Referenced by test_boundsrect(), test_savedc(), and test_savedc_2().

◆ SelectObject()

HGDIOBJ WINAPI SelectObject ( _In_ HDC  hdc,
_In_ HGDIOBJ  hobj 
)

Definition at line 1499 of file dc.c.

1502 {
1503  /* Fix up 16 bit handles */
1504  hobj = GdiFixUpHandle(hobj);
1505  if (!GdiValidateHandle(hobj))
1506  {
1507  return NULL;
1508  }
1509 
1510  /* Call the appropriate select function */
1511  switch (GDI_HANDLE_GET_TYPE(hobj))
1512  {
1515 
1518  return GdiSelectBitmap(hdc, hobj);
1519 
1521  return GdiSelectBrush(hdc, hobj);
1522 
1525  return GdiSelectPen(hdc, hobj);
1526 
1528  return GdiSelectFont(hdc, hobj);
1529 
1531  return SetColorSpace(hdc, hobj);
1532 
1535 
1536  default:
1537  return NULL;
1538  }
1539 
1540  return NULL;
1541 }
HCOLORSPACE WINAPI SetColorSpace(_In_ HDC, _In_ HCOLORSPACE)
#define ERROR_INVALID_FUNCTION
Definition: dderror.h:6
int WINAPI ExtSelectClipRgn(_In_ HDC, _In_opt_ HRGN, _In_ int)
HBITMAP WINAPI GdiSelectBitmap(_In_ HDC hdc, _In_ HBITMAP hbmp)
Definition: dc.c:1379
smooth NULL
Definition: ftsmooth.c:416
HGDIOBJ WINAPI GdiFixUpHandle(HGDIOBJ hGO)
Definition: misc.c:734
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
#define UlongToHandle(ul)
Definition: basetsd.h:97
HFONT WINAPI GdiSelectFont(_In_ HDC hdc, _In_ HFONT hfont)
Definition: dc.c:1448
HBRUSH WINAPI GdiSelectBrush(_In_ HDC hdc, _In_ HBRUSH hbr)
Definition: dc.c:1388
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
#define RGN_COPY
Definition: wingdi.h:356
HPEN WINAPI GdiSelectPen(_In_ HDC hdc, _In_ HPEN hpen)
Definition: dc.c:1418
BOOL WINAPI GdiValidateHandle(HGDIOBJ)
Definition: misc.c:712

Referenced by _find_font_for_range(), CMenuDeskBar::_OnPaint(), AboutDlgProc(), add_ruler_units(), add_with_alpha(), AddDlg_OnInitDialog(), alpha_blend_hdc_pixels(), alpha_blend_image(), AlphaBlendInit(), ANIMATE_PaintFrame(), ANIMATE_TransparentBlt(), AppearancePage_OnInit(), Bezier(), BitBltFromClipboard(), BITMAP_CopyImage(), BITMAP_LoadImageW(), BitmapFromIcon(), Bri_OnDrawItem(), Brush(), brush_fill_path(), BuildFont(), BUTTON_CalcLabelRect(), Pane::calc_single_width(), calc_single_width(), Pane::calc_widths(), calc_widths(), SelectionModel::CalculateBoundingBoxAndContents(), SelectionModel::CalculateContents(), CDimmedWindow::Capture(), CaptureScreen(), CardImageWndProc(), CB_Paint(), CB_ThemedPaint(), CBGetTextAreaHeight(), CBPaintText(), CC_PaintCross(), CC_PaintTriangle(), CC_PrepareColorGraph(), cdtDrawExt(), CFn_WMDrawItem(), CFn_WMMeasureItem(), CFn_WMPaint(), check_height_font_enumproc(), check_vertical_font(), check_vertical_metrics(), Child_OnPaint(), ChildWndProc(), choose_font(), clear_frontbuffer(), ClockWndProc(), ColorKeyedMaskBlt(), COMBO_Init(), COMBO_Paint(), COMBOEX_GetComboFontSize(), COMCTL32_DrawInsertMark(), COMCTL32_EnsureBitmapSize(), COMCTL32_GetFontMetrics(), ConfigDlgProc(), ConfirmMsgBox_Init(), ConfirmMsgBox_Paint(), Cont_OnDrawItem(), ConvertBitmapTo32Bpp(), ConWndProc(), ImageModel::CopyPrevious(), create_alpha_bitmap(), create_bitmap(), create_render_dc(), create_taskdialog_template(), CreateCheckImage(), CreateCheckMask(), CreateColorDIB(), CreateDragImage(), CreateLayoutIcon(), CreateMappedBitmap(), CreateMatrix(), CreateMDIMenuBitmap(), CreateRadioImage(), CreateRadioMask(), CShellLink::CreateShortcutIcon(), CreateSinkBmp(), CreateStarBitmap(), CreateStateImageList(), CreateTrayIcon(), ImageModel::Crop(), ctrl_resize(), CURSORICON_GetCursorDataFromBMI(), CURSORICON_GetCursorDataFromIconInfo(), D3DXCreateFontIndirectW(), D3DXCreateTextTest(), D3DXCreateTextW(), DATETIME_Refresh(), default_page_paint_hook(), delete_render_dc(), device_load_logo(), DIALOG_CreateIndirect(), DIALOG_FilePrint(), RdpClientUI::Display_DestBlt(), Display_DrawText(), RdpClientUI::Display_Line(), RdpClientUI::Display_MemBlt(), RdpClientUI::Display_PatBlt(), RdpClientUI::Display_Polygon(), RdpClientUI::Display_Rect(), Display_SetTypeFace(), RdpClientUI::Display_TriBlt(), DisplayDlgProc(), DlgProc(), DoBlt(), DoEntry(), DoTestEntry(), CardButton::Draw(), Draw(), draw_cap(), draw_diag_edge(), draw_graphics(), draw_margin_lines(), draw_maze_border(), draw_rect_edge(), draw_splitbar(), draw_text_2(), draw_underline(), draw_wall(), DrawBackgroundPreview(), DrawCheckedRect(), DrawClassicFrame(), DrawClock(), DrawDibBegin(), DrawDibEnd(), DrawFace(), DrawFocusRect(), CGridView::DrawGrid(), DrawHands(), DrawLeds(), DrawLines(), DrawMines(), DrawProc(), CardButton::DrawRect(), DrawShadowText(), DrawThemeText(), DrawTileBitmap(), CImgAreaWindow::drawZoomFrame(), dup_bitmap(), EDIT_EM_SetMargins(), EDIT_PaintText(), EDIT_UpdateUniscribeData(), EDIT_UpdateUniscribeData_linedef(), EDIT_WM_Paint(), EDIT_WM_SetFont(), EditDlg_OnInitDialog(), EditGlyphEditWndProc(), EditTypeDlg_OnDrawItem(), Ellp(), EnumEnhMetaFile(), EnumMetaFile(), Erase(), ExtractOneBitmap(), FILEDLG95_LOOKIN_Init(), Fill(), FillGrid(), FillRect(), find_installed_font(), FlatComboProc(), SelectionModel::FlipHorizontally(), SelectionModel::FlipVertically(), fnIMLangFontLink2_GetFontCodePages(), font_height(), FrameRect(), GB_Paint(), GB_ThemedPaint(), GDI32_GdipDrawDriverString(), gdi_get_font_metrics(), GdipAddPathString(), GdipCreateFont(), GdipCreateFontFromLogfontW(), GdipDrawImagePointsRect(), GdipDrawString(), GdipGetDC(), GdipGetImageGraphicsContext(), GdipMeasureCharacterRanges(), GdipMeasureDriverString(), GdipMeasureString(), GeneralPageProc(), get_color_format(), get_current_font_height(), get_font_dpi(), get_font_fsselection(), get_font_hfont(), get_glyph_indices(), get_text_metr_size(), get_tmheight(), get_tmheightW(), GetButtonHeight(), ATL::CImage::GetDC(), GetDiaogTextureBrush(), GetFontCellSize(), GetFontMetrics(), GetIdealItemHeight(), GetThemeTextExtent(), GetThemeTextMetrics(), Ghost_OnDraw(), Graph_DrawCpuUsageGraph(), Graph_DrawMemUsageGraph(), GraphCtrl_Dispose(), GraphCtrl_DrawPoint(), GraphCtrl_InvalidateCtrl(), GraphCtrl_Paint(), GuiCopyFromGraphicsBuffer(), GuiPaintCaret(), GuiPaintTextModeBuffer(), CTaskSwitchWnd::HandleItemPaint(), HandlePrintPasswdChar(), HEADER_Create(), HEADER_CreateDragImage(), HEADER_DrawItem(), HEADER_Refresh(), HEADER_SetFont(), HelDdSurfLock(), HelDdSurfUnlock(), HEXEDIT_WM_PAINT(), HEXEDIT_WM_SETFONT(), HLPFILE_RtfAddTransparentBitmap(), HOTKEY_DrawHotKey(), HOTKEY_SetFont(), ICONTITLE_Paint(), ICONTITLE_SetTitlePos(), COpenWithMenu::IconToBitmap(), ID3DXFontImpl_DrawTextW(), ImageEditWndProc(), ImageEditWndRepaint(), ImageList_Add(), ImageList_AddMasked(), ImageList_Copy(), ImageList_Create(), ImageList_DragMove(), ImageList_DragShowNolock(), ImageList_DrawIndirect(), ImageList_GetIcon(), IMAGELIST_InternalExpandBitmaps(), ImageList_Remove(), ImageList_Replace(), ImageList_ReplaceIcon(), ImageList_SetIconSize(), ImageList_SetImageCount(), ImageModel::ImageModel(), ImageView_DrawImage(), init(), init_output(), InitColorButtons(), InitLogo(), InitPerBitDepth(), InitResources(), ImageModel::Insert(), SelectionModel::InsertFromHBITMAP(), IntDrawDiagEdge(), IntDrawScrollInterior(), IntDrawState(), IntGetWindowBitmap(), IntGrayString(), is_font_available(), Line(), LISTBOX_DrawFocusRect(), LISTBOX_Paint(), LISTBOX_RepaintItem(), LISTBOX_SetFont(), LISTVIEW_Command(), LISTVIEW_CreateCheckBoxIL(), LISTVIEW_CreateDragImage(), LISTVIEW_EditLabelT(), LISTVIEW_GetItemMetrics(), LISTVIEW_GetStringWidthT(), LISTVIEW_Refresh(), LISTVIEW_RefreshList(), LISTVIEW_RefreshReport(), LISTVIEW_RefreshReportGrid(), LISTVIEW_SaveTextMetrics(), LISTVIEW_SetColumnWidth(), LISTVIEW_ShowFocusRect(), LoadCardBitmapsFromLibrary(), LoadDialog(), LoadIniFile(), LPK_DrawUnderscore(), LrgCellWndProc(), MainWndProc(), map_font(), MDI_AugmentFrameMenu(), ME_DebugWrite(), ME_DrawOLE(), ME_DrawParaDecoration(), ME_DrawTableBorders(), CTrayClockWnd::MeasureLines(), menu_ownerdraw_wnd_proc(), mi_line(), mi_paint_rect(), MonSelGetMonitorFont(), MonSelPaint(), MonSelPaintMonitor(), MONTHCAL_Circle(), MONTHCAL_DrawDay(), MONTHCAL_PaintCalendar(), MONTHCAL_PaintTitle(), MONTHCAL_PaintTodayTitle(), MONTHCAL_PaintWeeknumbers(), MONTHCAL_Refresh(), MONTHCAL_UpdateSize(), MonthCalPaint(), msi_dialog_get_sans_serif_height(), msi_load_picture(), mstsc_ProtocolIOThread(), MyDrawCaptionTemp(), MyDrawFrameCaption(), MyDrawFrameScroll(), MyDrawMenuBarTemp(), MyIntDrawRectEdge(), NT5_DrawBaseBackground(), NT5_DrawLogoffCaptionText(), NT5_DrawLogoffIcon(), OB_Paint(), OleCreatePropertyFrameIndirect(), OLEFontImpl_QueryTextMetrics(), OleMetafilePictFromIconAndLabel(), OLEPictureImpl_LoadWICSource(), OLEPictureImpl_SelectPicture(), on_wm_initdialog(), CMenuToolbarBase::OnCustomDraw(), CBaseBarSite::OnCustomDraw(), OnDrawItem(), CPaletteWindow::OnPaint(), CToolSettingsWindow::OnPaint(), CImgAreaWindow::OnPaint(), CTrayClockWnd::OnPaint(), CBrandBand::OnPaint(), CDownloaderProgress::OnPaint(), OnPaint(), paint_ruler(), PaintBanner(), PaintCells(), PaintControl(), PAINTING_DrawStateJam(), CAppScrnshotPreview::PaintOnDC(), CDrvDefExt::PaintStaticControls(), PaintText(), parent_wnd_proc(), PathSetDlgItemPathW(), PB_Paint(), PB_ThemedPaint(), PlayEnhMetaFileRecord(), PlayMetaFile(), PlayMetaFileRecord(), PlotCharacter(), plugin_proc(), Poly(), PolygonTest(), PolyPatBlt(), prepare_dc(), CardRegion::PrepareDragBitmaps(), CardRegion::PrepareDragBitmapsThreed(), PressBox(), print_preview(), PRINTDLG_PagePaintProc(), PrintTextXY(), PROPSHEET_Paint(), realize_font(), REBAR_DrawBand(), REBAR_DrawChevron(), REBAR_ValidateBand(), Rect(), RectSel(), ImageModel::Redo(), ATL::CImage::ReleaseDC(), render_masked_bitmap(), ImageModel::ResetToPrevious(), restore_dc(), RichEditWndProc_common(), RosImageProc(), SelectionModel::RotateNTimes90Degrees(), RRect(), SB_OnPaint(), SelectionModel::ScaleContentsToFit(), ScreenSaverProc(), ScriptStringAnalyse(), select_style(), SelectionFrame(), CardWindow::SetBackImage(), SetDIBits(), CGridView::SetFont(), SetFont(), SetFontStylesToCombo2(), SetMatrixMessage(), SetSpecialDCState(), SetSpecialDCState2(), SetupControls(), ShowColorSpectrum(), SIC_OverlayShortcutImage(), SoftModalMessageBox(), SOFTWARE_GdipDrawDriverString(), solid_patblt(), SS_ItemOut(), START_TEST(), STATIC_PaintBitmapfn(), STATIC_PaintOwnerDrawfn(), STATIC_PaintTextfn(), STATUSBAR_Refresh(), StatusDialogProc(), stretch_blt_icon(), SYSLINK_Draw(), SYSLINK_GetIdealHeight(), SYSLINK_GetIdealSize(), SYSLINK_Render(), TAB_Create(), TAB_DrawItemInterior(), TAB_Refresh(), TAB_SetItemBounds(), taskdialog_get_text_extent(), test_32bit_ddb(), test_alpha_hdc(), test_bcm_get_ideal_size(), test_BitBlt(), Test_Bitmap(), test_bitmap(), test_bitmap_colors(), test_bitmap_font(), test_bitmap_font_glyph_index(), test_bitmap_font_metrics(), test_bitmap_formats(), test_bitmap_rendering(), test_boundsrect(), Test_BrushOrigin(), test_buffered_paint(), Test_bug3481(), test_button_messages(), test_clipping(), test_CreateBitmap(), Test_CreateCompatibleDC(), test_CreateCompatibleDC(), test_createdibitmap(), Test_CreateDIBitmap_CBM_CREATDIB(), Test_CreateDIBitmap_DIB_PAL_COLORS(), Test_CreateDIBPatternBrushPt(), test_createhbitmap(), test_createtext(), test_D3DKMTCreateDCFromMemory(), test_DC_bitmap(), test_dc_layout(), test_device_caps(), test_DIB_PAL_COLORS(), test_dibsections(), test_DrawDib_sizeimage(), test_DrawIcon(), test_DrawIconEx(), test_DrawState(), test_DrawTextCalcRect(), test_east_asian_font_selection(), test_emf_BitBlt(), test_emf_DCBrush(), test_emf_ExtTextOut_on_path(), test_emfonly(), test_ExtTextOut(), test_fake_bold_font(), test_FillRect(), test_font_caps(), Test_FontSelectionEntry(), test_fstype_fixup(), test_fullname(), test_fullname2_helper(), test_gdi_objects(), test_GdiAlphaBlend(), Test_GdiGetCharDimensions(), test_GdiGetCodePage(), test_GdiGradientFill(), test_GdipDrawImagePointsRectOnMemoryDC(), test_GdipFillRectanglesOnMemoryDCSolidBrush(), test_GdipFillRectanglesOnMemoryDCTextureBrush(), test_GdipGetVisibleClipBounds_memoryDC(), test_gditransform(), test_GetCharABCWidths(), test_GetCharWidth32(), test_GetCharWidthI(), Test_GetCurrentObject(), test_GetCurrentObject(), test_GetCursorFrameInfo(), test_getdc(), test_getdc_scaled(), Test_GetDIBColorTable(), test_GetDIBits_selected_DDB(), test_GetDIBits_selected_DIB(), test_GetFontUnicodeRanges(), test_GetGlyphIndices(), test_GetGlyphOutline(), test_GetGlyphOutline_empty_contour(), test_GetGlyphOutline_metric_clipping(), Test_GetIdealSizeNoThemes(), test_GetKerningPairs(), test_GetOutlineTextMetrics(), Test_GetPixel_1bpp(), Test_GetRandomRgn_RGN5(), Test_GetRandomRgn_SYSRGN(), test_GetSetDIBits_rtl(), test_GetTextFace(), Test_GetTextFaceAliasW(), test_GetTextMetrics2(), test_hdc_caching(), test_height(), test_ImageList_DrawIndirect(), Test_IsSpecialState(), test_item_count(), test_layered_window(), test_margins_default(), test_margins_usefontinfo(), Test_MaskBlt_16bpp(), Test_MaskBlt_1bpp(), Test_MaskBlt_32bpp(), Test_MaskBlt_Brush(), test_max_height(), test_memory_dc_clipping(), test_mf_DCBrush(), test_mf_PatternBrush(), test_mf_SaveDC(), test_mono_bitmap(), test_mono_dibsection(), test_negative_width(), test_nonexistent_font(), Test_NtGdiDoPalette_SetDIBColorTable(), test_nullframerect(), test_oemcharset(), test_orientation(), test_outline_font(), Test_PaintRgn(), test_palette_brush(), test_path_state(), Test_Pen(), test_printer_dc(), test_ps_alternate(), test_RealizationInfo(), Test_Rectangle(), Test_Region(), test_SaveDC(), test_script_cache_reuse(), test_ScriptCacheGetHeight(), test_ScriptGetFontProperties(), test_ScriptGetGlyphABCWidth(), test_ScriptPlace(), test_ScriptShape(), test_ScriptShapeOpenType(), test_select_object(), Test_SelectObject(), Test_SetDCPenColor(), Test_SetDIBits_1bpp(), test_SetDIBitsToDevice(), test_SetDIBitsToDevice_RLE8(), Test_SetPixel_PAL(), test_SetTextJustification(), test_simple_graphics(), Test_SrcMono(), Test_SrcMono1(), test_StretchBlt(), test_StretchDIBits(), test_tab(), test_text_extents(), test_text_metrics(), test_text_position_style(), test_TxGetNaturalSize(), test_widenpath(), Text(), TEXT_DrawUnderscore(), TextProc(), ThemeDrawCaptionText(), ThemeEndBufferedPaint(), ThemeStartBufferedPaint(), TimeZonePageProc(), TOOLBAR_CalcStrings(), TOOLBAR_CustomizeDialogProc(), TOOLBAR_DrawArrow(), TOOLBAR_DrawMasked(), TOOLBAR_DrawPattern(), TOOLBAR_DrawString(), TOOLBAR_LayoutToolbar(), ToolTipProc(), TOOLTIPS_CalcTipSize(), TOOLTIPS_Refresh(), TRACKBAR_DrawTics(), TRACKBAR_FillThumb(), TRACKBAR_Refresh(), TrayIcon_GetProcessorUsageIcon(), TreeListDraw(), TreeListEditLabel(), TREEVIEW_Command(), TREEVIEW_ComputeTextWidth(), TREEVIEW_CreateDragImage(), TREEVIEW_DrawItem(), TREEVIEW_DrawItemLines(), TREEVIEW_EditLabel(), TREEVIEW_InitCheckboxes(), TREEVIEW_NaturalHeight(), TREEVIEW_UpdateSubTree(), UB_Paint(), UITOOLS95_DFC_ButtonCheckRadio(), UITOOLS95_DrawFrameCaption(), UITOOLS95_DrawFrameMenu(), UITOOLS95_DrawFrameScroll(), UITOOLS_DrawCheckedRect(), ImageModel::Undo(), UnpressBox(), update_preview(), UpdateButtonColor(), UpdateCaretPos(), UpdateFont(), UserLpkPSMTextOut(), UXTHEME_DrawBorderRectangle(), UXTHEME_DrawImageBackground(), UXTHEME_DrawThemePartToDib(), UXTHEME_SizedBlt(), VfdToolTip(), VolumeDlgProc(), wglUseFontOutlines_common(), WinMain(), WndProc(), SDIMainFrame::WndProc(), ChildWindow::WndProc(), WndProc_wave(), write_monocolor_span_frontbuffer(), wWinMain(), and CDimmedWindow::~CDimmedWindow().

◆ SelectPalette()

HPALETTE WINAPI SelectPalette ( HDC  hdc,
HPALETTE  hpal,
BOOL  bForceBackground 
)

Definition at line 1290 of file dc.c.

1294 {
1295  HANDLE_METADC(HPALETTE, SelectPalette, NULL, hdc, hpal, bForceBackground);
1296 
1297  return NtUserSelectPalette(hdc, hpal, bForceBackground);
1298 }
HPALETTE WINAPI SelectPalette(HDC hdc, HPALETTE hpal, BOOL bForceBackground)
Definition: dc.c:1290
HPALETTE WINAPI NtUserSelectPalette(HDC hDC, HPALETTE hpal, BOOL ForceBackground)
Definition: windc.c:1033
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
smooth NULL
Definition: ftsmooth.c:416
HDC hdc
Definition: main.c:9

◆ SetArcDirection()

INT WINAPI SetArcDirection ( _In_ HDC  hdc,
_In_ INT  nDirection 
)

Definition at line 380 of file dc.c.

383 {
384  return GetAndSetDCDWord(hdc, GdiGetSetArcDirection, nDirection, 0, 0, 0);
385 }
HDC hdc
Definition: main.c:9
DWORD WINAPI GetAndSetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwIn, _In_ ULONG ulMFId, _In_ USHORT usMF16Id, _In_ DWORD dwError)
Definition: dc.c:737

◆ SetBkColor()

COLORREF WINAPI SetBkColor ( _In_ HDC  hdc,
_In_ COLORREF  crColor 
)

Definition at line 977 of file dc.c.

980 {
981  PDC_ATTR pdcattr;
982  COLORREF crOldColor;
983 
985 
986  /* Get the DC attribute */
987  pdcattr = GdiGetDcAttr(hdc);
988  if (pdcattr == NULL)
989  {
991  return CLR_INVALID;
992  }
993 
994  /* Get old color and store the new */
995  crOldColor = pdcattr->ulBackgroundClr;
996  pdcattr->ulBackgroundClr = crColor;
997 
998  if (pdcattr->crBackgroundClr != crColor)
999  {
1001  pdcattr->crBackgroundClr = crColor;
1002  }
1003 
1004  return crOldColor;
1005 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:882
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
#define DIRTY_BACKGROUND
Definition: ntgdihdl.h:148
ULONG ulBackgroundClr
Definition: ntgdihdl.h:302
smooth NULL
Definition: ftsmooth.c:416
ULONG ulDirty_
Definition: ntgdihdl.h:298
COLORREF crBackgroundClr
Definition: ntgdihdl.h:301
DWORD COLORREF
Definition: windef.h:300
#define SetLastError(x)
Definition: compat.h:500
#define DIRTY_FILL
Definition: ntgdihdl.h:145
HDC hdc
Definition: main.c:9
#define DIRTY_LINE
Definition: ntgdihdl.h:146
COLORREF WINAPI SetBkColor(_In_ HDC hdc, _In_ COLORREF crColor)
Definition: dc.c:977

Referenced by AboutProc(), ANIMATE_TransparentBlt(), CBPaintText(), cd_wndproc(), cdtDrawExt(), CFn_WMDrawItem(), COMBOEX_ComboWndProc(), COMBOEX_DrawItem(), COMBOEX_EditWndProc(), ConfigDlgProc(), CreateDragImage(), CreateLayoutIcon(), CreateStateImageList(), CreateTrayIcon(), D3DXCreateFontIndirectW(), DefWndControlColor(), RdpClientUI::Display_PatBlt(), RdpClientUI::Display_Polygon(), CardButton::Draw(), draw_graphics(), draw_space(), draw_text(), DrawCheckedRect(), DrawShadowText(), EDIT_PaintText(), EditTypeDlg_OnDrawItem(), EnumEnhMetaFile(), FD31_FileOpenDlgProc(), FD31_WMDrawItem(), FILEDLG95_LOOKIN_DrawItem(), FileMenu_DrawItem(), FillSolidRect(), FillSolidRect2(), GraphCtrl_InvalidateCtrl(), GuiPaintTextModeBuffer(), HEADER_DrawItem(), HLPFILE_RtfAddTransparentBitmap(), HOTKEY_DrawHotKey(), ImageList_AddMasked(), ImageList_DrawIndirect(), IntDrawState(), IntGrayString(), IPADDRESS_Draw(), LISTBOX_PaintItem(), LISTVIEW_DrawFocusRect(), LISTVIEW_Refresh(), MONTHCAL_DrawDay(), MONTHCAL_PaintCalendar(), MONTHCAL_PaintTitle(), MONTHCAL_Refresh(), MonthCalPaint(), MouseOnCtrlColorStatic(), MyDrawMenuBarTemp(), OLEPictureImpl_LoadWICSource(), OnDrawItem(), CBrandBand::OnPaint(), OnPaint(), PaintControl(), PaintRect(), PaintText(), parent_wnd_proc(), PlayEnhMetaFileRecord(), PlayMetaFileRecord(), PlotCharacter(), prepaint_setup(), PROPSHEET_WizardSubclassProc(), REBAR_EraseBkGnd(), render_masked_bitmap(), SHFillRectClr(), SS_ItemOut(), START_TEST(), STATIC_PaintBitmapfn(), SYSLINK_Draw(), TAB_DrawItem(), TAB_EraseTabInterior(), test_bitmap_colors(), test_dc_values(), test_ExtTextOut(), Test_GetPixel_1bpp(), test_mf_SaveDC(), test_mono_bitmap(), test_SaveDC(), Test_SrcMono1(), test_StretchBlt(), Text(), TOOLBAR_CustomizeDialogProc(), TOOLBAR_DrawButton(), TOOLBAR_DrawFlatHorizontalSeparator(), TOOLBAR_DrawFlatSeparator(), TOOLBAR_DrawMasked(), TOOLBAR_DrawPattern(), TOOLBAR_DrawString(), TRACKBAR_DrawThumb(), TreeListDraw(), TREEVIEW_DrawItem(), UITOOLS95_DFC_ButtonCheckRadio(), UITOOLS_DrawCheckedRect(), and WndProc().

◆ SetBkMode()

int WINAPI SetBkMode ( _In_ HDC  hdc,
_In_ int  iBkMode 
)

Definition at line 1034 of file dc.c.

1037 {
1038  PDC_ATTR pdcattr;
1039  INT iOldMode;
1040 
1041  HANDLE_METADC(INT, SetBkMode, 0, hdc, iBkMode);
1042 
1043  /* Get the DC attribute */
1044  pdcattr = GdiGetDcAttr(hdc);
1045  if (pdcattr == NULL)
1046  {
1048  return 0;
1049  }
1050 
1051  iOldMode = pdcattr->lBkMode;
1052  pdcattr->jBkMode = iBkMode; // Processed
1053  pdcattr->lBkMode = iBkMode; // Raw
1054 
1055  return iOldMode;
1056 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
int32_t INT
Definition: typedefs.h:58
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
smooth NULL
Definition: ftsmooth.c:416
int WINAPI SetBkMode(_In_ HDC hdc, _In_ int iBkMode)
Definition: dc.c:1034
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
BYTE jBkMode
Definition: ntgdihdl.h:312
LONG lBkMode
Definition: ntgdihdl.h:317

Referenced by add_ruler_units(), BUTTON_WindowProc(), ButtonWndProc_common(), CaptWndProc(), ConfirmMsgBox_Paint(), CreateStateImageList(), DATETIME_Refresh(), default_page_paint_hook(), DlgProc(), draw_graphics(), Pane::draw_item(), draw_item(), draw_text_2(), DrawProc(), DrawShadowText(), DrawStatusTextW(), DrawThemeText(), EDIT_PaintText(), GDI32_GdipDrawDriverString(), HackFillStaticBg(), HEADER_DrawItem(), HEXEDIT_PaintLines(), ICONTITLE_Paint(), ImageView_DrawImage(), LISTVIEW_Refresh(), MainWnd_OnDrawItem(), MainWndProc(), ME_PaintContent(), MonSelPaint(), MONTHCAL_DrawDay(), MonthCalPaint(), MSIText_WndProc(), MyDrawCaptionTemp(), MyDrawFrameCaption(), MyDrawFrameScroll(), MyDrawMenuBarTemp(), NT5_DrawLogoffCaptionText(), CTrayWindow::OnCtlColorBtn(), OnCtlColorStatic(), CMenuToolbarBase::OnCustomDraw(), OnDrawItem(), CTrayClockWnd::OnPaint(), OnPaint(), PB_Paint(), PlayEnhMetaFileRecord(), PlayMetaFileRecord(), prepaint_setup(), PROPSHEET_Paint(), REBAR_DrawBand(), RosImageProc(), SetupControls(), SS_ItemOut(), START_TEST(), SubclassButtonProc(), SYSLINK_Draw(), TAB_DrawItemInterior(), TabDlgProc(), test_ExtTextOut(), test_ps_alternate(), Test_SrcMono1(), Text(), ThemeDlgPostWindowProc(), TOOLBAR_DrawButton(), TOOLBAR_DrawString(), ToolTipProc(), TOOLTIPS_Refresh(), TreeListDraw(), UITOOLS95_DFC_ButtonCheckRadio(), UITOOLS95_DrawFrameCaption(), UITOOLS95_DrawFrameScroll(), WndProc(), ColorStatic::WndProc(), and HyperlinkCtrl::WndProc().

◆ SetBoundsRect()

UINT WINAPI SetBoundsRect ( HDC  hdc,
CONST RECT prc,
UINT  flags 
)

Definition at line 814 of file dc.c.

817 {
818  /* FIXME add check for validate the flags */
820 }
#define DCB_WINDOWMGR
Definition: ntgdityp.h:244
__kernel_entry W32KAPI DWORD APIENTRY NtGdiSetBoundsRect(_In_ HDC hdc, _In_ LPRECT prc, _In_ DWORD f)
GLbitfield flags
Definition: glext.h:7161
HDC hdc
Definition: main.c:9
_Out_ LPRECT prc
Definition: ntgdi.h:1658

Referenced by test_boundsrect(), and test_device_caps().

◆ SetDCBrushColor()

COLORREF WINAPI SetDCBrushColor ( _In_ HDC  hdc,
_In_ COLORREF  crColor 
)

Definition at line 883 of file dc.c.

886 {
887  PDC_ATTR pdcattr;
888  COLORREF crOldColor;
889 
890  /* Get the DC attribute */
891  pdcattr = GdiGetDcAttr(hdc);
892  if (pdcattr == NULL)
893  {
895  return CLR_INVALID;
896  }
897 
898  /* We handle only enhanced meta DCs here */
900 
901  /* Get old color and store the new */
902  crOldColor = pdcattr->ulBrushClr;
903  pdcattr->ulBrushClr = crColor;
904 
905  if (pdcattr->crBrushClr != crColor)
906  {
907  pdcattr->ulDirty_ |= DIRTY_FILL;
908  pdcattr->crBrushClr = crColor;
909  }
910 
911  return crOldColor;
912 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:882
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
COLORREF WINAPI SetDCBrushColor(_In_ HDC hdc, _In_ COLORREF crColor)
Definition: dc.c:883
smooth NULL
Definition: ftsmooth.c:416
ULONG ulDirty_
Definition: ntgdihdl.h:298
DWORD COLORREF
Definition: windef.h:300
COLORREF crBrushClr
Definition: ntgdihdl.h:305
#define SetLastError(x)
Definition: compat.h:500
#define DIRTY_FILL
Definition: ntgdihdl.h:145
HDC hdc
Definition: main.c:9
ULONG ulBrushClr
Definition: ntgdihdl.h:306

Referenced by init_function_pointers(), IntDrawDiagEdge(), SetSpecialDCState(), SetSpecialDCState2(), and Test_NtGdiDoPalette_SetDIBColorTable().

◆ SetDCPenColor()

COLORREF WINAPI SetDCPenColor ( _In_ HDC  hdc,
_In_ COLORREF  crColor 
)

Definition at line 919 of file dc.c.

922 {
923  PDC_ATTR pdcattr;
924  COLORREF crOldColor;
925 
926  /* Get the DC attribute */
927  pdcattr = GdiGetDcAttr(hdc);
928  if (pdcattr == NULL)
929  {
931  return CLR_INVALID;
932  }
933 
934  /* We handle only enhanced meta DCs here */
936 
937  /* Get old color and store the new */
938  crOldColor = pdcattr->ulPenClr;
939  pdcattr->ulPenClr = (ULONG)crColor;
940 
941  if (pdcattr->crPenClr != crColor)
942  {
943  pdcattr->ulDirty_ |= DIRTY_LINE;
944  pdcattr->crPenClr = crColor;
945  }
946 
947  return crOldColor;
948 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:882
COLORREF crPenClr
Definition: ntgdihdl.h:307
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
smooth NULL
Definition: ftsmooth.c:416
ULONG ulDirty_
Definition: ntgdihdl.h:298
DWORD COLORREF
Definition: windef.h:300
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
ULONG ulPenClr
Definition: ntgdihdl.h:308
unsigned int ULONG
Definition: retypes.h:1
#define DIRTY_LINE
Definition: ntgdihdl.h:146
COLORREF WINAPI SetDCPenColor(_In_ HDC hdc, _In_ COLORREF crColor)
Definition: dc.c:919

Referenced by Child_OnPaint(), init_function_pointers(), IntDrawDiagEdge(), MyIntDrawRectEdge(), PB_Paint(), SetSpecialDCState(), SetSpecialDCState2(), Test_CreateCompatibleDC(), Test_NtGdiDoPalette_SetDIBColorTable(), and Test_SetDCPenColor().

◆ SetGraphicsMode()

int WINAPI SetGraphicsMode ( _In_ HDC  hdc,
_In_ int  iMode 
)

Definition at line 1204 of file dc.c.

1207 {
1208  INT iOldMode;
1209  PDC_ATTR pdcattr;
1210 
1211  /* Check parameters */
1212  if ((iMode < GM_COMPATIBLE) || (iMode > GM_ADVANCED))
1213  {
1215  return 0;
1216  }
1217 
1218  /* Get the DC attribute */
1219  pdcattr = GdiGetDcAttr(hdc);
1220  if (pdcattr == NULL)
1221  {
1223  return 0;
1224  }
1225 
1226  /* Check for trivial case */
1227  if (iMode == pdcattr->iGraphicsMode)
1228  return iMode;
1229 
1230  if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
1231  {
1232  if (pdcattr->ulDirty_ & DC_MODE_DIRTY)
1233  {
1234  NtGdiFlush(); // Sync up pdcattr from Kernel space.
1235  pdcattr->ulDirty_ &= ~DC_MODE_DIRTY;
1236  }
1237  }
1238 
1239  /* One would think that setting the graphics mode to GM_COMPATIBLE
1240  * would also reset the world transformation matrix to the unity
1241  * matrix. However, in Windows, this is not the case. This doesn't
1242  * make a lot of sense to me, but that's the way it is.
1243  */
1244  iOldMode = pdcattr->iGraphicsMode;
1245  pdcattr->iGraphicsMode = iMode;
1246 
1247  return iOldMode;
1248 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
_In_ ULONG iMode
Definition: winddi.h:3520
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
int32_t INT
Definition: typedefs.h:58
smooth NULL
Definition: ftsmooth.c:416
ULONG ulDirty_
Definition: ntgdihdl.h:298
__kernel_entry W32KAPI NTSTATUS APIENTRY NtGdiFlush(VOID)
Definition: gdibatch.c:471
#define SetLastError(x)
Definition: compat.h:500
#define GM_COMPATIBLE
Definition: wingdi.h:863
HDC hdc
Definition: main.c:9
#define DC_MODE_DIRTY
Definition: ntgdihdl.h:166
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
Definition: psfuncs.h:420
#define GM_ADVANCED
Definition: wingdi.h:864
INT iGraphicsMode
Definition: ntgdihdl.h:310

Referenced by DoTestEntry(), EnumEnhMetaFile(), gdi_transform_acquire(), METAFILE_PlaybackUpdateGdiTransform(), PlayEnhMetaFileRecord(), SetSpecialDCState(), SetSpecialDCState2(), START_TEST(), test_ellipse(), test_emf_BitBlt(), test_emf_WorldTransform(), test_ExtTextOutScale(), test_GetCharABCWidths(), test_GetCharWidth32(), test_gettransform(), test_modify_world_transform(), test_outline_font(), Test_PaintRgn(), Test_Rectangle(), test_rectangle(), test_roundrect(), Test_SetWorldTransform(), and test_world_transform().

◆ SetPolyFillMode()

int WINAPI SetPolyFillMode ( _In_ HDC  hdc,
_In_ int  iPolyFillMode 
)

Definition at line 1145 of file dc.c.

1148 {
1149  INT iOldPolyFillMode;
1150  PDC_ATTR pdcattr;
1151 
1152  HANDLE_METADC(INT, SetPolyFillMode, 0, hdc, iPolyFillMode);
1153 
1154  /* Get the DC attribute */
1155  pdcattr = GdiGetDcAttr(hdc);
1156  if (pdcattr == NULL)
1157  {
1159  return 0;
1160  }
1161 
1162  if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
1163  {
1164  if (pdcattr->ulDirty_ & DC_MODE_DIRTY)
1165  {
1166  NtGdiFlush(); // Sync up pdcattr from Kernel space.
1167  pdcattr->ulDirty_ &= ~DC_MODE_DIRTY;
1168  }
1169  }
1170 
1171  iOldPolyFillMode = pdcattr->lFillMode;
1172  pdcattr->lFillMode = iPolyFillMode;
1173 
1174  return iOldPolyFillMode;
1175 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
LONG lFillMode
Definition: ntgdihdl.h:318
int32_t INT
Definition: typedefs.h:58
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
smooth NULL
Definition: ftsmooth.c:416
ULONG ulDirty_
Definition: ntgdihdl.h:298
__kernel_entry W32KAPI NTSTATUS APIENTRY NtGdiFlush(VOID)
Definition: gdibatch.c:471
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
#define DC_MODE_DIRTY
Definition: ntgdihdl.h:166
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
Definition: psfuncs.h:420
int WINAPI SetPolyFillMode(_In_ HDC hdc, _In_ int iPolyFillMode)
Definition: dc.c:1145

Referenced by RdpClientUI::Display_Polygon(), EnumEnhMetaFile(), GDI32_GdipFillPath(), get_path_hrgn(), InitColorButtons(), PlayEnhMetaFileRecord(), PlayMetaFileRecord(), PolygonTest(), test_ExtTextOut(), test_mf_SaveDC(), test_SaveDC(), and TRACKBAR_FillThumb().

◆ SetRelAbs()

INT WINAPI SetRelAbs ( HDC  hdc,
INT  Mode 
)

Definition at line 724 of file dc.c.

727 {
728  return GetAndSetDCDWord(hdc, GdiGetSetRelAbs, Mode, 0, 0, 0);
729 }
_In_ ULONG Mode
Definition: hubbusif.h:303
HDC hdc
Definition: main.c:9
DWORD WINAPI GetAndSetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwIn, _In_ ULONG ulMFId, _In_ USHORT usMF16Id, _In_ DWORD dwError)
Definition: dc.c:737

Referenced by init_function_pointers(), and PlayMetaFileRecord().

◆ SetROP2()

int WINAPI SetROP2 ( _In_ HDC  hdc,
_In_ int  rop2 
)

Definition at line 1085 of file dc.c.

1088 {
1089  PDC_ATTR pdcattr;
1090  INT rop2Old;
1091 
1092  HANDLE_METADC(INT, SetROP2, 0, hdc, rop2);
1093 
1094  /* Get the DC attribute */
1095  pdcattr = GdiGetDcAttr(hdc);
1096  if (pdcattr == NULL)
1097  {
1099  return 0;
1100  }
1101 
1102  if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
1103  {
1104  if (pdcattr->ulDirty_ & DC_MODE_DIRTY)
1105  {
1106  NtGdiFlush();
1107  pdcattr->ulDirty_ &= ~DC_MODE_DIRTY;
1108  }
1109  }
1110 
1111  rop2Old = pdcattr->jROP2;
1112  pdcattr->jROP2 = (BYTE)rop2;
1113 
1114  return rop2Old;
1115 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
int32_t INT
Definition: typedefs.h:58
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
smooth NULL
Definition: ftsmooth.c:416
ULONG ulDirty_
Definition: ntgdihdl.h:298
__kernel_entry W32KAPI NTSTATUS APIENTRY NtGdiFlush(VOID)
Definition: gdibatch.c:471
BYTE jROP2
Definition: ntgdihdl.h:311
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
#define DC_MODE_DIRTY
Definition: ntgdihdl.h:166
unsigned char BYTE
Definition: xxhash.c:193
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
Definition: psfuncs.h:420
int WINAPI SetROP2(_In_ HDC hdc, _In_ int rop2)
Definition: dc.c:1085

Referenced by RdpClientUI::Display_Line(), draw_graphics(), CImgAreaWindow::drawZoomFrame(), EnumEnhMetaFile(), PlayEnhMetaFileRecord(), PlayMetaFileRecord(), Poly(), RectSel(), test_dc_attributes(), test_destroyed_window(), and test_ExtTextOut().

◆ SetStretchBltMode()

int WINAPI SetStretchBltMode ( _In_ HDC  hdc,
_In_ int  iStretchMode 
)

Definition at line 1326 of file dc.c.

1329 {
1330  INT iOldMode;
1331  PDC_ATTR pdcattr;
1332 
1333  HANDLE_METADC(INT, SetStretchBltMode, 0, hdc, iStretchMode);
1334 
1335  /* Get the DC attribute */
1336  pdcattr = GdiGetDcAttr(hdc);
1337  if (pdcattr == NULL)
1338  {
1340  return 0;
1341  }
1342 
1343  iOldMode = pdcattr->lStretchBltMode;
1344  pdcattr->lStretchBltMode = iStretchMode;
1345 
1346  // Wine returns an error here. We set the default.
1347  if ((iStretchMode <= 0) || (iStretchMode > MAXSTRETCHBLTMODE)) iStretchMode = WHITEONBLACK;
1348 
1349  pdcattr->jStretchBltMode = iStretchMode;
1350 
1351  return iOldMode;
1352 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
BYTE jStretchBltMode
Definition: ntgdihdl.h:314
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define MAXSTRETCHBLTMODE
Definition: wingdi.h:955
int WINAPI SetStretchBltMode(_In_ HDC hdc, _In_ int iStretchMode)
Definition: dc.c:1326
int32_t INT
Definition: typedefs.h:58
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:616
smooth NULL
Definition: ftsmooth.c:416
#define SetLastError(x)
Definition: compat.h:500
HDC hdc
Definition: main.c:9
LONG lStretchBltMode
Definition: ntgdihdl.h:319
#define WHITEONBLACK
Definition: wingdi.h:952

Referenced by DrawBackgroundPreview(), EnumEnhMetaFile(), MainWndProc(), PlayEnhMetaFileRecord(), PlayMetaFileRecord(), test_ExtTextOut(), UXTHEME_StretchBlt(), and WinGStretchBlt().