{UBoxer2} METHODS OF TBox; FUNCTION TBox.CREATE(object: TObject; itsHeap: THeap): TBox; BEGIN {$IFC fTrace}BP(11);{$ENDC} SELF := NewObject(itsHeap, THISCLASS); WITH SELF DO BEGIN shapeLRect := zeroLRect; color := colorGray; END; {$IFC fTrace}EP;{$ENDC} END; {This draw a particular box} PROCEDURE TBox.Draw; VAR lPat: LPattern; BEGIN {$IFC fTrace}BP(10);{$ENDC} PenNormal; IF LRectIsVisible(SELF.shapeLRect) THEN {this box needs to be drawn} BEGIN {Get a Quickdraw pattern to represent the box's color} CASE SELF.color OF colorWhite: lPat := lPatWhite; colorLtGray: lPat := lPatLtGray; colorGray: lPat := lPatGray; colorDkGray: lPat := lPatDkGray; colorBlack: lPat := lPatBlack; OTHERWISE lPat := lPatWhite; {this case should not happen} END; {Fill the box with the pattern, and draw a frame around it} FillLRect(SELF.shapeLRect, lPat); FrameLRect(SELF.shapeLRect); END; {$IFC fTrace}EP;{$ENDC} END; END; METHODS OF TBoxView; FUNCTION TBoxView.CREATE(object: TObject; itsHeap: THeap; itsPanel: TPanel; itsExtent: LRect) : TBoxView; BEGIN {$IFC fTrace}BP(11);{$ENDC} IF object = NIL THEN object := NewObject(itsHeap, THISCLASS); SELF := TBoxView(itsPanel.NewView(object, itsExtent, TPrintManager.CREATE(NIL, itsHeap), stdMargins, TRUE)); {$IFC fTrace}EP;{$ENDC} END; {This draws the list of boxes} PROCEDURE TBoxView.Draw; VAR box: TBox; s: TListScanner; BEGIN {$IFC fTrace}BP(10);{$ENDC} s := SELF.boxList.Scanner; WHILE s.Scan(box) DO box.Draw; {$IFC fTrace}EP;{$ENDC} END; PROCEDURE TBoxView.InitBoxList (itsHeap: THeap); VAR box: TBox; boxList: TList; BEGIN {$IFC fTrace}BP(10);{$ENDC} boxList := TList.CREATE(NIL, itsHeap, 0); SELF.boxList := boxList; {create and append the first box} box := TBox.CREATE(NIL, itsHeap); {$H-} SetLRect(box.shapeLRect, 20,20, 100, 100); {$H+} SELF.boxList.InsLast(box); {create and append the second box} box := TBox.CREATE(NIL, itsHeap); {$H-} SetLRect(box.shapeLRect, 200, 100, 300, 130); {$H+} SELF.boxList.InsLast(box); {$IFC fTrace}EP;{$ENDC} END; END; METHODS OF TBoxProcess; FUNCTION TBoxProcess.CREATE: TBoxProcess; BEGIN {$IFC fTrace}BP(11);{$ENDC} SELF := TBoxProcess(TProcess.CREATE(NewObject(mainHeap,THISCLASS), mainHeap)); {$IFC fTrace}EP;{$ENDC} END; FUNCTION TBoxProcess.NewDocManager(volumePrefix: TFilePath; openAsTool: BOOLEAN): TDocManager; BEGIN {$IFC fTrace}BP(11);{$ENDC} NewDocManager := TBoxDocManager.CREATE(NIL, mainHeap, volumePrefix); {$IFC fTrace}EP;{$ENDC} END; END; METHODS OF TBoxDocManager; FUNCTION TBoxDocManager.CREATE(object: TObject; itsHeap: THeap; itsPathPrefix: TFilePath) : TBoxDocManager; BEGIN {$IFC fTrace}BP(11);{$ENDC} IF object = NIL THEN object := NewObject(itsHeap, THISCLASS); SELF := TBoxDocManager(TDocManager.CREATE(object, itsHeap, itsPathPrefix)); {$IFC fTrace}EP;{$ENDC} END; FUNCTION TBoxDocManager.NewWindow(heap: THeap; wmgrID: TWindowID):TWindow; BEGIN {$IFC fTrace}BP(11);{$ENDC} NewWindow := TBoxWindow.CREATE(NIL, heap, wmgrID); {$IFC fTrace}EP;{$ENDC} END; END; METHODS OF TBoxWindow; FUNCTION TBoxWindow.CREATE(object: TObject; itsHeap: THeap; itsWmgrID: TWindowID): TBoxWindow; CONST isResizable = TRUE; BEGIN {$IFC fTrace}BP(10);{$ENDC} IF object = NIL THEN object := NewObject(itsHeap, THISCLASS); SELF := TBoxWindow(TWindow.CREATE(object, itsHeap, itsWmgrID, isResizable)); {$IFC fTrace}EP;{$ENDC} END; PROCEDURE TBoxWindow.BlankStationery; VAR viewLRect: LRect; panel: TPanel; boxView: TBoxView; BEGIN {$IFC fTrace} BP(10); {$ENDC} {set the view extent LRect} SetLRect(viewLRect,0,0,5000,3000); panel := TPanel.CREATE(NIL, SELF.Heap, SELF, 0, 0, [aBar,aScroll,aSplit], [aBar,aScroll,aSplit]); {initialize the boxView} boxView := TBoxView.CREATE(NIL, SELF.Heap, panel, viewLRect); boxView.InitBoxList(SELF.Heap); {$IFC fTrace} EP; {$ENDC} END; END;