ReactOS  0.4.15-dev-5112-g22d8c0f
bitmaps.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

INT APIENTRY BITMAP_GetObject (SURFACE *bmp, INT count, LPVOID buffer)
 
HBITMAP FASTCALL BITMAP_CopyBitmap (HBITMAP hBitmap)
 
BOOL NTAPI GreSetBitmapOwner (_In_ HBITMAP hbmp, _In_ ULONG ulOwner)
 
HBITMAP NTAPI GreCreateBitmap (_In_ ULONG nWidth, _In_ ULONG nHeight, _In_ ULONG cPlanes, _In_ ULONG cBitsPixel, _In_opt_ PVOID pvBits)
 
HBITMAP NTAPI GreCreateBitmapEx (_In_ ULONG nWidth, _In_ ULONG nHeight, _In_ ULONG cjWidthBytes, _In_ ULONG iFormat, _In_ USHORT fjBitmap, _In_ ULONG cjSizeImage, _In_opt_ PVOID pvBits, _In_ FLONG flags)
 
HBITMAP NTAPI GreCreateDIBitmapInternal (IN HDC hDc, IN INT cx, IN INT cy, IN DWORD fInit, IN OPTIONAL LPBYTE pjInit, IN OPTIONAL PBITMAPINFO pbmi, IN DWORD iUsage, IN FLONG fl, IN UINT cjMaxBits, IN HANDLE hcmXform)
 
BOOL NTAPI GreGetBitmapDimension (_In_ HBITMAP hBitmap, _Out_ LPSIZE psizDim)
 

Function Documentation

◆ BITMAP_CopyBitmap()

HBITMAP FASTCALL BITMAP_CopyBitmap ( HBITMAP  hBitmap)

Definition at line 714 of file bitmaps.c.

715 {
716  HBITMAP hbmNew;
717  SURFACE *psurfSrc, *psurfNew;
718 
719  /* Fail, if no source bitmap is given */
720  if (hBitmap == NULL) return 0;
721 
722  /* Lock the source bitmap */
723  psurfSrc = SURFACE_ShareLockSurface(hBitmap);
724  if (psurfSrc == NULL)
725  {
726  return 0;
727  }
728 
729  /* Allocate a new bitmap with the same dimensions as the source bmp */
730  hbmNew = GreCreateBitmapEx(psurfSrc->SurfObj.sizlBitmap.cx,
731  psurfSrc->SurfObj.sizlBitmap.cy,
732  abs(psurfSrc->SurfObj.lDelta),
733  psurfSrc->SurfObj.iBitmapFormat,
734  psurfSrc->SurfObj.fjBitmap & BMF_TOPDOWN,
735  psurfSrc->SurfObj.cjBits,
736  NULL,
737  psurfSrc->flags);
738 
739  if (hbmNew)
740  {
741  /* Lock the new bitmap */
742  psurfNew = SURFACE_ShareLockSurface(hbmNew);
743  if (psurfNew)
744  {
745  /* Copy the bitmap bits to the new bitmap buffer */
746  RtlCopyMemory(psurfNew->SurfObj.pvBits,
747  psurfSrc->SurfObj.pvBits,
748  psurfNew->SurfObj.cjBits);
749 
750 
751  /* Reference the palette of the source bitmap and use it */
752  SURFACE_vSetPalette(psurfNew, psurfSrc->ppal);
753 
754  /* Unlock the new surface */
755  SURFACE_ShareUnlockSurface(psurfNew);
756  }
757  else
758  {
759  /* Failed to lock the bitmap, shouldn't happen */
760  GreDeleteObject(hbmNew);
761  hbmNew = NULL;
762  }
763  }
764 
765  /* Unlock the source bitmap and return the handle of the new bitmap */
766  SURFACE_ShareUnlockSurface(psurfSrc);
767  return hbmNew;
768 }
#define abs(i)
Definition: fconv.c:206
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
Definition: gdiobj.c:1158
SIZEL sizlBitmap
Definition: winddi.h:1209
LONG lDelta
Definition: winddi.h:1213
#define SURFACE_ShareUnlockSurface(pBMObj)
Definition: surface.h:102
struct _PALETTE *const ppal
Definition: surface.h:11
#define BMF_TOPDOWN
Definition: winddi.h:1180
ULONG iBitmapFormat
Definition: winddi.h:1215
#define SURFACE_ShareLockSurface(hBMObj)
Definition: surface.h:91
ULONG cjBits
Definition: winddi.h:1210
SURFOBJ SurfObj
Definition: surface.h:8
LONG cx
Definition: windef.h:334
FORCEINLINE VOID SURFACE_vSetPalette(_Inout_ PSURFACE psurf, _In_ PPALETTE ppal)
Definition: surface.h:136
USHORT fjBitmap
Definition: winddi.h:1217
FLONG flags
Definition: surface.h:10
HBITMAP NTAPI GreCreateBitmapEx(_In_ ULONG nWidth, _In_ ULONG nHeight, _In_ ULONG cjWidthBytes, _In_ ULONG iFormat, _In_ USHORT fjBitmap, _In_ ULONG cjSizeImage, _In_opt_ PVOID pvBits, _In_ FLONG flags)
Definition: bitmaps.c:101
#define NULL
Definition: types.h:112
PVOID pvBits
Definition: winddi.h:1211
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
static HBITMAP
Definition: button.c:44
LONG cy
Definition: windef.h:335
static HBITMAP hBitmap
Definition: timezone.c:26

Referenced by _Success_(), and NtGdiCreatePatternBrushInternal().

◆ BITMAP_GetObject()

INT APIENTRY BITMAP_GetObject ( SURFACE bmp,
INT  count,
LPVOID  buffer 
)

Definition at line 771 of file bitmaps.c.

772 {
773  PBITMAP pBitmap;
774 
775  if (!buffer) return sizeof(BITMAP);
776  if ((UINT)Count < sizeof(BITMAP)) return 0;
777 
778  /* Always fill a basic BITMAP structure */
779  pBitmap = buffer;
780  pBitmap->bmType = 0;
781  pBitmap->bmWidth = psurf->SurfObj.sizlBitmap.cx;
782  pBitmap->bmHeight = psurf->SurfObj.sizlBitmap.cy;
783  pBitmap->bmPlanes = 1;
784  pBitmap->bmBitsPixel = BitsPerFormat(psurf->SurfObj.iBitmapFormat);
785  pBitmap->bmWidthBytes = WIDTH_BYTES_ALIGN16(pBitmap->bmWidth, pBitmap->bmBitsPixel);
786 
787  /* Check for DIB section */
788  if (psurf->hSecure)
789  {
790  /* Set bmBits in this case */
791  pBitmap->bmBits = psurf->SurfObj.pvBits;
792  /* DIBs data are 32 bits aligned */
793  pBitmap->bmWidthBytes = WIDTH_BYTES_ALIGN32(pBitmap->bmWidth, pBitmap->bmBitsPixel);
794 
795  if (Count >= sizeof(DIBSECTION))
796  {
797  /* Fill rest of DIBSECTION */
798  PDIBSECTION pds = buffer;
799 
800  pds->dsBmih.biSize = sizeof(BITMAPINFOHEADER);
801  pds->dsBmih.biWidth = pds->dsBm.bmWidth;
802  pds->dsBmih.biHeight = pds->dsBm.bmHeight;
803  pds->dsBmih.biPlanes = pds->dsBm.bmPlanes;
804  pds->dsBmih.biBitCount = pds->dsBm.bmBitsPixel;
805 
806  switch (psurf->SurfObj.iBitmapFormat)
807  {
808  case BMF_1BPP:
809  case BMF_4BPP:
810  case BMF_8BPP:
811  pds->dsBmih.biCompression = BI_RGB;
812  break;
813 
814  case BMF_16BPP:
815  if (psurf->ppal->flFlags & PAL_RGB16_555)
816  pds->dsBmih.biCompression = BI_RGB;
817  else
819  break;
820 
821  case BMF_24BPP:
822  case BMF_32BPP:
823  /* 24/32bpp BI_RGB is actually BGR format */
824  if (psurf->ppal->flFlags & PAL_BGR)
825  pds->dsBmih.biCompression = BI_RGB;
826  else
828  break;
829 
830  case BMF_4RLE:
832  break;
833  case BMF_8RLE:
835  break;
836  case BMF_JPEG:
838  break;
839  case BMF_PNG:
840  pds->dsBmih.biCompression = BI_PNG;
841  break;
842  default:
843  ASSERT(FALSE); /* This shouldn't happen */
844  }
845 
846  pds->dsBmih.biSizeImage = psurf->SurfObj.cjBits;
847  pds->dsBmih.biXPelsPerMeter = 0;
848  pds->dsBmih.biYPelsPerMeter = 0;
849  pds->dsBmih.biClrUsed = psurf->ppal->NumColors;
850  pds->dsBmih.biClrImportant = psurf->biClrImportant;
851  pds->dsBitfields[0] = psurf->ppal->RedMask;
852  pds->dsBitfields[1] = psurf->ppal->GreenMask;
853  pds->dsBitfields[2] = psurf->ppal->BlueMask;
854  pds->dshSection = psurf->hDIBSection;
855  pds->dsOffset = psurf->dwOffset;
856 
857  return sizeof(DIBSECTION);
858  }
859  }
860  else
861  {
862  /* Not set according to wine test, confirmed in win2k */
863  pBitmap->bmBits = NULL;
864  }
865 
866  return sizeof(BITMAP);
867 }
#define BMF_24BPP
Definition: winddi.h:359
Definition: xlate.c:9
BITMAPINFOHEADER dsBmih
Definition: wingdi.h:1670
#define BMF_32BPP
Definition: winddi.h:360
#define WIDTH_BYTES_ALIGN32(cx, bpp)
Definition: swimpl.c:16
DWORD biClrImportant
Definition: amvideo.idl:40
#define BitsPerFormat(Format)
Definition: surface.h:109
LONG biXPelsPerMeter
Definition: amvideo.idl:37
struct tagBITMAPINFOHEADER BITMAPINFOHEADER
#define BI_JPEG
Definition: wingdi.h:38
#define BMF_8RLE
Definition: winddi.h:362
GLuint buffer
Definition: glext.h:5915
LONG biYPelsPerMeter
Definition: amvideo.idl:38
#define BI_BITFIELDS
Definition: mmreg.h:507
#define BMF_PNG
Definition: winddi.h:364
#define FALSE
Definition: types.h:117
DWORD biCompression
Definition: amvideo.idl:35
#define BMF_4RLE
Definition: winddi.h:361
DWORD dsBitfields[3]
Definition: wingdi.h:1671
#define BMF_16BPP
Definition: winddi.h:358
int Count
Definition: noreturn.cpp:7
#define ASSERT(a)
Definition: mode.c:44
#define WIDTH_BYTES_ALIGN16(cx, bpp)
Definition: swimpl.c:17
DWORD dsOffset
Definition: wingdi.h:1673
DWORD biSizeImage
Definition: amvideo.idl:36
Definition: xlate.c:8
HANDLE dshSection
Definition: wingdi.h:1672
#define BI_PNG
Definition: wingdi.h:39
Definition: bl.h:1330
BITMAP dsBm
Definition: wingdi.h:1669
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
#define BI_RLE4
Definition: precomp.h:48
Definition: xlate.c:10
struct tagDIBSECTION DIBSECTION
#define BI_RLE8
Definition: wingdi.h:35
#define BI_RGB
Definition: precomp.h:47
#define BITMAP
Definition: pedump.c:503
#define BMF_JPEG
Definition: winddi.h:363

Referenced by GreGetObject(), and IntCreateCompatibleBitmap().

◆ GreCreateBitmap()

HBITMAP NTAPI GreCreateBitmap ( _In_ ULONG  nWidth,
_In_ ULONG  nHeight,
_In_ ULONG  cPlanes,
_In_ ULONG  cBitsPixel,
_In_opt_ PVOID  pvBits 
)

Definition at line 172 of file bitmaps.c.

178 {
179  /* Call the extended function */
180  return GreCreateBitmapEx(nWidth,
181  nHeight,
182  0, /* Auto width */
183  BitmapFormat(cBitsPixel * cPlanes, BI_RGB),
184  0, /* No bitmap flags */
185  0, /* Auto size */
186  pvBits,
187  DDB_SURFACE /* DDB */);
188 }
ULONG FASTCALL BitmapFormat(ULONG cBits, ULONG iCompression)
Definition: surface.c:39
HBITMAP NTAPI GreCreateBitmapEx(_In_ ULONG nWidth, _In_ ULONG nHeight, _In_ ULONG cjWidthBytes, _In_ ULONG iFormat, _In_ USHORT fjBitmap, _In_ ULONG cjSizeImage, _In_opt_ PVOID pvBits, _In_ FLONG flags)
Definition: bitmaps.c:101
#define BI_RGB
Definition: precomp.h:47

Referenced by CreateStockObjects(), IntCreateCompatibleBitmap(), IntCreateDIBitmap(), NtGdiCreateCompatibleBitmap(), and UserInitialize().

◆ GreCreateBitmapEx()

HBITMAP NTAPI GreCreateBitmapEx ( _In_ ULONG  nWidth,
_In_ ULONG  nHeight,
_In_ ULONG  cjWidthBytes,
_In_ ULONG  iFormat,
_In_ USHORT  fjBitmap,
_In_ ULONG  cjSizeImage,
_In_opt_ PVOID  pvBits,
_In_ FLONG  flags 
)

Definition at line 101 of file bitmaps.c.

110 {
111  PSURFACE psurf;
112  HBITMAP hbmp;
113  PVOID pvCompressedBits = NULL;
114 
115  /* Verify format */
117 
118  /* The infamous RLE hack */
119  if ((iFormat == BMF_4RLE) || (iFormat == BMF_8RLE))
120  {
121  pvCompressedBits = pvBits;
122  pvBits = NULL;
124  }
125 
126  /* Allocate a surface */
128  nWidth,
129  nHeight,
130  iFormat,
131  fjBitmap,
132  cjWidthBytes,
133  pvCompressedBits ? 0 : cjSizeImage,
134  pvBits);
135  if (!psurf)
136  {
137  DPRINT1("SURFACE_AllocSurface failed.\n");
138  return NULL;
139  }
140 
141  /* The infamous RLE hack */
142  if (pvCompressedBits)
143  {
144  SIZEL sizl;
145  LONG lDelta;
146 
147  sizl.cx = nWidth;
148  sizl.cy = nHeight;
149  lDelta = WIDTH_BYTES_ALIGN32(nWidth, gajBitsPerFormat[iFormat]);
150 
151  pvBits = psurf->SurfObj.pvBits;
152  DecompressBitmap(sizl, pvCompressedBits, pvBits, lDelta, iFormat, cjSizeImage);
153  }
154 
155  /* Get the handle for the bitmap */
156  hbmp = (HBITMAP)psurf->SurfObj.hsurf;
157 
158  /* Mark as API bitmap */
159  psurf->flags |= (flags | API_BITMAP);
160 
161  /* Unlock the surface and return */
162  SURFACE_UnlockSurface(psurf);
163  return hbmp;
164 }
Definition: xlate.c:9
#define WIDTH_BYTES_ALIGN32(cx, bpp)
Definition: swimpl.c:16
#define STYPE_BITMAP
Definition: winddi.h:1175
#define BMF_8RLE
Definition: winddi.h:362
_In_ SIZEL sizl
Definition: winddi.h:3467
#define BMF_PNG
Definition: winddi.h:364
long LONG
Definition: pedump.c:60
SURFOBJ SurfObj
Definition: surface.h:8
#define BMF_4RLE
Definition: winddi.h:361
HSURF hsurf
Definition: winddi.h:1206
LONG cx
Definition: windef.h:334
HBITMAP hbmp
PSURFACE NTAPI SURFACE_AllocSurface(_In_ USHORT iType, _In_ ULONG cx, _In_ ULONG cy, _In_ ULONG iFormat, _In_ ULONG fjBitmap, _In_opt_ ULONG cjWidth, _In_opt_ ULONG cjBufSize, _In_opt_ PVOID pvBits)
Definition: surface.c:116
GLbitfield flags
Definition: glext.h:7161
VOID DecompressBitmap(SIZEL Size, BYTE *CompressedBits, BYTE *UncompressedBits, LONG Delta, ULONG iFormat, ULONG cjSizeImage)
Definition: rlecomp.c:21
_In_ SIZEL _In_ ULONG iFormat
Definition: winddi.h:3467
#define SURFACE_UnlockSurface(pBMObj)
Definition: surface.h:100
FLONG flags
Definition: surface.h:10
#define NULL
Definition: types.h:112
#define DPRINT1
Definition: precomp.h:8
PVOID pvBits
Definition: winddi.h:1211
static HBITMAP
Definition: button.c:44
Definition: xlate.c:10
UCHAR gajBitsPerFormat[11]
Definition: surface.c:21

Referenced by BITMAP_CopyBitmap(), DIB_CreateDIBSection(), GreCreateBitmap(), IntGdiCreateMaskFromRLE(), IntSetDIBits(), NtGdiSetDIBitsToDeviceInternal(), and NtGdiStretchDIBitsInternal().

◆ GreCreateDIBitmapInternal()

HBITMAP NTAPI GreCreateDIBitmapInternal ( IN HDC  hDc,
IN INT  cx,
IN INT  cy,
IN DWORD  fInit,
IN OPTIONAL LPBYTE  pjInit,
IN OPTIONAL PBITMAPINFO  pbmi,
IN DWORD  iUsage,
IN FLONG  fl,
IN UINT  cjMaxBits,
IN HANDLE  hcmXform 
)

Definition at line 1691 of file dibobj.c.

1702 {
1703  PDC Dc;
1704  HBITMAP Bmp;
1705  USHORT bpp, planes;
1707  HDC hdcDest;
1708 
1709  if (!hDc) /* 1bpp monochrome bitmap */
1710  {
1711  // Should use System Bitmap DC hSystemBM, with CreateCompatibleDC for this.
1712  hdcDest = NtGdiCreateCompatibleDC(0);
1713  if(!hdcDest)
1714  {
1715  DPRINT1("NtGdiCreateCompatibleDC failed\n");
1716  return NULL;
1717  }
1718  }
1719  else
1720  {
1721  hdcDest = hDc;
1722  }
1723 
1724  Dc = DC_LockDc(hdcDest);
1725  if (!Dc)
1726  {
1727  DPRINT1("Failed to lock hdcDest %p\n", hdcDest);
1729  return NULL;
1730  }
1731  /* It's OK to set bpp=0 here, as IntCreateDIBitmap will create a compatible Bitmap
1732  * if bpp != 1 and ignore the real value that was passed */
1733  if (pbmi)
1734  {
1735  if (pbmi->bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
1736  {
1737  BITMAPCOREHEADER* CoreHeader = (BITMAPCOREHEADER*)&pbmi->bmiHeader;
1738  bpp = CoreHeader->bcBitCount;
1739  planes = CoreHeader->bcPlanes ? CoreHeader->bcPlanes : 1;
1740  compression = BI_RGB;
1741  }
1742  else
1743  {
1745  planes = pbmi->bmiHeader.biPlanes ? pbmi->bmiHeader.biPlanes : 1;
1747  }
1748  }
1749  else
1750  {
1751  bpp = 0;
1752  planes = 0;
1753  compression = 0;
1754  }
1755  Bmp = IntCreateDIBitmap(Dc, cx, cy, planes, bpp, compression, fInit, pjInit, cjMaxBits, pbmi, iUsage);
1756  DC_UnlockDc(Dc);
1757 
1758  if(!hDc)
1759  {
1760  NtGdiDeleteObjectApp(hdcDest);
1761  }
1762  return Bmp;
1763 }
FORCEINLINE PDC DC_LockDc(HDC hdc)
Definition: dc.h:217
BITMAPINFOHEADER bmiHeader
Definition: wingdi.h:1476
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO pbmi
Definition: ntgdi.h:2780
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
static HDC
Definition: imagelist.c:92
_In_ fcb _In_ chunk _In_ uint64_t _In_ uint64_t _In_ bool _In_opt_ void _In_opt_ PIRP _In_ LIST_ENTRY _In_ uint8_t compression
Definition: btrfs_drv.h:1355
DWORD biCompression
Definition: amvideo.idl:35
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:585
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO _In_ UINT _In_ UINT cjMaxBits
Definition: ntgdi.h:2780
Definition: polytest.cpp:40
HBITMAP FASTCALL IntCreateDIBitmap(PDC Dc, INT width, INT height, UINT planes, UINT bpp, ULONG compression, DWORD init, LPBYTE bits, ULONG cjMaxBits, PBITMAPINFO data, DWORD coloruse)
Definition: dibobj.c:1519
unsigned long DWORD
Definition: ntddk_ex.h:95
__kernel_entry W32KAPI HDC APIENTRY NtGdiCreateCompatibleDC(_In_opt_ HDC hdc)
__kernel_entry W32KAPI BOOL APIENTRY NtGdiDeleteObjectApp(_In_ HANDLE hobj)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
Definition: dc.h:235
unsigned short USHORT
Definition: pedump.c:61
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO _In_ UINT iUsage
Definition: ntgdi.h:2780
#define NULL
Definition: types.h:112
#define DPRINT1
Definition: precomp.h:8
_Out_opt_ int * cx
Definition: commctrl.h:585
DWORD bpp
Definition: surface.c:185
static HBITMAP
Definition: button.c:44
#define BI_RGB
Definition: precomp.h:47
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
Definition: error.c:28

Referenced by GreCreateDIBitmapFromPackedDIB(), IntSynthesizeBitmap(), NtGdiCreateDIBitmapInternal(), and UserLoadImage().

◆ GreGetBitmapDimension()

BOOL NTAPI GreGetBitmapDimension ( _In_ HBITMAP  hBitmap,
_Out_ LPSIZE  psizDim 
)

Definition at line 453 of file bitmaps.c.

456 {
457  PSURFACE psurfBmp;
458 
459  if (hBitmap == NULL)
460  return FALSE;
461 
462  /* Lock the bitmap */
463  psurfBmp = SURFACE_ShareLockSurface(hBitmap);
464  if (psurfBmp == NULL)
465  {
467  return FALSE;
468  }
469 
470  *psizDim = psurfBmp->sizlDim;
471 
472  /* Unlock the bitmap */
473  SURFACE_ShareUnlockSurface(psurfBmp);
474 
475  return TRUE;
476 }
#define SURFACE_ShareUnlockSurface(pBMObj)
Definition: surface.h:102
#define TRUE
Definition: types.h:120
#define ERROR_INVALID_HANDLE
Definition: compat.h:98
#define SURFACE_ShareLockSurface(hBMObj)
Definition: surface.h:91
#define FALSE
Definition: types.h:117
#define NULL
Definition: types.h:112
SIZEL sizlDim
Definition: surface.h:21
static HBITMAP hBitmap
Definition: timezone.c:26
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
Definition: error.c:28

Referenced by co_IntDrawCaret(), and NtGdiGetBitmapDimension().

◆ GreSetBitmapOwner()

BOOL NTAPI GreSetBitmapOwner ( _In_ HBITMAP  hbmp,
_In_ ULONG  ulOwner 
)

FIXME: this is a hack and doesn't handle a race condition properly. It needs to be done in GDIOBJ_vSetObjectOwner atomically.

Definition at line 17 of file bitmaps.c.

20 {
21  /* Check if we have the correct object type */
23  {
24  DPRINT1("Incorrect type for hbmp: %p\n", hbmp);
25  return FALSE;
26  }
27 
30 
31  /* Check if we set public or none */
32  if ((ulOwner == GDI_OBJ_HMGR_PUBLIC) ||
33  (ulOwner == GDI_OBJ_HMGR_NONE))
34  {
35  /* Only allow this for owned objects */
37  {
38  DPRINT1("Cannot change owner for non-powned hbmp\n");
39  return FALSE;
40  }
41  }
42 
43  return GreSetObjectOwner(hbmp, ulOwner);
44 }
BOOL NTAPI GreSetObjectOwner(HGDIOBJ hobj, ULONG ulOwner)
Definition: gdiobj.c:1255
ULONG NTAPI GreGetObjectOwner(HGDIOBJ hobj)
Definition: gdiobj.c:1192
#define FALSE
Definition: types.h:117
#define GDI_HANDLE_GET_TYPE(h)
Definition: gdi.h:31
HBITMAP hbmp
#define GDI_OBJ_HMGR_POWNED
Definition: ntgdihdl.h:117
#define GDI_OBJ_HMGR_PUBLIC
Definition: ntgdihdl.h:116
#define DPRINT1
Definition: precomp.h:8
#define GDI_OBJ_HMGR_NONE
Definition: ntgdihdl.h:118

Referenced by CreateBrushInternal(), DxEngSetBitmapOwner(), IntGdiCreatePatternBrush(), IntSetCursorData(), and BRUSH::~BRUSH().