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

