home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Tex / td187src.lzh / VARIABLE.D < prev    next >
Text File  |  1991-12-14  |  5KB  |  154 lines

  1. DEFINITION MODULE Variablen;
  2. (* Erweitert um Bezier-Curve, JP *)
  3. (* Erweitert um EPIC-Lines,   JP *)
  4. (* ObjectRecord erweitert,    JP *)
  5.  
  6. FROM MagicSys IMPORT sWORD, sINTEGER, lINTEGER;
  7. FROM Types    IMPORT ExtendedArraySize, ObjectPtrTyp,
  8.                      CodeAryTyp, CharPtrTyp, ExtendedPtrTyp;
  9.  
  10. VAR   FirstObject    : ObjectPtrTyp ;
  11.       LastObject     : ObjectPtrTyp ;
  12.       RefObject      : ObjectPtrTyp ;
  13.       ebuffer        : ARRAY [ 0..ExtendedArraySize ] OF sINTEGER ;
  14.       zoomfak        : LONGREAL ;
  15.  
  16. PROCEDURE Visible ( SurroundRec : ARRAY OF sINTEGER ) : BOOLEAN ;
  17. (* SurroundRec entspricht Surround in ObjectRecTyp *)
  18.  
  19. PROCEDURE Position ( ShowDelta : BOOLEAN;
  20.                      XPos, YPos, XDelta, YDelta : sINTEGER ) ;
  21. (*
  22.    Zeigt die momentane Maus-Position (XPos, YPos) an. Ist ShowDelta TRUE,
  23.    so wird zusätzlich noch der Abstand zum Punkt (XDelta,YDelta) angezeigt.
  24. *)
  25.  
  26. PROCEDURE PixToPic (     xpix , ypix : sINTEGER; VAR xpic , ypic : sINTEGER);
  27. PROCEDURE PicToPix ( VAR xpix , ypix : sINTEGER;     xpic , ypic : sINTEGER);
  28.  
  29. (*
  30.    Mode = 1 :
  31.    Aus den Pixel-Angaben xpix, ypix werden die
  32.    Bild-Koordinaten xpic, ypic berechnet.
  33.    Mode = 2 : genau umgekehrt.
  34. *)
  35.  
  36. PROCEDURE PixDistance ( picdist : sINTEGER ) : sINTEGER;
  37. PROCEDURE PicDistance ( pixdist : sINTEGER ) : sINTEGER;
  38. (*
  39.   Rechnet Pixel-Abstände in PIC-Abstände um und umgekehrt
  40. *)
  41.  
  42. PROCEDURE ZoomMode (zoom : BOOLEAN; factor : LONGREAL);
  43. (*
  44.    Schaltet Zoom-Modus an/aus
  45. *)
  46.  
  47. PROCEDURE NewObject ( Code : CodeAryTyp ;
  48.                       CPtr : CharPtrTyp ;
  49.                       EPtr : ExtendedPtrTyp;
  50.                       Surr : ARRAY OF sWORD ) ;
  51. (*
  52.    Erzeugt ein neues Objekt im Baum. LastObject wird dann auf dieses
  53.    Objekt gesetzt. Ging alles gut so wird ObjectCreated aus CommonData
  54.    auf TRUE gesetzt.
  55. *)
  56.  
  57. PROCEDURE DeleteObject ( Object : ObjectPtrTyp ) ;
  58. (* Korrigiert keine Verweise !!      *)
  59. (* Dies mu₧ von Hand erledigt werden *)
  60.  
  61. PROCEDURE DeleteWholeTree;
  62. (* Löscht alle Objekte *)
  63.  
  64. PROCEDURE MergeToSubpic(LastNormalObject : ObjectPtrTyp;
  65.                         SPX, SPY, SPW, SPH : sINTEGER) ;
  66. (*
  67.    Fa₧t alle Objekte HINTER LastNormalObject zu einem Subpicture zusammen
  68.    SPX..SPH sind die Ma₧e des neuen Subpics.
  69. *)
  70.  
  71. PROCEDURE CheckConsistency;
  72. (*
  73.    Überprüfung auf evtle. Unstimmigkeiten.
  74.    Z.Zt. nur Check auf leere Subpics
  75. *)
  76.  
  77. (* Die Durchmesser der Kreise und Scheiben sind beschränkt. *)
  78. (* Im LaTeX-Manual werden 40 pts bzw. 15 pts angegeben.     *)
  79. (* Somit ergeben sich folgende Radien.                      *)
  80.  
  81. (*
  82.    Merke: Die angegebenen Werte gelten für eine Auflösung
  83.           von 1/4 der momentanen \unitlength
  84.           MaxCircle  MaxDisk
  85.  In mm:      21         8
  86.  In cm:       2         1      (   10mm = 1cm    )
  87.  In pt:      60        24      (    1pt = 0.351mm)
  88.  In pc:       5         2      (    1pc = 12pt   )
  89.  In in:       1         1      (    1in = 72.27pt)
  90.  In bp:      60        24      (    72p = 1in    )
  91.  In dd:      56        23      ( 1157dd = 1238pt )
  92.  In cc:       5         2      (    1cc = 12dd   )
  93.  In sp:   32767     32767      (65536sp = 1pt    )
  94.  In pp:     249       100      (  300pp = 1in    ) (Laserdruckerauflösung)
  95. *)
  96.  
  97. PROCEDURE MaxCircle() : sINTEGER;
  98.  
  99. PROCEDURE MaxDisk() : sINTEGER;
  100.  
  101.  
  102. (*
  103.    Jetzt folgen Prozeduren, die die Umwandlung von Koordinaten in
  104.    Zeichenketten vorsehen:
  105. *)
  106.  
  107. PROCEDURE NumberToStr(number : sINTEGER; VAR str : ARRAY OF CHAR);
  108. (* Wandelt sINTEGER-Zahl in String, keine führenden Blanks *)
  109.  
  110. PROCEDURE FactorToStr(VAR factorstr  : ARRAY OF CHAR);
  111. (* Liefert Vorfaktor für \unitlength *)
  112.  
  113. PROCEDURE UnitToStr(VAR unitstr : ARRAY OF CHAR);
  114. (* Liefert die einfache Einheit, z.B. mm *)
  115.  
  116. PROCEDURE CoordToStr(coord : sINTEGER; VAR str : ARRAY OF CHAR);
  117. (* Liefert Angabe mit Einheit *)
  118.  
  119. PROCEDURE ValueToStr  (value :  sINTEGER; VAR str : ARRAY OF CHAR);
  120. PROCEDURE Value10ToStr(value :  lINTEGER; VAR str : ARRAY OF CHAR);
  121. (*
  122.    Liefert Angabe in Einheiten der Basis-Einheit (pt, cm, mm...)
  123.    ohne Angabe dieser Einheit, also z.B. bei einer unitlength
  124.    von 1/10 * 1cm liefert bei CommonData.InternalResolution=2
  125.    der Integer-Wert von 40 den String "2.000"
  126.    beim Faktor  1/1  : "20.00"
  127.    beim Faktor  1/10 : "2.000"
  128.    beim Faktor  1/100: "0.2000"
  129.    beim Faktor  10/1 : "200.0"
  130.    beim Faktor  100/1: "2000"
  131. *)
  132.  
  133. PROCEDURE SimpleValueToStr  (value :  sINTEGER; VAR str : ARRAY OF CHAR);
  134. PROCEDURE SimpleValue10ToStr(value :  lINTEGER; VAR str : ARRAY OF CHAR);
  135. (*
  136.    Liefert Angabe Als Vielfaches der Basis-Einheit (pt, cm, mm...)
  137.    unter berücksichtigung des Vorfaktors ohne Angabe dieser Einheit,
  138.    also z.B. bei einer unitlength von 1/10 * 1cm liefert bei
  139.    CommonData.InternalResolution=2 der Integer-Wert von 40 den
  140.    String "20.00"
  141. *)
  142.  
  143. PROCEDURE StrToCoord(VAR coord : sINTEGER; VAR str : ARRAY OF CHAR);
  144. (* Wandelt Text in Koordinatenangabe *)
  145.  
  146. PROCEDURE StrToValue(VAR value : sINTEGER; VAR str : ARRAY OF CHAR);
  147. (* Wandelt Text in Wertangabe *)
  148.  
  149. (**
  150. PROCEDURE CheckSentinel(txt : ARRAY OF CHAR);
  151. (* reine Debug-Funktion zum Aufspüren schwer lokalisierbarer Fehler *)
  152. **)
  153. END Variablen .
  154.