xref: /reactos/dll/win32/wing32/wing32.c (revision ce9211a2)
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