/* * WinG support * * Copyright 2007 Dmitry Timoshkov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include <stdarg.h> #include "windef.h" #include "winbase.h" #include "wingdi.h" #include "winuser.h" /*********************************************************************** * WinGCreateDC (WING32.@) */ HDC WINAPI WinGCreateDC( void ) { return CreateCompatibleDC( 0 ); } /*********************************************************************** * WinGRecommendDIBFormat (WING32.@) */ BOOL WINAPI WinGRecommendDIBFormat( BITMAPINFO *bmi ) { if (!bmi) return FALSE; bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi->bmiHeader.biWidth = 320; bmi->bmiHeader.biHeight = 1; bmi->bmiHeader.biPlanes = 1; bmi->bmiHeader.biBitCount = 8; bmi->bmiHeader.biCompression = BI_RGB; bmi->bmiHeader.biSizeImage = 0; bmi->bmiHeader.biXPelsPerMeter = 0; bmi->bmiHeader.biYPelsPerMeter = 0; bmi->bmiHeader.biClrUsed = 0; bmi->bmiHeader.biClrImportant = 0; return TRUE; } /*********************************************************************** * WinGCreateBitmap (WING32.@) */ HBITMAP WINAPI WinGCreateBitmap( HDC hdc, BITMAPINFO *bmi, void **bits ) { return CreateDIBSection( hdc, bmi, DIB_RGB_COLORS, bits, 0, 0 ); } /*********************************************************************** * WinGGetDIBPointer (WING32.@) */ void * WINAPI WinGGetDIBPointer( HBITMAP hbmp, BITMAPINFO *bmi ) { DIBSECTION ds; if (GetObjectW( hbmp, sizeof(ds), &ds ) == sizeof(ds)) { memcpy( &bmi->bmiHeader, &ds.dsBmih, sizeof(*bmi) ); return ds.dsBm.bmBits; } return NULL; } /*********************************************************************** * WinGSetDIBColorTable (WING32.@) */ UINT WINAPI WinGSetDIBColorTable( HDC hdc, UINT start, UINT end, RGBQUAD *colors ) { return SetDIBColorTable( hdc, start, end, colors ); } /*********************************************************************** * WinGGetDIBColorTable (WING32.@) */ UINT WINAPI WinGGetDIBColorTable( HDC hdc, UINT start, UINT end, RGBQUAD *colors ) { return GetDIBColorTable( hdc, start, end, colors ); } /*********************************************************************** * WinGCreateHalftonePalette (WING32.@) */ HPALETTE WINAPI WinGCreateHalftonePalette( void ) { HDC hdc; HPALETTE hpal; hdc = GetDC( 0 ); hpal = CreateHalftonePalette( hdc ); ReleaseDC( 0, hdc ); return hpal; } /*********************************************************************** * WinGCreateHalftoneBrush (WING32.@) */ HBRUSH WINAPI WinGCreateHalftoneBrush( HDC hdc, COLORREF color, INT type ) { return CreateSolidBrush( color ); } /*********************************************************************** * WinGStretchBlt (WING32.@) */ BOOL WINAPI WinGStretchBlt( HDC hdcDst, INT xDst, INT yDst, INT widthDst, INT heightDst, HDC hdcSrc, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc ) { INT old_blt_mode; BOOL ret; old_blt_mode = SetStretchBltMode( hdcDst, COLORONCOLOR ); ret = StretchBlt( hdcDst, xDst, yDst, widthDst, heightDst, hdcSrc, xSrc, ySrc, widthSrc, heightSrc, SRCCOPY ); SetStretchBltMode( hdcDst, old_blt_mode ); return ret; } /*********************************************************************** * WinGBitBlt (WING32.@) */ BOOL WINAPI WinGBitBlt( HDC hdcDst, INT xDst, INT yDst, INT width, INT height, HDC hdcSrc, INT xSrc, INT ySrc ) { return BitBlt( hdcDst, xDst, yDst, width, height, hdcSrc, xSrc, ySrc, SRCCOPY ); }