4 * Started by Robert Pouliot <krynos@clic.net>
9 #ifndef X_DISPLAY_MISSING
11 #endif /* !defined(X_DISPLAY_MISSING) */
13 #include "wine/winuser16.h"
20 #include "wine/winuser16.h"
23 typedef enum WING_DITHER_TYPE
25 WING_DISPERSED_4x4, WING_DISPERSED_8x8, WING_CLUSTERED_4x4
29 * WinG DIB bitmaps can be selected into DC and then scribbled upon
30 * by GDI functions. They can also be changed directly. This gives us
32 * - use original WinG 16-bit DLL
33 * requires working 16-bit driver interface
34 * - implement DIB graphics driver from scratch
36 * - use shared pixmaps
37 * won't work with some videocards and/or videomodes
41 /***********************************************************************
42 * WinGCreateDC16 (WING.1001)
44 HDC16 WINAPI WinGCreateDC16(void)
46 TRACE(wing, "(void)\n");
47 return CreateCompatibleDC16(0);
50 /***********************************************************************
51 * WinGRecommendDIBFormat16 (WING.1002)
53 BOOL16 WINAPI WinGRecommendDIBFormat16(BITMAPINFO *bmpi)
55 TRACE(wing, "(%p)\n", bmpi);
59 bmpi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
60 bmpi->bmiHeader.biWidth = 320;
61 bmpi->bmiHeader.biHeight = -1;
62 bmpi->bmiHeader.biPlanes = 1;
63 bmpi->bmiHeader.biBitCount = MONITOR_GetDepth(&MONITOR_PrimaryMonitor);
64 bmpi->bmiHeader.biCompression = BI_RGB;
65 bmpi->bmiHeader.biSizeImage = 0;
66 bmpi->bmiHeader.biXPelsPerMeter = 0;
67 bmpi->bmiHeader.biYPelsPerMeter = 0;
68 bmpi->bmiHeader.biClrUsed = 0;
69 bmpi->bmiHeader.biClrImportant = 0;
74 /***********************************************************************
75 * WinGCreateBitmap16 (WING.1003)
77 HBITMAP16 WINAPI WinGCreateBitmap16(HDC16 hdc, BITMAPINFO *bmpi,
80 TRACE(wing, "(%d,%p,%p)\n", hdc, bmpi, bits);
81 TRACE(wing, ": create %ldx%ldx%d bitmap\n", bmpi->bmiHeader.biWidth,
82 bmpi->bmiHeader.biHeight, bmpi->bmiHeader.biPlanes);
83 return CreateDIBSection16(hdc, bmpi, 0, bits, 0, 0);
86 /***********************************************************************
87 * WinGGetDIBPointer (WING.1004)
89 SEGPTR WINAPI WinGGetDIBPointer16(HBITMAP16 hWinGBitmap, BITMAPINFO* bmpi)
91 BITMAPOBJ* bmp = (BITMAPOBJ *) GDI_GetObjPtr( hWinGBitmap, BITMAP_MAGIC );
93 TRACE(wing, "(%d,%p)\n", hWinGBitmap, bmpi);
94 if (!bmp) return (SEGPTR)NULL;
97 FIXME(wing, ": Todo - implement setting BITMAPINFO\n");
99 #ifndef X_DISPLAY_MISSING
100 return PTR_SEG_OFF_TO_SEGPTR(((X11DRV_DIBSECTION *) bmp->dib)->selector, 0);
101 #else /* !defined(X_DISPLAY_MISSING) */
103 #endif /* !defined(X_DISPLAY_MISSING) */
106 /***********************************************************************
107 * WinGSetDIBColorTable (WING.1004)
109 UINT16 WINAPI WinGSetDIBColorTable16(HDC16 hdc, UINT16 start, UINT16 num,
112 TRACE(wing, "(%d,%d,%d,%p)\n", hdc, start, num, colors);
113 return SetDIBColorTable16(hdc, start, num, colors);
116 /***********************************************************************
117 * WinGGetDIBColorTable16 (WING.1005)
119 UINT16 WINAPI WinGGetDIBColorTable16(HDC16 hdc, UINT16 start, UINT16 num,
122 TRACE(wing, "(%d,%d,%d,%p)\n", hdc, start, num, colors);
123 return GetDIBColorTable16(hdc, start, num, colors);
126 /***********************************************************************
127 * WinGCreateHalfTonePalette16 (WING.1007)
129 HPALETTE16 WINAPI WinGCreateHalfTonePalette16(void)
131 TRACE(wing, "(void)\n");
132 return CreateHalftonePalette16(GetDC16(0));
135 /***********************************************************************
136 * WinGCreateHalfToneBrush16 (WING.1008)
138 HBRUSH16 WINAPI WinGCreateHalfToneBrush16(HDC16 winDC, COLORREF col,
139 WING_DITHER_TYPE type)
141 TRACE(wing, "(%d,%ld,%d)\n", winDC, col, type);
142 return CreateSolidBrush16(col);
145 /***********************************************************************
146 * WinGStretchBlt16 (WING.1009)
148 BOOL16 WINAPI WinGStretchBlt16(HDC16 destDC, INT16 xDest, INT16 yDest,
149 INT16 widDest, INT16 heiDest,
150 HDC16 srcDC, INT16 xSrc, INT16 ySrc,
151 INT16 widSrc, INT16 heiSrc)
153 TRACE(wing, "(%d,%d,...)\n", destDC, srcDC);
154 return StretchBlt16(destDC, xDest, yDest, widDest, heiDest, srcDC,
155 xSrc, ySrc, widSrc, heiSrc, SRCCOPY);
158 /***********************************************************************
159 * WinGBitBlt16 (WING.1010)
161 BOOL16 WINAPI WinGBitBlt16(HDC16 destDC, INT16 xDest, INT16 yDest,
162 INT16 widDest, INT16 heiDest, HDC16 srcDC,
163 INT16 xSrc, INT16 ySrc)
165 TRACE(wing, "(%d,%d,...)\n", destDC, srcDC);
166 return BitBlt16(destDC, xDest, yDest, widDest, heiDest, srcDC,
167 xSrc, ySrc, SRCCOPY);