MODULE Printers;
(**
project = "BlackBox"
organization = "www.oberon.ch"
contributors = "Oberon microsystems"
version = "System/Rsrc/About"
copyright = "System/Rsrc/About"
license = "Docu/BB-License"
changes = ""
issues = ""
**)
IMPORT Ports;
TYPE
Printer* = POINTER TO ABSTRACT RECORD
l, t, r, b: INTEGER; (** paper rect relative to port coords **)
res*: INTEGER;
port: Ports.Port
END;
Directory* = POINTER TO ABSTRACT RECORD END;
VAR dir-, stdDir-: Directory;
PROCEDURE (p: Printer) OpenJob* (VAR copies: INTEGER; name: ARRAY OF CHAR), NEW, ABSTRACT;
PROCEDURE (p: Printer) CloseJob* (), NEW, ABSTRACT;
PROCEDURE (p: Printer) OpenPage* (), NEW, ABSTRACT;
PROCEDURE (p: Printer) ClosePage* (), NEW, ABSTRACT;
PROCEDURE (p: Printer) SetOrientation* (landscape: BOOLEAN), NEW, EMPTY;
PROCEDURE (p: Printer) InitPort* (port: Ports.Port), NEW;
BEGIN
ASSERT((p.port = NIL) OR (p.port = port), 20);
p.port := port
END InitPort;
PROCEDURE (p: Printer) ThisPort* (): Ports.Port, NEW;
BEGIN
RETURN p.port
END ThisPort;
PROCEDURE (p: Printer) GetRect* (OUT l, t, r, b: INTEGER), NEW;
BEGIN
l := p.l; t := p.t; r:= p.r; b := p.b
END GetRect;
PROCEDURE (p: Printer) InitPrinter* (l, t, r, b: INTEGER), NEW;
BEGIN
ASSERT(l <= r, 20); ASSERT(t <= b, 21);
p.l := l; p.t := t; p.r := r; p.b := b;
p.res := 0
END InitPrinter;
PROCEDURE (d: Directory) Default* (): Printer, NEW, ABSTRACT;
PROCEDURE (d: Directory) Current* (): Printer, NEW, ABSTRACT;
PROCEDURE (d: Directory) Available* (): BOOLEAN, NEW, ABSTRACT;
PROCEDURE SetDir* (d: Directory);
BEGIN
ASSERT(d # NIL, 20);
dir := d;
IF stdDir = NIL THEN stdDir := d END
END SetDir;
END Printers.