home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / tech / protocol.hqx / ProtocolSources.pit / UProtocolchart.p < prev   
Encoding:
Text File  |  1985-07-10  |  2.9 KB  |  107 lines

  1. {copyright 1986 by Herb Barad}
  2. {Protocol is a program to produce a PICT representation of a class}
  3. {hierarchy from a textual description.}
  4. {parts from Flow MacApp sample - copyright 1986 by Apple Computer}
  5.  
  6. UNIT UProtocolChart;
  7.  
  8. INTERFACE
  9.  
  10. {$R-}
  11.  
  12. USES
  13.     MemTypes, QuickDraw, OSIntf, ToolIntf,
  14.     UObject;
  15.  
  16.  CONST
  17.  
  18.   maxDepth = 60;
  19.   kMaxNumStr = 2;
  20.  
  21.  TYPE
  22.  
  23.   String80 = STRING[80];
  24.   KeyStr = STRING[8];
  25.   NumStr = STRING[kMaxNumStr];
  26.  
  27.  
  28.   KShape = (shNone, shRectNone, shRect, shOval, shRoundRect, shDRect);
  29.  
  30.   KAlignment = (alLeft, alMiddle,alRight);
  31.  
  32.   KMultiLine = (mlNone, mlFirst, mlMiddle, mlEnd);
  33.  
  34.   TNode = OBJECT (TObject)
  35.     fFirstChild, fNextChild : TNode;
  36.     fTree: TTree;
  37.     fBounds : Rect;
  38.     fAlignment : KAlignment;
  39.     fFace : Style;
  40.     fShapeKind : KShape;
  41.     fDoubled: BOOLEAN;
  42.     fCaption : String80;
  43.     fNumber : NumStr; {if <> '' then draw a "numbered" circle}
  44.  
  45.     PROCEDURE TNode.INode(aTree: TTree;
  46.             aCaption : String80;
  47.             anAlignment : KAlignment;
  48.             aStyle : Style;
  49.             aShape : KShape;
  50.             aNumber : NumStr);
  51.     PROCEDURE TNode.Free; OVERRIDE;
  52. {$IFC qDebug}
  53.     PROCEDURE TNode.Inspect; OVERRIDE;
  54. {$ENDC}
  55.     PROCEDURE TNode.AddChild (child : TNode);
  56.     PROCEDURE TNode.AddLinkHeight (sib : TNode;
  57.             VAR v : INTEGER);
  58.     PROCEDURE TNode.MeasureText (VAR topToBase, topToBottom, leftToRight : INTEGER);
  59.     PROCEDURE TNode.Condense;
  60.     PROCEDURE TNode.Draw(area: Rect; forPicture: BOOLEAN);
  61.     PROCEDURE TNode.DrawCaption(forPicture: BOOLEAN);
  62.     PROCEDURE TNode.DrawChildren(area: Rect; forPicture: BOOLEAN);
  63.     PROCEDURE TNode.DrawEnclosure(forPicture: BOOLEAN);
  64.     PROCEDURE TNode.DrawLink(sib : TNode; forPicture: BOOLEAN);
  65.     PROCEDURE TNode.DrawNumber(area: Rect; forPicture: BOOLEAN; endCaption: Point);
  66.     PROCEDURE TNode.Locate (middle : INTEGER;
  67.             VAR v : INTEGER);
  68.     PROCEDURE TNode.Measure (VAR dh, dv : INTEGER);
  69.    END;
  70.  
  71.   Path = array[-1..maxDepth] OF TNode;
  72.  
  73.   TTree = OBJECT (TObject)
  74.     fTypeFont, fTypeSize, fPenThickness, fSpacing, fShadow: INTEGER;
  75.     fHead : TNode; {only valid after Layout}
  76.     fPath : Path; {Last node created at each level}
  77.     fLastLevel: INTEGER; {Level of last node added}
  78.  
  79.     PROCEDURE TTree.ITree (aTypeFont, aTypeSize : INTEGER; shadowed: BOOLEAN);
  80.     PROCEDURE TTree.Free; OVERRIDE;
  81.     PROCEDURE TTree.Draw(area: Rect; forPicture: BOOLEAN);
  82.     PROCEDURE TTree.GenLine (inputLine : String80);
  83.     PROCEDURE TTree.GenNode (level : INTEGER;
  84.             aCaption : String80;
  85.             anAlignment : KAlignment;
  86.             aStyle : Style;
  87.             aShape : KShape;
  88.             aNumber : NumStr);
  89.     PROCEDURE TTree.Layout (VAR viewRect : Rect);
  90.     PROCEDURE TTree.SetFont (aTypeFont: INTEGER);
  91.     PROCEDURE TTree.SetSize (aTypeSize: INTEGER);
  92.     PROCEDURE TTree.SetThickness (aPenThickness : INTEGER);
  93.    END;
  94.  
  95.  
  96.  VAR gNowPrinting: BOOLEAN; {must be set by USER before calling TTree.Layout or TTree.Draw}
  97.  
  98.     PROCEDURE InitProtocolchart;
  99.     PROCEDURE AddKeyword(aKeyWord: KeyStr; aShape: KShape; anAlignment: KAlignment; aStyle: Style);
  100.  
  101.  
  102. IMPLEMENTATION
  103.  
  104. {$I UProtocolchart.inc1.p}
  105.  
  106. END.
  107.