1 /*
2 * WinG support
3 *
4 * Copyright 2007 Dmitry Timoshkov
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21 #include <stdarg.h>
22
23 #include "windef.h"
24 #include "winbase.h"
25 #include "wingdi.h"
26 #include "winuser.h"
27
28 /***********************************************************************
29 * WinGCreateDC (WING32.@)
30 */
WinGCreateDC(void)31 HDC WINAPI WinGCreateDC( void )
32 {
33 return CreateCompatibleDC( 0 );
34 }
35
36 /***********************************************************************
37 * WinGRecommendDIBFormat (WING32.@)
38 */
WinGRecommendDIBFormat(BITMAPINFO * bmi)39 BOOL WINAPI WinGRecommendDIBFormat( BITMAPINFO *bmi )
40 {
41 if (!bmi) return FALSE;
42
43 bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
44 bmi->bmiHeader.biWidth = 320;
45 bmi->bmiHeader.biHeight = 1;
46 bmi->bmiHeader.biPlanes = 1;
47 bmi->bmiHeader.biBitCount = 8;
48 bmi->bmiHeader.biCompression = BI_RGB;
49 bmi->bmiHeader.biSizeImage = 0;
50 bmi->bmiHeader.biXPelsPerMeter = 0;
51 bmi->bmiHeader.biYPelsPerMeter = 0;
52 bmi->bmiHeader.biClrUsed = 0;
53 bmi->bmiHeader.biClrImportant = 0;
54
55 return TRUE;
56 }
57
58 /***********************************************************************
59 * WinGCreateBitmap (WING32.@)
60 */
WinGCreateBitmap(HDC hdc,BITMAPINFO * bmi,void ** bits)61 HBITMAP WINAPI WinGCreateBitmap( HDC hdc, BITMAPINFO *bmi, void **bits )
62 {
63 return CreateDIBSection( hdc, bmi, DIB_RGB_COLORS, bits, 0, 0 );
64 }
65
66 /***********************************************************************
67 * WinGGetDIBPointer (WING32.@)
68 */
WinGGetDIBPointer(HBITMAP hbmp,BITMAPINFO * bmi)69 void * WINAPI WinGGetDIBPointer( HBITMAP hbmp, BITMAPINFO *bmi )
70 {
71 DIBSECTION ds;
72
73 if (GetObjectW( hbmp, sizeof(ds), &ds ) == sizeof(ds))
74 {
75 bmi->bmiHeader = ds.dsBmih;
76 return ds.dsBm.bmBits;
77 }
78 return NULL;
79 }
80
81 /***********************************************************************
82 * WinGSetDIBColorTable (WING32.@)
83 */
WinGSetDIBColorTable(HDC hdc,UINT start,UINT end,RGBQUAD * colors)84 UINT WINAPI WinGSetDIBColorTable( HDC hdc, UINT start, UINT end, RGBQUAD *colors )
85 {
86 return SetDIBColorTable( hdc, start, end, colors );
87 }
88
89 /***********************************************************************
90 * WinGGetDIBColorTable (WING32.@)
91 */
WinGGetDIBColorTable(HDC hdc,UINT start,UINT end,RGBQUAD * colors)92 UINT WINAPI WinGGetDIBColorTable( HDC hdc, UINT start, UINT end, RGBQUAD *colors )
93 {
94 return GetDIBColorTable( hdc, start, end, colors );
95 }
96
97 /***********************************************************************
98 * WinGCreateHalftonePalette (WING32.@)
99 */
WinGCreateHalftonePalette(void)100 HPALETTE WINAPI WinGCreateHalftonePalette( void )
101 {
102 HDC hdc;
103 HPALETTE hpal;
104
105 hdc = GetDC( 0 );
106 hpal = CreateHalftonePalette( hdc );
107 ReleaseDC( 0, hdc );
108
109 return hpal;
110 }
111
112 /***********************************************************************
113 * WinGCreateHalftoneBrush (WING32.@)
114 */
WinGCreateHalftoneBrush(HDC hdc,COLORREF color,INT type)115 HBRUSH WINAPI WinGCreateHalftoneBrush( HDC hdc, COLORREF color, INT type )
116 {
117 return CreateSolidBrush( color );
118 }
119
120 /***********************************************************************
121 * WinGStretchBlt (WING32.@)
122 */
WinGStretchBlt(HDC hdcDst,INT xDst,INT yDst,INT widthDst,INT heightDst,HDC hdcSrc,INT xSrc,INT ySrc,INT widthSrc,INT heightSrc)123 BOOL WINAPI WinGStretchBlt( HDC hdcDst, INT xDst, INT yDst, INT widthDst, INT heightDst,
124 HDC hdcSrc, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc )
125 {
126 INT old_blt_mode;
127 BOOL ret;
128
129 old_blt_mode = SetStretchBltMode( hdcDst, COLORONCOLOR );
130 ret = StretchBlt( hdcDst, xDst, yDst, widthDst, heightDst,
131 hdcSrc, xSrc, ySrc, widthSrc, heightSrc, SRCCOPY );
132 SetStretchBltMode( hdcDst, old_blt_mode );
133 return ret;
134 }
135
136 /***********************************************************************
137 * WinGBitBlt (WING32.@)
138 */
WinGBitBlt(HDC hdcDst,INT xDst,INT yDst,INT width,INT height,HDC hdcSrc,INT xSrc,INT ySrc)139 BOOL WINAPI WinGBitBlt( HDC hdcDst, INT xDst, INT yDst, INT width,
140 INT height, HDC hdcSrc, INT xSrc, INT ySrc )
141 {
142 return BitBlt( hdcDst, xDst, yDst, width, height, hdcSrc, xSrc, ySrc, SRCCOPY );
143 }
144