definition module clCCall_12

//	Clean Object I/O library, version 1.2

from StdIOCommon	import :: Modifiers
from ostoolbox		import :: OSToolbox


::	CSTR	:==  Int
::	ACCLPTR	:==  Int

MaxRand				:== 32767

WinHelpKey			:== 5
WinEscapeKey		:== 27
WinReturnKey		:== 13
WinTabKey			:== 9
WinDelKey			:== 127
WinBackSpKey		:== 8
WinEndKey			:== 4
WinBeginKey			:== 1
WinPgDownKey		:== 12
WinPgUpKey			:== 11
WinRightKey			:== 29
WinLeftKey			:== 28
WinDownKey			:== 31
WinUpKey			:== 30
WinF1Key			:==	1001
WinF2Key			:==	1002
WinF3Key			:==	1003
WinF4Key			:==	1004
WinF5Key			:==	1005
WinF6Key			:==	1006
WinF7Key			:==	1007
WinF8Key			:==	1008
WinF9Key			:==	1009
WinF10Key			:==	1010
WinF11Key			:==	1011
WinF12Key			:==	1012

CTRLBIT				:== 4
ALTBIT				:== 2
SHIFTBIT			:== 1

KEYREPEAT			:== 4
KEYUP				:== 2
KEYDOWN				:== 1

BUTTONUP			:== 50
BUTTONSTILLDOWN		:== 40
BUTTONTRIPLEDOWN	:== 3
BUTTONDOUBLEDOWN	:== 2
BUTTONDOWN			:== 1
BUTTONSTILLUP		:== 0		/* PA: new constant for passing mouse move events. */


//	PA: moved from windowevent.icl because also used by menuCrossCall_12
toModifiers				:: !Int -> Modifiers

winLaunchApp			:: !{#Char} !Bool !*OSToolbox -> (!Bool,!*OSToolbox)
winLaunchApp2			:: !{#Char} !{#Char} !Bool !*OSToolbox -> (!Bool,!*OSToolbox)
winCallProcess			:: !CSTR !CSTR !CSTR !CSTR !CSTR !CSTR !*OSToolbox -> (!Bool,!Int,!*OSToolbox)

winGetModulePath		:: {#Char}
winFileModifiedDate		:: !{#Char} -> (!Bool,!Int,!Int,!Int,!Int,!Int,!Int)
winFileExists			:: !{#Char} ->  Bool

winBeep					:: !*OSToolbox -> *OSToolbox

rand					:: Int

winReleaseCString		:: !CSTR !*OSToolbox -> *OSToolbox
winGetCStringAndFree	:: !CSTR !*OSToolbox -> (!{#Char},!*OSToolbox)
winGetCString			:: !CSTR !*OSToolbox -> (!{#Char},!*OSToolbox)
winMakeCString			:: !{#Char} !*OSToolbox -> (!CSTR,!*OSToolbox)

winGetAppPath			:: CSTR

winSetDoubleDownDist	:: !Int !*OSToolbox ->  *OSToolbox

winGetHorzResolution	:: Int
winGetVertResolution	:: Int

winMaxFixedWindowSize	:: (!Int,!Int)
winMaxScrollWindowSize	:: (!Int,!Int)

//	PA: interfaces added for determining screen width and height.
winScreenYSize			:: !*OSToolbox -> (!Int,!*OSToolbox)
winScreenXSize			:: !*OSToolbox -> (!Int,!*OSToolbox)

winMinimumWinSize		:: (!Int,!Int)

//	PA: function added to get system metrics for width and height of scrollbars.
winScrollbarSize		:: !*OSToolbox -> (!Int,!Int,!*OSToolbox)

/*	PA: two new routines (win(M/S)DIClientToOuterSizeDims added to convert between the
		client and outer size of (M/S)DI windows. The Int argument contains the style flags 
		of the window.
*/
winMDIClientToOuterSizeDims :: !Int !*OSToolbox -> (!Int,!Int,!*OSToolbox)
winSDIClientToOuterSizeDims :: !Int !*OSToolbox -> (!Int,!Int,!*OSToolbox)

winPlaySound			:: !{#Char} !*OSToolbox -> (!Bool,!*OSToolbox)
