home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-08-04 | 1.7 KB | 77 lines | [TEXT/PJMM] |
- unit MyTEPrinting;
-
- interface
-
- uses
- MyPrinting;
-
- type
- TEPObject = object(PObject)
- te: TEHandle;
- function CountPages (r: rect): integer;
- override;
- procedure DrawPage (r: rect; gp: GrafPtr; pg: integer; first, last: boolean);
- override;
- end;
-
- implementation
-
- {$S Printing}
- function GetNextStart (r: rect; startline: integer; te: TEHandle): integer;
- var
- hite, endline: integer;
- begin
- with r do
- hite := bottom - top;
- endline := startline;
- while (endline <= te^^.nLines) & (TEGetHeight(endline, startline, te) < hite) do
- endline := endline + 1;
- GetNextStart := endline;
- end;
-
- {$S Printing}
- function TEPObject.CountPages (r: rect): integer;
- var
- count, startline: integer;
- begin
- count := 0;
- startline := 1;
- while startline <= te^^.nLines do begin
- startline := GetnextStart(r, startline, te);
- count := count + 1;
- end;
- CountPages := count;
- end;
-
- {$S Printing}
- procedure TEPObject.DrawPage (r: rect; gp: GrafPtr; pg: integer; first, last: boolean);
- var
- startline, endline, i, offset: integer;
- oldport, oldinport: GrafPtr;
- vr, dr: rect;
- begin
- Getport(oldport);
- SetPort(gp);
- oldinport := te^^.inPort;
- te^^.inPort := gp;
- vr := te^^.viewRect;
- dr := te^^.destRect;
- startline := 1;
- for i := 1 to pg - 1 do
- startline := GetNextStart(r, startline, te);
- endline := GetNextStart(r, startline, te) - 1;
- r.bottom := r.top + TEGetHeight(endline, startline, te);
- if startline = 1 then
- offset := 0
- else
- offset := TEGetHeight(startline - 1, 1, te);
- te^^.viewRect := r;
- te^^.destRect.top := te^^.viewRect.top - offset;
- TEUpdate(r, te);
- te^^.viewRect := vr;
- te^^.destRect := dr;
- te^^.inPort := oldinport;
- Setport(oldport);
- end;
-
- end.