home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 148.GRAPHTEX.PAS < prev    next >
Pascal/Delphi Source File  |  1988-06-21  |  3KB  |  132 lines

  1. UNIT GraphText;
  2.  
  3. INTERFACE
  4. USES
  5. {$IFDEF DOSCrt}
  6.    DOSCrt,
  7. {$ELSE}
  8.    Crt,
  9. {$ENDIF}
  10.    Graph,
  11.    TextOps;
  12.  
  13. PROCEDURE Text_To_Cart (    tx,ty : INTEGER;
  14.                         VAR cx,cy : INTEGER);
  15.  
  16. PROCEDURE WriteText (s:STRING; x,y:INTEGER);
  17.  
  18. PROCEDURE ReadText (VAR s:STRING; x,y:INTEGER);
  19.  
  20. PROCEDURE ClearLine (x,y,delta_x : INTEGER);
  21.  
  22. FUNCTION char_width : INTEGER;
  23.  
  24. FUNCTION char_height : INTEGER;
  25.  
  26. (****************************************************************************)
  27.  
  28. IMPLEMENTATION
  29.  
  30. FUNCTION char_width : INTEGER;
  31.  
  32.    BEGIN   {char_width}
  33.       char_width:=succ(GetMaxX) div 80;
  34.    END;   {char_width}
  35.  
  36. {----------------------------------------------------------------------------}
  37.  
  38. FUNCTION char_height : INTEGER;
  39.  
  40.    BEGIN   {char_height}
  41.       char_height:=succ(GetMaxY) div 25;
  42.    END;   {char_height}
  43.  
  44. {----------------------------------------------------------------------------}
  45.  
  46. PROCEDURE Text_To_Cart (    tx,ty : INTEGER;
  47.                         VAR cx,cy : INTEGER);
  48.  
  49.    BEGIN   {Text_To_Cart}
  50.       cx:=(tx-1)*char_width;
  51.       cy:=(ty-1)*char_height;
  52.    END;   {Text_To_Cart}
  53.  
  54. {----------------------------------------------------------------------------}
  55.  
  56. PROCEDURE WriteText (s : STRING;
  57.                      x : INTEGER;
  58.                      y : INTEGER);
  59.  
  60.    CONST
  61.       NormSize = 1;
  62.  
  63.    BEGIN   {WriteText}
  64.       GotoXY (x + length(s),y);
  65.       SetTextStyle (DefaultFont,HorizDir,NormSize);
  66.       SetTextJustify (LeftText,TopText);
  67.       Text_To_Cart (x,y,x,y);
  68.       OutTextXY (x,y,s);
  69.       MoveTo (x+TextWidth(s),y);
  70.    END;   {WriteText}
  71.  
  72. {----------------------------------------------------------------------------}
  73.  
  74. PROCEDURE ReadText (VAR s : STRING;
  75.                         x : INTEGER;
  76.                         y : INTEGER);
  77.  
  78.    VAR
  79.       i, j  : INTEGER;
  80.       ch    : CHAR;
  81.       blank : STRING;
  82.  
  83.    BEGIN   {ReadText}
  84.       i:=x;
  85.       s:='';
  86.       REPEAT
  87.          ch:=ReadKey;
  88.          CASE ch OF
  89.             BACKSPACE: IF i > x THEN BEGIN
  90.                           DEC (i,1);
  91.                           WriteText (' ',i,y);
  92.                           s:=Copy (s,1,Length(s)-1);
  93.                        END;   {IF}
  94.             ESC:       BEGIN
  95.                           blank:='';
  96.                           FOR j:=x TO i-1 DO blank:=blank+' ';
  97.                           WriteText (blank,x,y);
  98.                           s:='';
  99.                           i:=x;
  100.                        END;
  101.             ENTER:     Exit;
  102.             ELSE       BEGIN
  103.                           s:=s+ch;
  104.                           WriteText (ch,i,y);
  105.                           INC (i,1);
  106.                        END;
  107.          END;   {CASE}
  108.       UNTIL FALSE;
  109.    END;   {ReadText}
  110.  
  111.  
  112. {----------------------------------------------------------------------------}
  113.  
  114. PROCEDURE ClearLine (x,y,delta_x : INTEGER);
  115.  
  116.    VAR
  117.       x1,x2,y1,y2 : INTEGER;
  118.       old : ViewPortType;
  119.  
  120.    BEGIN   {ClearLine}
  121.       Text_To_Cart (x,y,x1,y1);
  122.       Text_To_Cart (x+delta_x,y+1,x2,y2);
  123.       GetViewSettings (old);
  124.       SetViewPort (x1,y1,x2,y2,ClipOff);
  125.       ClearViewPort;
  126.       WITH old DO SetViewPort (x1,y1,x2,y2,Clip);
  127.    END;   {ClearLine}
  128.  
  129. (****************************************************************************)
  130.  
  131. BEGIN   {Initialization}
  132. END.   {UNIT GraphText}