21 #include "../../SDL_internal.h"
23 #if SDL_VIDEO_DRIVER_OS2
30 BITMAPINFOHEADER2 bmih = { 0 };
31 BITMAPINFO bmi = { 0 };
34 PULONG pulDst, pulSrc, pulDstMask;
36 HPOINTER hptr = NULLHANDLE;
39 debug_os2(
"Image format should be SDL_PIXELFORMAT_ARGB8888");
44 if (pulBitmap ==
NULL) {
54 pulSrc = (PULONG)
surface->pixels;
56 for (ulY = 0; ulY <
surface->h; ulY++) {
57 for (ulX = 0; ulX <
surface->w; ulX++) {
58 if ((pulSrc[ulX] & 0xFF000000) == 0) {
60 pulDstMask[ulX] = 0xFFFFFFFF;
62 pulDst[ulX] = pulSrc[ulX] & 0xFFFFFF;
71 pulSrc = (PULONG) (((PCHAR)pulSrc) +
surface->pitch);
75 bmih.cbFix =
sizeof(BITMAPINFOHEADER2);
80 bmih.ulCompression = BCA_UNCOMP;
81 bmih.cbImage = bmih.cx * bmih.cy * 4;
83 bmi.cbFix =
sizeof(BITMAPINFOHEADER);
89 hps = WinGetPS(HWND_DESKTOP);
90 hbm = GpiCreateBitmap(hps, (PBITMAPINFOHEADER2)&bmih, CBM_INIT,
91 (PBYTE)pulBitmap, (PBITMAPINFO2)&bmi);
92 if (hbm == GPI_ERROR) {
96 hptr = WinCreatePointer(HWND_DESKTOP, hbm,
TRUE, ulHotX, ulHotY);
97 if (hptr == NULLHANDLE) {
101 GpiDeleteBitmap(hbm);
#define SDL_OutOfMemory()
HPOINTER utilCreatePointer(SDL_Surface *surface, ULONG ulHotX, ULONG ulHotY)
@ SDL_PIXELFORMAT_ARGB8888
A collection of pixels used in software blitting.