4 * Started by Robert Pouliot <krynos@clic.net>
9 #ifndef X_DISPLAY_MISSING
11 #endif /* !defined(X_DISPLAY_MISSING) */
13 #include "wine/winuser16.h"
15 #include "debugtools.h"
20 #include "wine/winuser16.h"
22 DEFAULT_DEBUG_CHANNEL(wing
)
25 typedef enum WING_DITHER_TYPE
27 WING_DISPERSED_4x4
, WING_DISPERSED_8x8
, WING_CLUSTERED_4x4
31 * WinG DIB bitmaps can be selected into DC and then scribbled upon
32 * by GDI functions. They can also be changed directly. This gives us
34 * - use original WinG 16-bit DLL
35 * requires working 16-bit driver interface
36 * - implement DIB graphics driver from scratch
38 * - use shared pixmaps
39 * won't work with some videocards and/or videomodes
43 /***********************************************************************
44 * WinGCreateDC16 (WING.1001)
46 HDC16 WINAPI
WinGCreateDC16(void)
49 return CreateCompatibleDC16(0);
52 /***********************************************************************
53 * WinGRecommendDIBFormat16 (WING.1002)
55 BOOL16 WINAPI
WinGRecommendDIBFormat16(BITMAPINFO
*bmpi
)
57 TRACE("(%p)\n", bmpi
);
61 bmpi
->bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
62 bmpi
->bmiHeader
.biWidth
= 320;
63 bmpi
->bmiHeader
.biHeight
= -1;
64 bmpi
->bmiHeader
.biPlanes
= 1;
65 bmpi
->bmiHeader
.biBitCount
= MONITOR_GetDepth(&MONITOR_PrimaryMonitor
);
66 bmpi
->bmiHeader
.biCompression
= BI_RGB
;
67 bmpi
->bmiHeader
.biSizeImage
= 0;
68 bmpi
->bmiHeader
.biXPelsPerMeter
= 0;
69 bmpi
->bmiHeader
.biYPelsPerMeter
= 0;
70 bmpi
->bmiHeader
.biClrUsed
= 0;
71 bmpi
->bmiHeader
.biClrImportant
= 0;
76 /***********************************************************************
77 * WinGCreateBitmap16 (WING.1003)
79 HBITMAP16 WINAPI
WinGCreateBitmap16(HDC16 hdc
, BITMAPINFO
*bmpi
,
82 TRACE("(%d,%p,%p)\n", hdc
, bmpi
, bits
);
83 TRACE(": create %ldx%ldx%d bitmap\n", bmpi
->bmiHeader
.biWidth
,
84 bmpi
->bmiHeader
.biHeight
, bmpi
->bmiHeader
.biPlanes
);
85 return CreateDIBSection16(hdc
, bmpi
, 0, bits
, 0, 0);
88 /***********************************************************************
89 * WinGGetDIBPointer (WING.1004)
91 SEGPTR WINAPI
WinGGetDIBPointer16(HBITMAP16 hWinGBitmap
, BITMAPINFO
* bmpi
)
93 BITMAPOBJ
* bmp
= (BITMAPOBJ
*) GDI_GetObjPtr( hWinGBitmap
, BITMAP_MAGIC
);
95 TRACE("(%d,%p)\n", hWinGBitmap
, bmpi
);
96 if (!bmp
) return (SEGPTR
)NULL
;
99 FIXME(": Todo - implement setting BITMAPINFO\n");
101 #ifndef X_DISPLAY_MISSING
102 return PTR_SEG_OFF_TO_SEGPTR(((X11DRV_DIBSECTION
*) bmp
->dib
)->selector
, 0);
103 #else /* !defined(X_DISPLAY_MISSING) */
105 #endif /* !defined(X_DISPLAY_MISSING) */
108 /***********************************************************************
109 * WinGSetDIBColorTable (WING.1004)
111 UINT16 WINAPI
WinGSetDIBColorTable16(HDC16 hdc
, UINT16 start
, UINT16 num
,
114 TRACE("(%d,%d,%d,%p)\n", hdc
, start
, num
, colors
);
115 return SetDIBColorTable16(hdc
, start
, num
, colors
);
118 /***********************************************************************
119 * WinGGetDIBColorTable16 (WING.1005)
121 UINT16 WINAPI
WinGGetDIBColorTable16(HDC16 hdc
, UINT16 start
, UINT16 num
,
124 TRACE("(%d,%d,%d,%p)\n", hdc
, start
, num
, colors
);
125 return GetDIBColorTable16(hdc
, start
, num
, colors
);
128 /***********************************************************************
129 * WinGCreateHalfTonePalette16 (WING.1007)
131 HPALETTE16 WINAPI
WinGCreateHalfTonePalette16(void)
134 return CreateHalftonePalette16(GetDC16(0));
137 /***********************************************************************
138 * WinGCreateHalfToneBrush16 (WING.1008)
140 HBRUSH16 WINAPI
WinGCreateHalfToneBrush16(HDC16 winDC
, COLORREF col
,
141 WING_DITHER_TYPE type
)
143 TRACE("(%d,%ld,%d)\n", winDC
, col
, type
);
144 return CreateSolidBrush16(col
);
147 /***********************************************************************
148 * WinGStretchBlt16 (WING.1009)
150 BOOL16 WINAPI
WinGStretchBlt16(HDC16 destDC
, INT16 xDest
, INT16 yDest
,
151 INT16 widDest
, INT16 heiDest
,
152 HDC16 srcDC
, INT16 xSrc
, INT16 ySrc
,
153 INT16 widSrc
, INT16 heiSrc
)
155 TRACE("(%d,%d,...)\n", destDC
, srcDC
);
156 return StretchBlt16(destDC
, xDest
, yDest
, widDest
, heiDest
, srcDC
,
157 xSrc
, ySrc
, widSrc
, heiSrc
, SRCCOPY
);
160 /***********************************************************************
161 * WinGBitBlt16 (WING.1010)
163 BOOL16 WINAPI
WinGBitBlt16(HDC16 destDC
, INT16 xDest
, INT16 yDest
,
164 INT16 widDest
, INT16 heiDest
, HDC16 srcDC
,
165 INT16 xSrc
, INT16 ySrc
)
167 TRACE("(%d,%d,...)\n", destDC
, srcDC
);
168 return BitBlt16(destDC
, xDest
, yDest
, widDest
, heiDest
, srcDC
,
169 xSrc
, ySrc
, SRCCOPY
);