definition module osprint

//	Clean Standard Object I/O library, version 1.2

import StdFile, StdPicture, iostate

::	PrintSetup
::	JobInfo
	=	{	range	::	!(!Int,!Int)	// First and last page as typed in by the 
										// user. If the user chooses "ALL", then the
										// first page will be one, and the last page 
										// will be a "huge" number. 
		,	copies	::	!Int			// Number of copies. This will not 
										// necessarily be equal to the number of 
										// copies, as specified in the print dialog.
										// Some printer drivers take themselves care
										// of producing the appropriate number of 
										// copies => printInfo.copies==1.
		}
::	PrintInfo
	=	{	printSetup	::	PrintSetup	// PC:	the print setup, which was chosen by
										//		the user via the print dialog
										// Mac:	the value will be identical to the
										//		actual PrintSetup argument, that was
										//		passed to one of the printing
										//		functions
		,	jobInfo		::	JobInfo
		}
::	Alternative x y
	=	Cancelled x
	|	StartedPrinting y

os_getpagedimensions	:: !PrintSetup !Bool -> (!(!Int,!Int),!(!(!Int,!Int),!(!Int,!Int)),!(!Int,!Int))
os_defaultprintsetup	::             !*env -> (!PrintSetup, !*env)
os_printsetupvalid		:: !PrintSetup !*env -> (!Bool,       !*env)
						
class PrintEnvironments printEnv where
	os_printpageperpage :: !Bool !Bool 
						   !.x
						   .(.x -> .(PrintInfo -> .(*Picture -> *((.Bool,Point2),*(.state,*Picture)))))
						   (*(.state,*Picture) -> *((.Bool,Point2),*(.state,*Picture)))
						   !PrintSetup !*printEnv
						-> (Alternative .x .state,!*printEnv)
	os_printsetupdialog	::  !PrintSetup !*printEnv
						-> (!PrintSetup,!*printEnv)
		
instance PrintEnvironments Files
instance PrintEnvironments (PSt .l)

os_printsetuptostring	:: !PrintSetup -> String
os_stringtoprintsetup	:: !String     -> PrintSetup
