ReactOS  0.4.15-dev-3295-gaa8fc87
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 328 of file dc.c.

329 {
330  PDC_ATTR pDc_Attr;
331 
334  {
335  PLDC pLDC = GdiGetLDC(hDC);
336  if ( !pLDC )
337  {
339  return FALSE;
340  }
341  /* If a document has started set it to die. */
342  if (pLDC->Flags & LDC_INIT_DOCUMENT) pLDC->Flags |= LDC_KILL_DOCUMENT;
343 
344  return NtGdiCancelDC(hDC);
345  }
346 
348  {
349  pDc_Attr->ulDirty_ &= ~DC_PLAYMETAFILE;
350  return TRUE;
351  }
352 
353  return FALSE;
354 }
#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:287
#define LDC_KILL_DOCUMENT
Definition: ntgdihdl.h:180
#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:611
#define GDI_OBJECT_TYPE_METADC
Definition: gdi.h:57
Definition: ntgdihdl.h:284
#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)
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)
#define NULL
Definition: types.h:112

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)
NTSTATUS HEAP_strdupA2W(LPWSTR *ppszW, LPCSTR lpszA)
Definition: heap.c:43
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
HDC FASTCALL IntCreateDICW(LPCWSTR lpwszDriver, LPCWSTR lpwszDevice, LPCWSTR lpwszOutput, PDEVMODEW lpInitData, ULONG iType)
Definition: dc.c:8
#define NULL
Definition: types.h:112
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 1586 of file dc.c.

1587 {
1589 }
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 1591 of file dc.c.

1592 {
1594 }
__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  ULONG hType = GDI_HANDLE_GET_TYPE(hdc);
285 
286  if (hType != GDILoObjType_LO_DC_TYPE)
287  {
288  return METADC_RosGlueDeleteDC(hdc);
289  }
290 
291  //if ( ghICM || pdcattr->pvLIcm )
292  // IcmDeleteLocalDC( hdc, pdcattr, NULL );
293 
294  return NtGdiDeleteObjectApp(hdc);
295 }
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
HDC hdc
Definition: main.c:9
__kernel_entry W32KAPI BOOL APIENTRY NtGdiDeleteObjectApp(_In_ HANDLE hobj)
unsigned int ULONG
Definition: retypes.h:1
BOOL WINAPI METADC_RosGlueDeleteDC(_In_ HDC hdc)
Definition: rosglue.c:392

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 489 of file dc.c.

493 {
494  ULONG ObjectsCount;
495  ULONG Size;
496  PVOID Buffer = NULL;
497  DWORD_PTR EndOfBuffer;
498  int Result = 0;
499 
500  switch (nObjectType)
501  {
502  case OBJ_BRUSH:
503  Size = sizeof(LOGBRUSH);
504  break;
505 
506  case OBJ_PEN:
507  Size = sizeof(LOGPEN);
508  break;
509 
510  default:
512  return 0;
513  }
514 
515  ObjectsCount = NtGdiEnumObjects(hdc, nObjectType, 0, NULL);
516  if (!ObjectsCount) return 0;
517 
518  Buffer = HeapAlloc(GetProcessHeap(), 0, ObjectsCount * Size);
519  if (!Buffer)
520  {
522  return 0;
523  }
524 
525  if (!NtGdiEnumObjects(hdc, nObjectType, ObjectsCount * Size, Buffer))
526  {
528  return 0;
529  }
530 
531  EndOfBuffer = (DWORD_PTR)Buffer + (ObjectsCount * Size);
532  while ((DWORD_PTR)Buffer < EndOfBuffer)
533  {
534  Result = lpObjectFunc(Buffer, lParam);
535  if (!Result) break;
536  Buffer = (PVOID)((DWORD_PTR)Buffer + Size);
537  }
538 
540  return Result;
541 }
#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
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
#define OBJ_PEN
Definition: objidl.idl:1409
_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:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
uint32_t DWORD_PTR
Definition: typedefs.h:65
struct tagLOGPEN LOGPEN
#define OBJ_BRUSH
Definition: objidl.idl:1410
#define NULL
Definition: types.h:112
unsigned int ULONG
Definition: retypes.h:1
struct tagLOGBRUSH LOGBRUSH
LPARAM lParam
Definition: combotst.c:139
#define HeapFree(x, y, z)
Definition: compat.h:594

◆ GdiCleanCacheDC()

BOOL WINAPI GdiCleanCacheDC ( HDC  hdc)

Definition at line 390 of file dc.c.

391 {
393  return TRUE;
395  return FALSE;
396 }
#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:611
HDC hdc
Definition: main.c:9

◆ GdiConvertAndCheckDC()

HDC WINAPI GdiConvertAndCheckDC ( HDC  hdc)

Definition at line 403 of file dc.c.

404 {
405  PLDC pldc;
406  ULONG hType = GDI_HANDLE_GET_TYPE(hdc);
408  return hdc;
409  pldc = GdiGetLDC(hdc);
410  if (pldc)
411  {
412  if (pldc->Flags & LDC_SAPCALLBACK) GdiSAPCallback(pldc);
413  if (pldc->Flags & LDC_KILL_DOCUMENT) return NULL;
414  if (pldc->Flags & LDC_STARTPAGE) StartPage(hdc);
415  return hdc;
416  }
418  return NULL;
419 }
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
ULONG Flags
Definition: ntgdihdl.h:287
int WINAPI StartPage(_In_ HDC)
#define LDC_KILL_DOCUMENT
Definition: ntgdihdl.h:180
#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:611
Definition: ntgdihdl.h:284
HDC hdc
Definition: main.c:9
#define LDC_SAPCALLBACK
Definition: ntgdihdl.h:172
#define NULL
Definition: types.h:112
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 379 of file dc.c.

380 {
381  return 0;
382 }

Referenced by ReleaseDC().

◆ GdiSelectBitmap()

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

Definition at line 1419 of file dc.c.

1422 {
1423  return NtGdiSelectBitmap(hdc, hbmp);
1424 }
__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 1428 of file dc.c.

1431 {
1432  PDC_ATTR pdcattr;
1433  HBRUSH hbrOld;
1434 
1435  HANDLE_METADC(HBRUSH, SelectObject, NULL, hdc, hbr);
1436 
1437  /* Get the DC attribute */
1438  pdcattr = GdiGetDcAttr(hdc);
1439  if (pdcattr == NULL)
1440  {
1442  return NULL;
1443  }
1444 
1445  /* Get the current brush. If it matches the new brush, we're done */
1446  hbrOld = pdcattr->hbrush;
1447  if (hbrOld == hbr)
1448  return hbrOld;
1449 
1450  /* Set the new brush and update dirty flags */
1451  pdcattr->hbrush = hbr;
1452  pdcattr->ulDirty_ |= DC_BRUSH_DIRTY;
1453  return hbrOld;
1454 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
HANDLE hbrush
Definition: ntgdihdl.h:313
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
ULONG ulDirty_
Definition: ntgdihdl.h:312
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
#define DC_BRUSH_DIRTY
Definition: ntgdihdl.h:157
HGDIOBJ WINAPI SelectObject(_In_ HDC hdc, _In_ HGDIOBJ hobj)
Definition: dc.c:1539

Referenced by SelectObject().

◆ GdiSelectFont()

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

Definition at line 1488 of file dc.c.

1491 {
1492  PDC_ATTR pdcattr;
1493  HFONT hfontOld;
1494 
1496 
1497  /* Get the DC attribute */
1498  pdcattr = GdiGetDcAttr(hdc);
1499  if (pdcattr == NULL)
1500  {
1502  return NULL;
1503  }
1504 
1505  /* Get the current font. If it matches the new font, we're done */
1506  hfontOld = pdcattr->hlfntNew;
1507  if (hfontOld == hfont)
1508  return hfontOld;
1509 
1510  /* Set the new font and update dirty flags */
1511  pdcattr->hlfntNew = hfont;
1512  pdcattr->ulDirty_ &= ~SLOW_WIDTHS;
1513  pdcattr->ulDirty_ |= DIRTY_CHARSET;
1514 
1515  /* If the DC does not have a DIB section selected, try a batch command */
1516  if (!(pdcattr->ulDirty_ & DC_DIBSECTION))
1517  {
1518  PGDIBSOBJECT pgO;
1519 
1521  if (pgO)
1522  {
1523  pgO->hgdiobj = hfont;
1524  return hfontOld;
1525  }
1526  }
1527 
1528  /* We could not use the batch command, call win32k */
1529  return NtGdiSelectFont(hdc, hfont);
1530 }
#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:589
HANDLE hlfntNew
Definition: ntgdihdl.h:348
static HFONT hfont
ULONG ulDirty_
Definition: ntgdihdl.h:312
__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:611
HDC hdc
Definition: main.c:9
#define SLOW_WIDTHS
Definition: ntgdihdl.h:150
#define NULL
Definition: types.h:112
HGDIOBJ WINAPI SelectObject(_In_ HDC hdc, _In_ HGDIOBJ hobj)
Definition: dc.c:1539
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 1458 of file dc.c.

1461 {
1462  PDC_ATTR pdcattr;
1463  HPEN hpenOld;
1464 
1466 
1467  /* Get the DC attribute */
1468  pdcattr = GdiGetDcAttr(hdc);
1469  if (pdcattr == NULL)
1470  {
1472  return NULL;
1473  }
1474 
1475  /* Get the current pen. If it matches the new pen, we're done */
1476  hpenOld = pdcattr->hpen;
1477  if (hpenOld == hpen)
1478  return hpenOld;
1479 
1480  /* Set the new pen and update dirty flags */
1481  pdcattr->ulDirty_ |= DC_PEN_DIRTY;
1482  pdcattr->hpen = hpen;
1483  return hpenOld;
1484 }
HANDLE hpen
Definition: ntgdihdl.h:314
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:589
ULONG ulDirty_
Definition: ntgdihdl.h:312
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
HGDIOBJ WINAPI SelectObject(_In_ HDC hdc, _In_ HGDIOBJ hobj)
Definition: dc.c:1539

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 746 of file dc.c.

753 {
754  DWORD dwResult;
755  PLDC pldc;
756 
758  ulMFId != EMR_MAX + 1 )
759  {
761  {
762  return METADC_SetD( hdc, dwIn, usMF16Id );
763  }
764  pldc = GdiGetLDC(hdc);
765  if ( pldc->iType == LDC_EMFLDC)
766  {
767  if (!EMFDC_SetD( pldc, dwIn, ulMFId ))
768  return 0;
769  }
770  }
771 
772  /* Call win32k to do the real work */
773  if (!NtGdiGetAndSetDCDword(hdc, u, dwIn, &dwResult))
774  {
775  return dwError;
776  }
777 
778  return dwResult;
779 }
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
BOOL WINAPI METADC_SetD(_In_ HDC hdc, _In_ DWORD dwIn, _In_ USHORT usMF16Id)
Definition: rosglue.c:312
BOOL WINAPI EMFDC_SetD(_In_ PLDC pldc, _In_ DWORD dwIn, _In_ ULONG ulMFId)
Definition: rosglue.c:331
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
PLDC FASTCALL GdiGetLDC(HDC hDC)
Definition: misc.c:785
unsigned long DWORD
Definition: ntddk_ex.h:95
Definition: ntgdihdl.h:284
INT iType
Definition: ntgdihdl.h:288
HDC hdc
Definition: main.c:9
_In_ UINT _In_ DWORD dwIn
Definition: ntgdi.h:248
#define LDC_EMFLDC
Definition: gdi_private.h:105

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

◆ GetArcDirection()

INT WINAPI GetArcDirection ( _In_ HDC  hdc)

Definition at line 358 of file dc.c.

360 {
361  return GetDCDWord( hdc, GdiGetArcDirection, 0);
362 }
DWORD WINAPI GetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwError)
Definition: dc.c:787
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 808 of file dc.c.

811 {
812  return NtGdiGetDCPoint(hdc, GdiGetAspectRatioFilter, (PPOINTL)lpAspectRatio );
813 }
HDC hdc
Definition: main.c:9
BOOL APIENTRY NtGdiGetDCPoint(HDC hDC, UINT iPoint, PPOINTL Point)
Definition: coord.c:1424

◆ GetBkColor()

COLORREF WINAPI GetBkColor ( _In_ HDC  hdc)

Definition at line 978 of file dc.c.

980 {
981  PDC_ATTR pdcattr;
982 
983  /* Get the DC attribute */
984  pdcattr = GdiGetDcAttr(hdc);
985  if (pdcattr == NULL)
986  {
987  /* Don't set LastError here! */
988  return CLR_INVALID;
989  }
990 
991  return pdcattr->ulBackgroundClr;
992 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:883
ULONG ulBackgroundClr
Definition: ntgdihdl.h:316
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112

Referenced by cd_wndproc(), draw_graphics(), EDIT_PaintText(), EMFDC_MaskBlt(), EMFDC_PlgBlt(), EMFDRV_StretchBlt(), 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 1035 of file dc.c.

1036 {
1037  PDC_ATTR pdcattr;
1038 
1039  /* Get the DC attribute */
1040  pdcattr = GdiGetDcAttr(hdc);
1041  if (pdcattr == NULL)
1042  {
1043  /* Don't set LastError here! */
1044  return 0;
1045  }
1046 
1047  return pdcattr->lBkMode;
1048 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
LONG lBkMode
Definition: ntgdihdl.h:331

◆ GetBoundsRect()

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

Definition at line 821 of file dc.c.

826 {
827  return NtGdiGetBoundsRect(hdc,lprcBounds,flags & ~DCB_WINDOWMGR);
828 }
#define DCB_WINDOWMGR
Definition: gdi_private.h:62
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 851 of file dc.c.

853 {
854  return NtGdiGetAppClipBox(hdc, lprc);
855 }
_In_ int _Inout_ LPRECT lprc
Definition: winuser.h:4441
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 428 of file dc.c.

431 {
432  PDC_ATTR pdcattr = NULL;
433 
434  /* Check if this is a user mode object */
435  if ((uObjectType == OBJ_PEN) ||
436  (uObjectType == OBJ_EXTPEN) ||
437  (uObjectType == OBJ_BRUSH) ||
438  (uObjectType == OBJ_COLORSPACE))
439  {
440  /* Get the DC attribute */
441  pdcattr = GdiGetDcAttr(hdc);
442  if (pdcattr == NULL)
443  {
444  return NULL;
445  }
446  }
447 
448  /* Check what object was requested */
449  switch (uObjectType)
450  {
451  case OBJ_EXTPEN:
452  case OBJ_PEN:
453  return pdcattr->hpen;
454 
455  case OBJ_BRUSH:
456  return pdcattr->hbrush;
457 
458  case OBJ_COLORSPACE:
459  return pdcattr->hColorSpace;
460 
461  case OBJ_PAL:
462  uObjectType = GDI_OBJECT_TYPE_PALETTE;
463  break;
464 
465  case OBJ_FONT:
466  uObjectType = GDI_OBJECT_TYPE_FONT;
467  break;
468 
469  case OBJ_BITMAP:
470  uObjectType = GDI_OBJECT_TYPE_BITMAP;
471  break;
472 
473  /* All others are invalid */
474  default:
476  return NULL;
477  }
478 
479  /* Pass the request to win32k */
480  return NtGdiGetDCObject(hdc, uObjectType);
481 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
HANDLE hbrush
Definition: ntgdihdl.h:313
HANDLE hpen
Definition: ntgdihdl.h:314
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
HCOLORSPACE hColorSpace
Definition: ntgdihdl.h:337
#define OBJ_PEN
Definition: objidl.idl:1409
#define OBJ_COLORSPACE
Definition: wingdi.h:704
#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:611
#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 NULL
Definition: types.h:112
#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(), EMFDC_MaskBlt(), EMFDC_PlgBlt(), EMFDC_SetDCBrushColor(), EMFDC_SetDCPenColor(), EMFDRV_SetDCBrushColor(), EMFDRV_SetDCPenColor(), EMFDRV_StretchBlt(), emfdrv_stretchblt(), EnumEnhMetaFile(), EnumMetaFile(), eto_emf_enum_proc(), fnIMLangFontLink2_MapFont(), GdipCreateFontFromDC(), GdipCreateFromHDC2(), get_bitmap_info(), get_graphics_device_bounds(), GuiReleaseScreenBuffer(), init_script_cache(), IntDrawState(), IntGrayString(), metadc_stretchblt(), 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 863 of file dc.c.

865 {
866  PDC_ATTR pdcattr;
867 
868  /* Get the DC attribute */
869  pdcattr = GdiGetDcAttr(hdc);
870  if (pdcattr == NULL)
871  {
873  return CLR_INVALID;
874  }
875 
876  return pdcattr->ulBrushClr;
877 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:883
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
ULONG ulBrushClr
Definition: ntgdihdl.h:320
#define NULL
Definition: types.h:112

Referenced by Test_IsSpecialState().

◆ GetDCDWord()

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

Definition at line 787 of file dc.c.

791 {
792  DWORD dwResult;
793 
794  if (!NtGdiGetDCDword(hdc, u, &dwResult))
795  {
796  return dwError;
797  }
798 
799  return dwResult;
800 }
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 EMFDC_RestoreDC(), GetArcDirection(), GetFontLanguageInfo(), GetObjectType(), and GetRelAbs().

◆ GetDCPenColor()

COLORREF WINAPI GetDCPenColor ( _In_ HDC  hdc)

Definition at line 884 of file dc.c.

886 {
887  PDC_ATTR pdcattr;
888 
889  /* Get the DC attribute */
890  pdcattr = GdiGetDcAttr(hdc);
891  if (pdcattr == NULL)
892  {
894  return CLR_INVALID;
895  }
896 
897  return pdcattr->ulPenClr;
898 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:883
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
ULONG ulPenClr
Definition: ntgdihdl.h:322
#define NULL
Definition: types.h:112

Referenced by Test_IsSpecialState().

◆ GetDeviceCaps()

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

Definition at line 550 of file dc.c.

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

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 1205 of file dc.c.

1206 {
1207  PDC_ATTR pdcattr;
1208 
1209  /* Get the DC attribute */
1210  pdcattr = GdiGetDcAttr(hdc);
1211  if (pdcattr == NULL)
1212  {
1213  /* Don't set LastError here! */
1214  return 0;
1215  }
1216 
1217  /* Return current graphics mode */
1218  return pdcattr->iGraphicsMode;
1219 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
INT iGraphicsMode
Definition: ntgdihdl.h:324

◆ GetHFONT()

HFONT WINAPI GetHFONT ( HDC  hdc)

Definition at line 1399 of file dc.c.

1400 {
1401  PDC_ATTR pdcattr;
1402 
1403  /* Get the DC attribute */
1404  pdcattr = GdiGetDcAttr(hdc);
1405  if (pdcattr == NULL)
1406  {
1407  /* Don't set LastError here! */
1408  return NULL;
1409  }
1410 
1411  /* Return the current font */
1412  return pdcattr->hlfntNew;
1413 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
HANDLE hlfntNew
Definition: ntgdihdl.h:348
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112

◆ GetPolyFillMode()

int WINAPI GetPolyFillMode ( HDC  hdc)

Definition at line 1146 of file dc.c.

1147 {
1148  PDC_ATTR pdcattr;
1149 
1150  /* Get DC attribute */
1151  pdcattr = GdiGetDcAttr(hdc);
1152  if (pdcattr == NULL)
1153  {
1154  /* Don't set LastError here! */
1155  return 0;
1156  }
1157 
1158  /* Return current fill mode */
1159  return pdcattr->lFillMode;
1160 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
LONG lFillMode
Definition: ntgdihdl.h:332
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112

◆ GetRelAbs()

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

Definition at line 720 of file dc.c.

723 {
724  return GetDCDWord(hdc, GdiGetRelAbs, 0);
725 }
DWORD WINAPI GetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwError)
Definition: dc.c:787
HDC hdc
Definition: main.c:9

Referenced by init_function_pointers().

◆ GetROP2()

int WINAPI GetROP2 ( _In_ HDC  hdc)

Definition at line 1086 of file dc.c.

1088 {
1089  PDC_ATTR pdcattr;
1090 
1091  /* Get the DC attribute */
1092  pdcattr = GdiGetDcAttr(hdc);
1093  if (pdcattr == NULL)
1094  {
1095  /* Do not set LastError here! */
1096  return 0;
1097  }
1098 
1099  return pdcattr->jROP2;
1100 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
BYTE jROP2
Definition: ntgdihdl.h:325
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112

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 1346 of file dc.c.

1347 {
1348  PDC_ATTR pdcattr;
1349 
1350  /* Get the DC attribute */
1351  pdcattr = GdiGetDcAttr(hdc);
1352  if (pdcattr == NULL)
1353  {
1354  /* Don't set LastError here! */
1355  return 0;
1356  }
1357 
1358  return pdcattr->lStretchBltMode;
1359 }
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
HDC hdc
Definition: main.c:9
LONG lStretchBltMode
Definition: ntgdihdl.h:333
#define NULL
Definition: types.h:112

◆ 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 }
#define DbgPrint
Definition: hal.h:12
PVOID pvLDC
Definition: ntgdihdl.h:311
#define LDC_LDC
Definition: gdi_private.h:104
#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
HANDLE ghSpooler
Definition: printdrv.c:40
HDC hDC
Definition: ntgdihdl.h:286
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
#define LMEM_ZEROINIT
Definition: winbase.h:372
Definition: ntgdihdl.h:284
INT iType
Definition: ntgdihdl.h:288
#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
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
PVOID GdiGetHandleUserData(_In_ HGDIOBJ hobj)
Definition: gditools.c:68
#define NULL
Definition: types.h:112
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#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
#define DPRINT
Definition: sndvol32.h:71

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:245
VOID FASTCALL UserLeave(VOID)
Definition: ntuser.c:253
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 1291 of file dc.c.

1294 {
1295  LPDEVMODEW InitDataW;
1296 
1297  InitDataW = GdiConvertToDevmodeW((LPDEVMODEA)lpInitData);
1298 
1299  NtGdiResetDC ( hdc, InitDataW, NULL, NULL, NULL);
1300  HEAP_free(InitDataW);
1301  return hdc;
1302 }
VOID HEAP_free(LPVOID memory)
Definition: heap.c:63
DEVMODEW *WINAPI GdiConvertToDevmodeW(const DEVMODEA *)
Definition: misc.c:969
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
__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 1277 of file dc.c.

1280 {
1281  NtGdiResetDC ( hdc, (PDEVMODEW)lpInitData, NULL, NULL, NULL);
1282  return hdc;
1283 }
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
__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 315 of file dc.c.

317 {
318  HANDLE_METADC(BOOL, RestoreDC, FALSE, hdc, iLevel);
319  return NtGdiRestoreDC(hdc, iLevel);
320 }
__kernel_entry W32KAPI BOOL APIENTRY NtGdiRestoreDC(_In_ HDC hdc, _In_ INT iLevel)
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#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:315

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

◆ SaveDC()

INT WINAPI SaveDC ( IN HDC  hdc)

Definition at line 303 of file dc.c.

304 {
306  return NtGdiSaveDC(hdc);
307 }
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:303
HDC hdc
Definition: main.c:9
#define HANDLE_METADC1P(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:666

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

◆ SelectObject()

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

Definition at line 1539 of file dc.c.

1542 {
1543  /* Fix up 16 bit handles */
1544  hobj = GdiFixUpHandle(hobj);
1545  if (!GdiValidateHandle(hobj))
1546  {
1547  return NULL;
1548  }
1549 
1550  /* Call the appropriate select function */
1551  switch (GDI_HANDLE_GET_TYPE(hobj))
1552  {
1555 
1558  return GdiSelectBitmap(hdc, hobj);
1559 
1561  return GdiSelectBrush(hdc, hobj);
1562 
1565  return GdiSelectPen(hdc, hobj);
1566 
1568  return GdiSelectFont(hdc, hobj);
1569 
1571  return SetColorSpace(hdc, hobj);
1572 
1575 
1576  default:
1577  return NULL;
1578  }
1579 
1580  return NULL;
1581 }
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:1419
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:1488
HBRUSH WINAPI GdiSelectBrush(_In_ HDC hdc, _In_ HBRUSH hbr)
Definition: dc.c:1428
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
#define RGN_COPY
Definition: wingdi.h:357
#define NULL
Definition: types.h:112
HPEN WINAPI GdiSelectPen(_In_ HDC hdc, _In_ HPEN hpen)
Definition: dc.c:1458
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_GetIdealSize(), 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(), DrawIconOnOwnerDrawnButtons(), 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(), GdiSelectBrush(), GdiSelectFont(), GdiSelectPen(), GeneralPageProc(), get_bitmap_info(), 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(), GraphCtrl_ShiftGrid(), 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(), 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(), CAutoComplete::OnDrawItem(), OnDrawItem(), CPaletteWindow::OnPaint(), CToolSettingsWindow::OnPaint(), CImgAreaWindow::OnPaint(), CTrayClockWnd::OnPaint(), CBrandBand::OnPaint(), CACSizeBox::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(), CACListView::SetFont(), 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(), StatusMessageWindowProc(), 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_StretchBlt_TopDownOptions(), 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 1312 of file dc.c.

1316 {
1318  {
1320  {
1321  return (HPALETTE)((ULONG_PTR)METADC_SelectPalette(hdc, hpal));
1322  }
1323  else
1324  {
1325  PLDC pLDC = GdiGetLDC(hdc);
1326  if ( !pLDC )
1327  {
1329  return NULL;
1330  }
1331  if ( pLDC->iType == LDC_EMFLDC && !(EMFDC_SelectPalette(pLDC, hpal)) )
1332  {
1333  return NULL;
1334  }
1335  }
1336  }
1337  return NtUserSelectPalette(hdc, hpal, bForceBackground);
1338 }
BOOL EMFDC_SelectPalette(LDC *dc_attr, HPALETTE palette) DECLSPEC_HIDDEN
HPALETTE WINAPI NtUserSelectPalette(HDC hDC, HPALETTE hpal, BOOL ForceBackground)
Definition: windc.c:1033
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
PLDC FASTCALL GdiGetLDC(HDC hDC)
Definition: misc.c:785
#define SetLastError(x)
Definition: compat.h:611
BOOL METADC_SelectPalette(HDC hdc, HPALETTE palette) DECLSPEC_HIDDEN
Definition: metadc.c:1220
Definition: ntgdihdl.h:284
INT iType
Definition: ntgdihdl.h:288
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
#define ULONG_PTR
Definition: config.h:101
#define LDC_EMFLDC
Definition: gdi_private.h:105

◆ SetArcDirection()

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

Definition at line 367 of file dc.c.

370 {
372 }
#define EMR_SETARCDIRECTION
Definition: wingdi.h:131
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:746

◆ SetBkColor()

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

Definition at line 999 of file dc.c.

1002 {
1003  PDC_ATTR pdcattr;
1004  COLORREF crOldColor;
1005 
1007 
1008  /* Get the DC attribute */
1009  pdcattr = GdiGetDcAttr(hdc);
1010  if (pdcattr == NULL)
1011  {
1013  return CLR_INVALID;
1014  }
1015 
1016  /* Get old color and store the new */
1017  crOldColor = pdcattr->ulBackgroundClr;
1018  pdcattr->ulBackgroundClr = crColor;
1019 
1020  if (pdcattr->crBackgroundClr != crColor)
1021  {
1023  pdcattr->crBackgroundClr = crColor;
1024  }
1025 
1026  return crOldColor;
1027 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:883
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define DIRTY_BACKGROUND
Definition: ntgdihdl.h:148
ULONG ulBackgroundClr
Definition: ntgdihdl.h:316
ULONG ulDirty_
Definition: ntgdihdl.h:312
COLORREF crBackgroundClr
Definition: ntgdihdl.h:315
DWORD COLORREF
Definition: windef.h:300
#define SetLastError(x)
Definition: compat.h:611
#define DIRTY_FILL
Definition: ntgdihdl.h:145
HDC hdc
Definition: main.c:9
#define NULL
Definition: types.h:112
#define DIRTY_LINE
Definition: ntgdihdl.h:146
COLORREF WINAPI SetBkColor(_In_ HDC hdc, _In_ COLORREF crColor)
Definition: dc.c:999

Referenced by AboutProc(), ANIMATE_TransparentBlt(), CBPaintText(), cd_wndproc(), cdtDrawExt(), CFn_WMDrawItem(), COMBOEX_ComboWndProc(), COMBOEX_DrawItem(), COMBOEX_EditWndProc(), ConfigDlgProc(), CreateDragImage(), CreateLayoutIcon(), CreateStateImageList(), CreateTrayIcon(), 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 1056 of file dc.c.

1059 {
1060  PDC_ATTR pdcattr;
1061  INT iOldMode;
1062 
1063  HANDLE_METADC(INT, SetBkMode, 0, hdc, iBkMode);
1064 
1065  /* Get the DC attribute */
1066  pdcattr = GdiGetDcAttr(hdc);
1067  if (pdcattr == NULL)
1068  {
1070  return 0;
1071  }
1072 
1073  iOldMode = pdcattr->lBkMode;
1074  pdcattr->jBkMode = iBkMode; // Processed
1075  pdcattr->lBkMode = iBkMode; // Raw
1076 
1077  return iOldMode;
1078 }
#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:589
int WINAPI SetBkMode(_In_ HDC hdc, _In_ int iBkMode)
Definition: dc.c:1056
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
BYTE jBkMode
Definition: ntgdihdl.h:326
#define NULL
Definition: types.h:112
LONG lBkMode
Definition: ntgdihdl.h:331

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(), LogOffDialogProc(), MainWnd_OnDrawItem(), MainWndProc(), ME_PaintContent(), MonSelPaint(), MONTHCAL_DrawDay(), MonthCalPaint(), MSIText_WndProc(), MyDrawCaptionTemp(), MyDrawFrameCaption(), MyDrawFrameScroll(), MyDrawMenuBarTemp(), NT5_DrawLogoffCaptionText(), CTrayWindow::OnCtlColorBtn(), OnCtlColorStatic(), CMenuToolbarBase::OnCustomDraw(), CAutoComplete::OnDrawItem(), OnDrawItem(), CTrayClockWnd::OnPaint(), OnPaint(), PB_Paint(), PlayEnhMetaFileRecord(), PlayMetaFileRecord(), prepaint_setup(), ProgressDlg::ProcessWindowMessage(), PROPSHEET_Paint(), REBAR_DrawBand(), RosImageProc(), SetupControls(), ShutdownDialogProc(), 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 836 of file dc.c.

839 {
840  /* FIXME add check for validate the flags */
842 }
#define DCB_WINDOWMGR
Definition: gdi_private.h:62
__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 905 of file dc.c.

908 {
909  PDC_ATTR pdcattr;
910  COLORREF crOldColor;
911 
912  /* Get the DC attribute */
913  pdcattr = GdiGetDcAttr(hdc);
914  if (pdcattr == NULL)
915  {
917  return CLR_INVALID;
918  }
919 
920  /* We handle only enhanced meta DCs here */
922 
923  /* Get old color and store the new */
924  crOldColor = pdcattr->ulBrushClr;
925  pdcattr->ulBrushClr = crColor;
926 
927  if (pdcattr->crBrushClr != crColor)
928  {
929  pdcattr->ulDirty_ |= DIRTY_FILL;
930  pdcattr->crBrushClr = crColor;
931  }
932 
933  return crOldColor;
934 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:883
COLORREF WINAPI SetDCBrushColor(_In_ HDC hdc, _In_ COLORREF crColor)
Definition: dc.c:905
ULONG ulDirty_
Definition: ntgdihdl.h:312
DWORD COLORREF
Definition: windef.h:300
COLORREF crBrushClr
Definition: ntgdihdl.h:319
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
#define SetLastError(x)
Definition: compat.h:611
#define DIRTY_FILL
Definition: ntgdihdl.h:145
HDC hdc
Definition: main.c:9
ULONG ulBrushClr
Definition: ntgdihdl.h:320
#define NULL
Definition: types.h:112

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 941 of file dc.c.

944 {
945  PDC_ATTR pdcattr;
946  COLORREF crOldColor;
947 
948  /* Get the DC attribute */
949  pdcattr = GdiGetDcAttr(hdc);
950  if (pdcattr == NULL)
951  {
953  return CLR_INVALID;
954  }
955 
956  /* We handle only enhanced meta DCs here */
958 
959  /* Get old color and store the new */
960  crOldColor = pdcattr->ulPenClr;
961  pdcattr->ulPenClr = (ULONG)crColor;
962 
963  if (pdcattr->crPenClr != crColor)
964  {
965  pdcattr->ulDirty_ |= DIRTY_LINE;
966  pdcattr->crPenClr = crColor;
967  }
968 
969  return crOldColor;
970 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define CLR_INVALID
Definition: wingdi.h:883
COLORREF crPenClr
Definition: ntgdihdl.h:321
ULONG ulDirty_
Definition: ntgdihdl.h:312
DWORD COLORREF
Definition: windef.h:300
#define HANDLE_EMETAFDC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:644
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
ULONG ulPenClr
Definition: ntgdihdl.h:322
#define NULL
Definition: types.h:112
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:941

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 1226 of file dc.c.

1229 {
1230  INT iOldMode;
1231  PDC_ATTR pdcattr;
1232 
1233  /* Check parameters */
1234  if ((iMode < GM_COMPATIBLE) || (iMode > GM_ADVANCED))
1235  {
1237  return 0;
1238  }
1239 
1240  /* Get the DC attribute */
1241  pdcattr = GdiGetDcAttr(hdc);
1242  if (pdcattr == NULL)
1243  {
1245  return 0;
1246  }
1247 
1248  /* Check for trivial case */
1249  if (iMode == pdcattr->iGraphicsMode)
1250  return iMode;
1251 
1252  if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
1253  {
1254  if (pdcattr->ulDirty_ & DC_MODE_DIRTY)
1255  {
1256  NtGdiFlush(); // Sync up pdcattr from Kernel space.
1257  pdcattr->ulDirty_ &= ~DC_MODE_DIRTY;
1258  }
1259  }
1260 
1261  /* One would think that setting the graphics mode to GM_COMPATIBLE
1262  * would also reset the world transformation matrix to the unity
1263  * matrix. However, in Windows, this is not the case. This doesn't
1264  * make a lot of sense to me, but that's the way it is.
1265  */
1266  iOldMode = pdcattr->iGraphicsMode;
1267  pdcattr->iGraphicsMode = iMode;
1268 
1269  return iOldMode;
1270 }
#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
ULONG ulDirty_
Definition: ntgdihdl.h:312
__kernel_entry W32KAPI NTSTATUS APIENTRY NtGdiFlush(VOID)
Definition: gdibatch.c:471
#define SetLastError(x)
Definition: compat.h:611
#define GM_COMPATIBLE
Definition: wingdi.h:864
HDC hdc
Definition: main.c:9
#define DC_MODE_DIRTY
Definition: ntgdihdl.h:166
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
Definition: psfuncs.h:420
#define NULL
Definition: types.h:112
#define GM_ADVANCED
Definition: wingdi.h:865
INT iGraphicsMode
Definition: ntgdihdl.h:324

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 1167 of file dc.c.

1170 {
1171  INT iOldPolyFillMode;
1172  PDC_ATTR pdcattr;
1173 
1174  HANDLE_METADC(INT, SetPolyFillMode, 0, hdc, iPolyFillMode);
1175 
1176  /* Get the DC attribute */
1177  pdcattr = GdiGetDcAttr(hdc);
1178  if (pdcattr == NULL)
1179  {
1181  return 0;
1182  }
1183 
1184  if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
1185  {
1186  if (pdcattr->ulDirty_ & DC_MODE_DIRTY)
1187  {
1188  NtGdiFlush(); // Sync up pdcattr from Kernel space.
1189  pdcattr->ulDirty_ &= ~DC_MODE_DIRTY;
1190  }
1191  }
1192 
1193  iOldPolyFillMode = pdcattr->lFillMode;
1194  pdcattr->lFillMode = iPolyFillMode;
1195 
1196  return iOldPolyFillMode;
1197 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
LONG lFillMode
Definition: ntgdihdl.h:332
int32_t INT
Definition: typedefs.h:58
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
ULONG ulDirty_
Definition: ntgdihdl.h:312
__kernel_entry W32KAPI NTSTATUS APIENTRY NtGdiFlush(VOID)
Definition: gdibatch.c:471
#define SetLastError(x)
Definition: compat.h:611
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:1167
#define NULL
Definition: types.h:112

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 733 of file dc.c.

736 {
738 }
_In_ ULONG Mode
Definition: hubbusif.h:303
HDC hdc
Definition: main.c:9
#define META_SETRELABS
Definition: wingdi.h:214
DWORD WINAPI GetAndSetDCDWord(_In_ HDC hdc, _In_ UINT u, _In_ DWORD dwIn, _In_ ULONG ulMFId, _In_ USHORT usMF16Id, _In_ DWORD dwError)
Definition: dc.c:746

Referenced by init_function_pointers(), and PlayMetaFileRecord().

◆ SetROP2()

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

Definition at line 1107 of file dc.c.

1110 {
1111  PDC_ATTR pdcattr;
1112  INT rop2Old;
1113 
1114  HANDLE_METADC(INT, SetROP2, 0, hdc, rop2);
1115 
1116  /* Get the DC attribute */
1117  pdcattr = GdiGetDcAttr(hdc);
1118  if (pdcattr == NULL)
1119  {
1121  return 0;
1122  }
1123 
1124  if (NtCurrentTeb()->GdiTebBatch.HDC == hdc)
1125  {
1126  if (pdcattr->ulDirty_ & DC_MODE_DIRTY)
1127  {
1128  NtGdiFlush();
1129  pdcattr->ulDirty_ &= ~DC_MODE_DIRTY;
1130  }
1131  }
1132 
1133  rop2Old = pdcattr->jROP2;
1134  pdcattr->jROP2 = (BYTE)rop2;
1135 
1136  return rop2Old;
1137 }
#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:589
ULONG ulDirty_
Definition: ntgdihdl.h:312
__kernel_entry W32KAPI NTSTATUS APIENTRY NtGdiFlush(VOID)
Definition: gdibatch.c:471
BYTE jROP2
Definition: ntgdihdl.h:325
#define SetLastError(x)
Definition: compat.h:611
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:1107
#define NULL
Definition: types.h:112

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 1366 of file dc.c.

1369 {
1370  INT iOldMode;
1371  PDC_ATTR pdcattr;
1372 
1373  HANDLE_METADC(INT, SetStretchBltMode, 0, hdc, iStretchMode);
1374 
1375  /* Get the DC attribute */
1376  pdcattr = GdiGetDcAttr(hdc);
1377  if (pdcattr == NULL)
1378  {
1380  return 0;
1381  }
1382 
1383  iOldMode = pdcattr->lStretchBltMode;
1384  pdcattr->lStretchBltMode = iStretchMode;
1385 
1386  // Wine returns an error here. We set the default.
1387  if ((iStretchMode <= 0) || (iStretchMode > MAXSTRETCHBLTMODE)) iStretchMode = WHITEONBLACK;
1388 
1389  pdcattr->jStretchBltMode = iStretchMode;
1390 
1391  return iOldMode;
1392 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
BYTE jStretchBltMode
Definition: ntgdihdl.h:328
FORCEINLINE PDC_ATTR GdiGetDcAttr(HDC hdc)
Definition: gdi32p.h:451
#define MAXSTRETCHBLTMODE
Definition: wingdi.h:956
int WINAPI SetStretchBltMode(_In_ HDC hdc, _In_ int iStretchMode)
Definition: dc.c:1366
int32_t INT
Definition: typedefs.h:58
#define HANDLE_METADC(_RetType, _Func, dwError, hdc,...)
Definition: gdi32p.h:589
#define SetLastError(x)
Definition: compat.h:611
HDC hdc
Definition: main.c:9
LONG lStretchBltMode
Definition: ntgdihdl.h:333
#define NULL
Definition: types.h:112
#define WHITEONBLACK
Definition: wingdi.h:953

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