windows.offscreen structs

db4
Doug Coleman 2009-08-29 17:35:11 -05:00
parent eb21a7b0dd
commit 0c37990f53
2 changed files with 37 additions and 36 deletions

View File

@ -2,25 +2,26 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types kernel combinators sequences USING: alien.c-types kernel combinators sequences
math windows.gdi32 windows.types images destructors math windows.gdi32 windows.types images destructors
accessors fry locals ; accessors fry locals classes.struct ;
IN: windows.offscreen IN: windows.offscreen
: (bitmap-info) ( dim -- BITMAPINFO ) : (bitmap-info) ( dim -- BITMAPINFO )
"BITMAPINFO" <c-object> [ [
BITMAPINFO-bmiHeader { BITMAPINFO <struct>
[ nip "BITMAPINFOHEADER" heap-size swap set-BITMAPINFOHEADER-biSize ] dup bmiHeader>>
[ [ first ] dip set-BITMAPINFOHEADER-biWidth ] BITMAPINFOHEADER heap-size >>biSize
[ [ second ] dip set-BITMAPINFOHEADER-biHeight ] ] dip
[ nip 1 swap set-BITMAPINFOHEADER-biPlanes ] [ first >>biWidth ]
[ nip 32 swap set-BITMAPINFOHEADER-biBitCount ] [ second >>biHeight ]
[ nip BI_RGB swap set-BITMAPINFOHEADER-biCompression ] [ first2 * 4 * >>biSizeImage ] tri
[ [ first2 * 4 * ] dip set-BITMAPINFOHEADER-biSizeImage ] 1 >>biPlanes
[ nip 72 swap set-BITMAPINFOHEADER-biXPelsPerMeter ] 32 >>biBitCount
[ nip 72 swap set-BITMAPINFOHEADER-biYPelsPerMeter ] BI_RGB >>biCompression
[ nip 0 swap set-BITMAPINFOHEADER-biClrUsed ] 72 >>biXPelsPerMeter
[ nip 0 swap set-BITMAPINFOHEADER-biClrImportant ] 72 >>biYPelsPerMeter
} 2cleave 0 >>biClrUsed
] keep ; 0 >>biClrImportant
drop ;
: make-bitmap ( dim dc -- hBitmap bits ) : make-bitmap ( dim dc -- hBitmap bits )
[ nip ] [ nip ]

View File

@ -257,28 +257,28 @@ C-STRUCT: PAINTSTRUCT
{ "BYTE[32]" "rgbReserved" } { "BYTE[32]" "rgbReserved" }
; ;
C-STRUCT: BITMAPINFOHEADER STRUCT: BITMAPINFOHEADER
{ "DWORD" "biSize" } { biSize DWORD }
{ "LONG" "biWidth" } { biWidth LONG }
{ "LONG" "biHeight" } { biHeight LONG }
{ "WORD" "biPlanes" } { biPlanes WORD }
{ "WORD" "biBitCount" } { biBitCount WORD }
{ "DWORD" "biCompression" } { biCompression DWORD }
{ "DWORD" "biSizeImage" } { biSizeImage DWORD }
{ "LONG" "biXPelsPerMeter" } { biXPelsPerMeter LONG }
{ "LONG" "biYPelsPerMeter" } { biYPelsPerMeter LONG }
{ "DWORD" "biClrUsed" } { biClrUsed DWORD }
{ "DWORD" "biClrImportant" } ; { biClrImportant DWORD } ;
C-STRUCT: RGBQUAD STRUCT: RGBQUAD
{ "BYTE" "rgbBlue" } { rgbBlue BYTE }
{ "BYTE" "rgbGreen" } { rgbGreen BYTE }
{ "BYTE" "rgbRed" } { rgbRed BYTE }
{ "BYTE" "rgbReserved" } ; { rgbReserved BYTE } ;
C-STRUCT: BITMAPINFO STRUCT: BITMAPINFO
{ "BITMAPINFOHEADER" "bmiHeader" } { bmiHeader BITMAPINFOHEADER }
{ "RGBQUAD[1]" "bmiColors" } ; { bimColors RGBQUAD[1] } ;
TYPEDEF: void* LPPAINTSTRUCT TYPEDEF: void* LPPAINTSTRUCT
TYPEDEF: void* PAINTSTRUCT TYPEDEF: void* PAINTSTRUCT