ReactOS  0.4.14-dev-55-g2da92ac
wing32.c
Go to the documentation of this file.
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  */
32 {
33  return CreateCompatibleDC( 0 );
34 }
35 
36 /***********************************************************************
37  * WinGRecommendDIBFormat (WING32.@)
38  */
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;
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  */
62 {
63  return CreateDIBSection( hdc, bmi, DIB_RGB_COLORS, bits, 0, 0 );
64 }
65 
66 /***********************************************************************
67  * WinGGetDIBPointer (WING32.@)
68  */
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  */
85 {
86  return SetDIBColorTable( hdc, start, end, colors );
87 }
88 
89 /***********************************************************************
90  * WinGGetDIBColorTable (WING32.@)
91  */
93 {
94  return GetDIBColorTable( hdc, start, end, colors );
95 }
96 
97 /***********************************************************************
98  * WinGCreateHalftonePalette (WING32.@)
99  */
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  */
116 {
117  return CreateSolidBrush( color );
118 }
119 
120 /***********************************************************************
121  * WinGStretchBlt (WING32.@)
122  */
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  */
140  INT height, HDC hdcSrc, INT xSrc, INT ySrc )
141 {
142  return BitBlt( hdcDst, xDst, yDst, width, height, hdcSrc, xSrc, ySrc, SRCCOPY );
143 }
GLint GLint GLsizei width
Definition: gl.h:1546
#define TRUE
Definition: types.h:120
BITMAPINFOHEADER bmiHeader
Definition: wingdi.h:1471
DWORD biClrImportant
Definition: amvideo.idl:40
HDC WINAPI GetDC(_In_opt_ HWND)
LONG biXPelsPerMeter
Definition: amvideo.idl:37
struct tagBITMAPINFOHEADER BITMAPINFOHEADER
static HDC
Definition: imagelist.c:92
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define ds
Definition: i386-dis.c:434
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
GLuint GLuint end
Definition: gl.h:1545
static HDC hdcSrc
Definition: xlate.c:32
#define COLORONCOLOR
Definition: wingdi.h:953
LONG biYPelsPerMeter
Definition: amvideo.idl:38
static VOID NTAPI BitBlt(IN ULONG Left, IN ULONG Top, IN ULONG Width, IN ULONG Height, IN PUCHAR Buffer, IN ULONG BitsPerPixel, IN ULONG Delta)
Definition: vga.c:410
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
Definition: glext.h:10929
int32_t INT
Definition: typedefs.h:56
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
unsigned int BOOL
Definition: ntddk_ex.h:94
GLuint color
Definition: glext.h:6243
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD biCompression
Definition: amvideo.idl:35
smooth NULL
Definition: ftsmooth.c:416
UINT WINAPI SetDIBColorTable(_In_ HDC hdc, _In_ UINT iStart, _In_ UINT cEntries, _In_reads_(cEntries) const RGBQUAD *prgbq)
UINT WINAPI GetDIBColorTable(HDC hDC, UINT iStartIndex, UINT cEntries, RGBQUAD *pColors)
Definition: palette.c:123
HDC WINAPI WinGCreateDC(void)
Definition: wing32.c:31
HBITMAP hbmp
HBITMAP WINAPI WinGCreateBitmap(HDC hdc, BITMAPINFO *bmi, void **bits)
Definition: wing32.c:61
UINT WINAPI WinGGetDIBColorTable(HDC hdc, UINT start, UINT end, RGBQUAD *colors)
Definition: wing32.c:92
DWORD COLORREF
Definition: windef.h:285
#define WINAPI
Definition: msvc.h:8
DWORD biSizeImage
Definition: amvideo.idl:36
int ret
UINT WINAPI WinGSetDIBColorTable(HDC hdc, UINT start, UINT end, RGBQUAD *colors)
Definition: wing32.c:84
HDC hdc
Definition: main.c:9
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
void *WINAPI WinGGetDIBPointer(HBITMAP hbmp, BITMAPINFO *bmi)
Definition: wing32.c:69
int WINAPI SetStretchBltMode(_In_ HDC, _In_ int)
Definition: dc.c:1324
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
static HDC hdcDst
Definition: xlate.c:32
HBRUSH WINAPI WinGCreateHalftoneBrush(HDC hdc, COLORREF color, INT type)
Definition: wing32.c:115
GLuint start
Definition: gl.h:1545
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
Definition: bitmap.c:197
unsigned int UINT
Definition: ndis.h:50
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI WinGBitBlt(HDC hdcDst, INT xDst, INT yDst, INT width, INT height, HDC hdcSrc, INT xSrc, INT ySrc)
Definition: wing32.c:139
BOOL WINAPI WinGRecommendDIBFormat(BITMAPINFO *bmi)
Definition: wing32.c:39
static HBITMAP
Definition: button.c:44
#define DIB_RGB_COLORS
Definition: wingdi.h:366
#define BI_RGB
Definition: precomp.h:34
#define SRCCOPY
Definition: wingdi.h:332
HPALETTE WINAPI WinGCreateHalftonePalette(void)
Definition: wing32.c:100
BOOL WINAPI WinGStretchBlt(HDC hdcDst, INT xDst, INT yDst, INT widthDst, INT heightDst, HDC hdcSrc, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc)
Definition: wing32.c:123
HPALETTE WINAPI CreateHalftonePalette(_In_opt_ HDC)