! Copyright (C) 2005, 2006 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types alien.syntax namespaces kernel words
-sequences math math.bitwise math.vectors colors
-io.encodings.utf16n classes.struct accessors ;
+USING: alien.c-types alien.syntax classes.struct colors
+io.encodings.utf16 io.encodings.utf8 kernel math math.bitwise
+math.functions math.vectors sequences ;
FROM: alien.c-types => float short ;
IN: windows.types
TYPEDEF: uchar BYTE
TYPEDEF: ushort wchar_t
-SYMBOL: wchar_t*
-<<
-{ char* utf16n } \ wchar_t* typedef
-\ wchar_t \ wchar_t* "pointer-c-type" set-word-prop
->>
TYPEDEF: wchar_t WCHAR
TYPEDEF: short SHORT
TYPEDEF: ushort USHORT
+TYPEDEF: short INT16
+TYPEDEF: ushort UINT16
TYPEDEF: ushort WORD
TYPEDEF: ulong DWORD
TYPEDEF: long LONG
TYPEDEF: long* LPLONG
-TYPEDEF: long LONG_PTR
-TYPEDEF: long* PLONG_PTR
+TYPEDEF: intptr_t LONG_PTR
TYPEDEF: uint ULONG
-TYPEDEF: void* ULONG_PTR
-TYPEDEF: void* PULONG_PTR
+TYPEDEF: uintptr_t ULONG_PTR
TYPEDEF: void VOID
TYPEDEF: void* PVOID
TYPEDEF: intptr_t INT_PTR
TYPEDEF: intptr_t UINT_PTR
-TYPEDEF: int LONG_PTR
-TYPEDEF: ulong ULONG_PTR
-
TYPEDEF: int INT32
TYPEDEF: uint UINT32
TYPEDEF: uint DWORD32
TYPEDEF: size_t SIZE_T
TYPEDEF: ptrdiff_t SSIZE_T
-TYPEDEF: wchar_t* LPCSTR
-TYPEDEF: wchar_t* LPWSTR
+TYPEDEF: { c-string utf16n } LPCSTR
+TYPEDEF: { c-string utf16n } LPTCSTR
+
+TYPEDEF: { c-string utf16n } LPWSTR
TYPEDEF: WCHAR TCHAR
TYPEDEF: LPWSTR LPTCH
TYPEDEF: LPWSTR PTCH
TYPEDEF: WORD ATOM
TYPEDEF: BYTE BOOLEAN
-TYPEDEF: DWORD COLORREF
TYPEDEF: ULONGLONG DWORDLONG
TYPEDEF: ULONG_PTR DWORD_PTR
TYPEDEF: PVOID HANDLE
TYPEDEF: HANDLE HDESK
TYPEDEF: HANDLE HDROP
TYPEDEF: HANDLE HDWP
-TYPEDEF: HANDLE HENMETAFILE
+TYPEDEF: HANDLE HENHMETAFILE
TYPEDEF: HANDLE HFONT
TYPEDEF: HANDLE HGDIOBJ
TYPEDEF: HANDLE HGLOBAL
TYPEDEF: HANDLE HLOCAL
TYPEDEF: HANDLE HMENU
TYPEDEF: HANDLE HMETAFILE
+TYPEDEF: HANDLE HMETAFILEPICT
TYPEDEF: HINSTANCE HMODULE
TYPEDEF: HANDLE HMONITOR
TYPEDEF: HANDLE HPALETTE
TYPEDEF: LONG_PTR LPARAM
TYPEDEF: BOOL* LPBOOL
TYPEDEF: BYTE* LPBYTE
-TYPEDEF: DWORD* LPCOLORREF
-TYPEDEF: WCHAR* LPCWSTR
-! TYPEDEF: WCHAR* LPWSTR
-TYPEDEF: WCHAR* LPSTR
-TYPEDEF: wchar_t* LPCTSTR
-TYPEDEF: wchar_t* LPWTSTR
+TYPEDEF: { c-string utf16n } LPCWSTR
+! TYPEDEF: WCHAR* LPWSTR
-TYPEDEF: wchar_t* LPTSTR
+TYPEDEF: { c-string utf8 } LPSTR
+TYPEDEF: { c-string utf16n } LPCTSTR
+TYPEDEF: { c-string utf16n } LPWTSTR
+TYPEDEF: { c-string utf16n } LPTSTR
TYPEDEF: LPCSTR PCTSTR
TYPEDEF: LPSTR PTSTR
TYPEDEF: BYTE* PBYTE
TYPEDEF: CHAR* PCHAR
TYPEDEF: CHAR* PCSTR
-TYPEDEF: WCHAR* PCWSTR
+TYPEDEF: { c-string utf16n } PCWSTR
TYPEDEF: DWORD* PDWORD
TYPEDEF: DWORDLONG* PDWORDLONG
TYPEDEF: DWORD_PTR* PDWORD_PTR
TYPEDEF: ULONG32* PULONG32
TYPEDEF: ULONG64* PULONG64
TYPEDEF: USHORT* PUSHORT
-TYPEDEF: WCHAR* PWCHAR
+TYPEDEF: { c-string utf16n } PWCHAR
TYPEDEF: WORD* PWORD
-TYPEDEF: WCHAR* PWSTR
+TYPEDEF: { c-string utf16n } PWSTR
TYPEDEF: HANDLE SC_HANDLE
TYPEDEF: LPVOID SC_LOCK
TYPEDEF: HANDLE SERVICE_STATUS_HANDLE
-TYPEDEF: ULONG_PTR SIZE_T
-TYPEDEF: LONG_PTR SSIZE_T
TYPEDEF: LONGLONG USN
TYPEDEF: UINT_PTR WPARAM
+TYPEDEF: DWORD ACCESS_MASK
+TYPEDEF: ACCESS_MASK* PACCESS_MASK
TYPEDEF: size_t socklen_t
STRUCT: POINT
{ x LONG }
- { y LONG } ;
+ { y LONG } ;
+TYPEDEF: POINT* LPPOINT
STRUCT: SIZE
{ cx LONG }
{ dwDamageMask DWORD } ;
: <RECT> ( loc dim -- RECT )
- dupd v+ [ first2 ] bi@ RECT <struct-boa> ;
+ dupd v+ [ first2 ] bi@ RECT boa ;
TYPEDEF: RECT* PRECT
TYPEDEF: RECT* LPRECT
TYPEDEF: PIXELFORMATDESCRIPTOR PFD
TYPEDEF: PFD* LPPFD
TYPEDEF: HANDLE HGLRC
-TYPEDEF: HANDLE HRGN
TYPEDEF: void* PWNDCLASS
TYPEDEF: void* PWNDCLASSEX
STRUCT: LVFINDINFO
{ flags uint }
- { psz char* }
+ { psz c-string }
{ lParam long }
{ pt POINT }
{ vkDirection uint } ;
: RGB ( r g b -- COLORREF )
{ 16 8 0 } bitfield ; inline
: >RGB< ( COLORREF -- r g b )
- [ HEX: ff bitand ]
- [ -8 shift HEX: ff bitand ]
- [ -16 shift HEX: ff bitand ] tri ;
+ [ 0xff bitand ]
+ [ -8 shift 0xff bitand ]
+ [ -16 shift 0xff bitand ] tri ;
: color>RGB ( color -- COLORREF )
- >rgba-components drop [ 255 * >integer ] tri@ RGB ;
+ >rgba-components drop [ 255 round * >integer ] tri@ RGB ;
: RGB>color ( COLORREF -- color )
- >RGB< [ 1/255. * >float ] tri@ 1.0 <rgba> ;
+ >RGB< [ 255 /f ] tri@ 1.0 <rgba> ;
STRUCT: TEXTMETRICW
{ tmHeight LONG }
{ tmCharSet BYTE } ;
TYPEDEF: TEXTMETRICW* LPTEXTMETRIC
+
+TYPEDEF: ULONG PROPID
+
+CALLBACK: BOOL WNDENUMPROC ( HWND hWnd, LPARAM lParam )
+CALLBACK: LRESULT HOOKPROC ( int nCode, WPARAM wParam, LPARAM lParam )