diff --git a/rtl/win16/win31.pp b/rtl/win16/win31.pp index 86718685c9..603fe28e79 100644 --- a/rtl/win16/win31.pp +++ b/rtl/win16/win31.pp @@ -527,6 +527,10 @@ function GetRasterizerCaps(lpraststat: LPRASTERIZER_STATUS; cb: SmallInt): BOOL; function GetRasterizerCaps(var raststat: RASTERIZER_STATUS; cb: SmallInt): BOOL; external 'GDI'; {$endif} +{ Bitmap support } +function SetBitmapDimensionEx(hbm: HBITMAP; nX, nY: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI'; +function GetBitmapDimensionEx(hBitmap: HBITMAP; lpDimension: LPSIZE): BOOL; external 'GDI'; + implementation end. diff --git a/rtl/win16/winprocsh.inc b/rtl/win16/winprocsh.inc index b16f60c513..fbd52f66d5 100644 --- a/rtl/win16/winprocsh.inc +++ b/rtl/win16/winprocsh.inc @@ -613,3 +613,60 @@ function GetTextMetrics(hdc: HDC; var tm: TEXTMETRIC): BOOL; external 'GDI'; function EnumFonts(hdc: HDC; lpszFace: LPCSTR; fntenmprc: OLDFONTENUMPROC; lParam: LPARAM): SmallInt; external 'GDI'; function EnumFonts(hdc: HDC; lpszFace: LPCSTR; fntenmprc: TFarProc; lParam: LPARAM): SmallInt; external 'GDI'; + +{ Bitmap support } + +function CreateBitmap(nWidth, nHeight: SmallInt; cbPlanes, cbBits: UINT; lpvBits: FarPointer): HBITMAP; external 'GDI'; +function CreateBitmapIndirect(lpbm: LPBITMAP): HBITMAP; external 'GDI'; +{$ifdef VAR_PARAMS_ARE_FAR} +function CreateBitmapIndirect(var bm: BITMAP): HBITMAP; external 'GDI'; +{$endif} +function CreateCompatibleBitmap(hdc: HDC; nWidth, nHeight: SmallInt): HBITMAP; external 'GDI'; +function CreateDiscardableBitmap(hdc: HDC; nWidth, nHeight: SmallInt): HBITMAP; external 'GDI'; +function CreateDIBitmap(hdc: HDC; lpbmih: LPBITMAPINFOHEADER; dwInit: DWORD; lpvBits: FarPointer; lpbmi: LPBITMAPINFO; fnColorUse: UINT): HBITMAP; external 'GDI'; +{$ifdef VAR_PARAMS_ARE_FAR} +function CreateDIBitmap(hdc: HDC; var bmih: BITMAPINFOHEADER; dwInit: DWORD; lpvBits: FarPointer; var bmi: BITMAPINFO; fnColorUse: UINT): HBITMAP; external 'GDI'; +{$endif} + +function LoadBitmap(hinst: HINST; lpszBitmap: LPCSTR): HBITMAP; external 'USER'; + +function BitBlt(hdcDest: HDC; nXDest, nYDest, nWidth, nHeight: SmallInt; hdcSrc: HDC; nXSrc, nYSrc: SmallInt; dwRop: DWORD): BOOL; external 'GDI'; + +function PatBlt(hdc: HDC; nLeftRect, nTopRect, nwidth, nheight: SmallInt; fdwRop: DWORD): BOOL; external 'GDI'; + +function StretchBlt(hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest, nHeightDest: SmallInt; hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc: SmallInt; fdwRop: DWORD): BOOL; external 'GDI'; +function StretchDIBits(hdc: HDC; XDest, YDest, cxDest, cyDest, XSrc, YSrc, cxSrc, cySrc: SmallInt; + lpvBits: FarPointer; lpbmi: LPBITMAPINFO; fuColorUse: UINT; fdwRop: DWORD): SmallInt; external 'GDI'; +{$ifdef VAR_PARAMS_ARE_FAR} +function StretchDIBits(hdc: HDC; XDest, YDest, cxDest, cyDest, XSrc, YSrc, cxSrc, cySrc: SmallInt; + lpvBits: FarPointer; var bmi: BITMAPINFO; fuColorUse: UINT; fdwRop: DWORD): SmallInt; external 'GDI'; +{$endif} + +function SetPixel(hdc: HDC; nXPos, nYPos: SmallInt; clrref: COLORREF): COLORREF; external 'GDI'; +function GetPixel(hdc: HDC; nXPos, nYPos: SmallInt): COLORREF; external 'GDI'; + +function SetStretchBltMode(hdc: HDC; fnStretchMode: SmallInt): SmallInt; external 'GDI'; +function GetStretchBltMode(hdc: HDC): SmallInt; external 'GDI'; + +function SetBitmapDimension(hbmp: HBITMAP; nWidth, nHeight: SmallInt): DWORD; external 'GDI'; +function GetBitmapDimension(hbm: HBITMAP): DWORD; external 'GDI'; + +function SetROP2(hdc: HDC; fnDrawMode: SmallInt): SmallInt; external 'GDI'; +function GetROP2(hdc: HDC): SmallInt; external 'GDI'; + +function SetBitmapBits(hbmp: HBITMAP; cBits: DWORD; lpvBits: FarPointer): LONG; external 'GDI'; +function GetBitmapBits(hbm: HBITMAP; cbBuffer: LONG; lpvBits: FarPointer): LONG; external 'GDI'; + +function SetDIBits(hdc: HDC; hbmp: HBITMAP; uStartScan, cScanLines: UINT; lpvBits: FarPointer; lpbmi: LPBITMAPINFO; fuColorUse: UINT): SmallInt; external 'GDI'; +function GetDIBits(hdc: HDC; hbmp: HBITMAP; nStartScan, cScanLines: UINT; lpvBits: FarPointer; lpbmi: LPBITMAPINFO; fuColorUse: UINT): SmallInt; external 'GDI'; +{$ifdef VAR_PARAMS_ARE_FAR} +function SetDIBits(hdc: HDC; hbmp: HBITMAP; uStartScan, cScanLines: UINT; lpvBits: FarPointer; var bmi: BITMAPINFO; fuColorUse: UINT): SmallInt; external 'GDI'; +function GetDIBits(hdc: HDC; hbmp: HBITMAP; nStartScan, cScanLines: UINT; lpvBits: FarPointer; var bmi: BITMAPINFO; fuColorUse: UINT): SmallInt; external 'GDI'; +{$endif} + +function SetDIBitsToDevice(hdc: HDC; XDest, YDest, cx, cy, XSrc, YSrc: SmallInt; uStartScan, cScanLines: UINT; + lpvBits: FarPointer; lpbmi: LPBITMAPINFO; fuColorUse: UINT): SmallInt; external 'GDI'; +{$ifdef VAR_PARAMS_ARE_FAR} +function SetDIBitsToDevice(hdc: HDC; XDest, YDest, cx, cy, XSrc, YSrc: SmallInt; uStartScan, cScanLines: UINT; + lpvBits: FarPointer; var bmi: BITMAPINFO; fuColorUse: UINT): SmallInt; external 'GDI'; +{$endif} diff --git a/rtl/win16/wintypes.inc b/rtl/win16/wintypes.inc index 5d7920ed1c..ca88c10cb1 100644 --- a/rtl/win16/wintypes.inc +++ b/rtl/win16/wintypes.inc @@ -866,3 +866,155 @@ const { EnumFonts font type values } RASTER_FONTTYPE = $0001; DEVICE_FONTTYPE = $0002; + +type +{ Bitmap support } + PBITMAP = ^BITMAP; + NPBITMAP = ^BITMAP; near; + LPBITMAP = ^BITMAP; far; + BITMAP = record + bmType: SmallInt; + bmWidth: SmallInt; + bmHeight: SmallInt; + bmWidthBytes: SmallInt; + bmPlanes: BYTE; + bmBitsPixel: BYTE; + bmBits: FarPointer; + end; + TBitmap = BITMAP; + +{ Bitmap Header structures } + PRGBTRIPLE = ^RGBTRIPLE; + LPRGBTRIPLE = ^RGBTRIPLE; far; + RGBTRIPLE = record + rgbtBlue: BYTE; + rgbtGreen: BYTE; + rgbtRed: BYTE; + end; + TRGBTriple = RGBTRIPLE; + + PRGBQUAD = ^RGBQUAD; + LPRGBQUAD = ^RGBQUAD; far; + RGBQUAD = record + rgbBlue: BYTE; + rgbGreen: BYTE; + rgbRed: BYTE; + rgbReserved: BYTE; + end; + TRGBQuad = RGBQUAD; + +{ structures for defining DIBs } + PBITMAPCOREHEADER = ^BITMAPCOREHEADER; + LPBITMAPCOREHEADER = ^BITMAPCOREHEADER; far; + BITMAPCOREHEADER = record + bcSize: DWORD; + bcWidth: SmallInt; + bcHeight: SmallInt; + bcPlanes: WORD; + bcBitCount: WORD; + end; + TBitmapCoreHeader = BITMAPCOREHEADER; + + PBITMAPINFOHEADER = ^BITMAPINFOHEADER; + LPBITMAPINFOHEADER = ^BITMAPINFOHEADER; far; + BITMAPINFOHEADER = record + biSize: DWORD; + biWidth: LONG; + biHeight: LONG; + biPlanes: WORD; + biBitCount: WORD; + biCompression: DWORD; + biSizeImage: DWORD; + biXPelsPerMeter: LONG; + biYPelsPerMeter: LONG; + biClrUsed: DWORD; + biClrImportant: DWORD; + end; + TBitmapInfoHeader = BITMAPINFOHEADER; + +const +{ constants for the biCompression field } + BI_RGB = 0; + BI_RLE8 = 1; + BI_RLE4 = 2; + +type + PBITMAPINFO = ^BITMAPINFO; + LPBITMAPINFO = ^BITMAPINFO; far; + BITMAPINFO = record + bmiHeader: BITMAPINFOHEADER; + bmiColors: array [0..0] of RGBQUAD; + end; + TBitmapInfo = BITMAPINFO; + + PBITMAPCOREINFO = ^BITMAPCOREINFO; + LPBITMAPCOREINFO = ^BITMAPCOREINFO; far; + BITMAPCOREINFO = record + bmciHeader: BITMAPCOREHEADER; + bmciColors: array [0..0] of RGBTRIPLE; + end; + TBitmapCoreInfo = BITMAPCOREINFO; + + PBITMAPFILEHEADER = ^BITMAPFILEHEADER; + LPBITMAPFILEHEADER = ^BITMAPFILEHEADER; far; + BITMAPFILEHEADER = record + bfType: UINT; + bfSize: DWORD; + bfReserved1: UINT; + bfReserved2: UINT; + bfOffBits: DWORD; + end; + TBitmapFileHeader = BITMAPFILEHEADER; + +const +{ DIB color table identifiers } + DIB_RGB_COLORS = 0; + DIB_PAL_COLORS = 1; + +{ constants for CreateDIBitmap } + CBM_INIT = $00000004; + +{ Binary raster ops } + R2_BLACK = 1; + R2_NOTMERGEPEN = 2; + R2_MASKNOTPEN = 3; + R2_NOTCOPYPEN = 4; + R2_MASKPENNOT = 5; + R2_NOT = 6; + R2_XORPEN = 7; + R2_NOTMASKPEN = 8; + R2_MASKPEN = 9; + R2_NOTXORPEN = 10; + R2_NOP = 11; + R2_MERGENOTPEN = 12; + R2_COPYPEN = 13; + R2_MERGEPENNOT = 14; + R2_MERGEPEN = 15; + R2_WHITE = 16; + +{ Ternary raster operations } + SRCCOPY = $00CC0020; + SRCPAINT = $00EE0086; + SRCAND = $008800C6; + SRCINVERT = $00660046; + SRCERASE = $00440328; + NOTSRCCOPY = $00330008; + NOTSRCERASE = $001100A6; + MERGECOPY = $00C000CA; + MERGEPAINT = $00BB0226; + PATCOPY = $00F00021; + PATPAINT = $00FB0A09; + PATINVERT = $005A0049; + DSTINVERT = $00550009; + BLACKNESS = $00000042; + WHITENESS = $00FF0062; + +{ StretchBlt() Modes } + BLACKONWHITE = 1; + WHITEONBLACK = 2; + COLORONCOLOR = 3; + +{ new StretchBlt() Modes (simpler names) } + STRETCH_ANDSCANS = 1; + STRETCH_ORSCANS = 2; + STRETCH_DELETESCANS = 3;