home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / 3dgraf / lbm / showlbm.mod < prev    next >
Text File  |  1992-01-10  |  7KB  |  253 lines

  1. (* ------------------------------------------------------ *)
  2. (*                 SHOWLBM.MOD                            *)
  3. (*           Anzeigen von *.LBM-Bildern                   *)
  4. (*                                                        *)
  5. (*        (C) 1992 Dietmar Ring & DMV-Verlag              *)
  6. (*             Compiler: TopSpeed Modula                  *)
  7. (* ------------------------------------------------------ *)
  8. MODULE showlbm;
  9.  
  10. (* Kommandozeilen-Parameter:                              *)
  11. (* Erster Parameter ist der vollständige Name des Bildes  *)
  12.  
  13. (* Die folgenden Parameter:                               *)
  14. (*╔═════════════════════════════════╤════════════════════╗*)
  15. (*║Bedeutung                        │ Parameter          ║*)
  16. (*╠═════════════════════════════════╪════════════════════╣*)
  17. (*║ Nicht puffern         ?         │     /P             ║*)
  18. (*║ Palette nicht setzen  ?         │     /C             ║*)
  19. (*║ Header zeigen         ?         │     /H             ║*)
  20. (*║ Virtueller Bildschirm ?         │     /V             ║*)
  21. (*║ Weitere Möglichkeiten bei virtuellem Bildschirm:     ║*)
  22. (*║ Horizontale Blende1             │      /2            ║*)
  23. (*║ Horizontale Blende2             │      /3            ║*)
  24. (*║ Vertikale   Blende1             │      /4            ║*)
  25. (*║ Vertikale   Blende2             │      /5            ║*)
  26. (*║                                 │  und /6            ║*)
  27. (*╚═════════════════════════════════╧════════════════════╝*)
  28.  
  29. FROM  Lib    IMPORT  ParamCount,ParamStr;
  30. FROM  IO     IMPORT  WrLn,WrStr,WrCard,WrInt,WrShtCard,
  31.                      WrLngCard,RdKey,KeyPressed;
  32. FROM  FIO    IMPORT  Open,Close,
  33.                      File;
  34. FROM  lbm    IMPORT  LeseBild,ReadHeader,
  35.                      header_typ,speedh,speedv;
  36. FROM  Graph  IMPORT  TextMode;
  37.  
  38. TYPE  string12     = ARRAY[1..12] OF CHAR;
  39.       mode_typ     = RECORD
  40.                       (* Name des Bildes       *)
  41.                       name : ARRAY[1..12] OF CHAR;
  42.                       (* puffern ?             *)
  43.                       tp   : BOOLEAN;
  44.                       (* Farben setzen ?       *)
  45.                       co   : BOOLEAN;
  46.                       (* header anzeigen ?     *)
  47.                       hd   : BOOLEAN;
  48.                       (* Virtueller Bildschirm *)
  49.                       vb   : BOOLEAN;
  50.                       (* Überblendart bei      *)
  51.                       (* Virtuellem Bildschirm *)
  52.                       md   : CARDINAL;
  53.                      END;
  54.  
  55. (********************************************)
  56.  
  57. (* Wartet auf die Betätigung der *)
  58. (* Leertaste, und bricht bei     *)
  59. (* einer Eingabe von X oder x    *)
  60. (* das Programm ab               *)
  61.  
  62. PROCEDURE  Key();
  63. BEGIN
  64.  LOOP
  65.   CASE RdKey() OF
  66.    ' '     :  EXIT;|
  67.    'X','x' :  HALT;
  68.   END;
  69.  END;
  70.  REPEAT
  71.  UNTIL NOT KeyPressed();
  72. END Key;
  73.  
  74. (********************************************)
  75.  
  76. (* Printheader gibt die Daten des Bildes im *)
  77. (* Textmodus auf dem Bildschirm aus         *)
  78.  
  79. PROCEDURE PrintHeader(name : ARRAY OF CHAR);
  80. VAR  datei : File;
  81.      header: header_typ;
  82. BEGIN
  83.  TextMode();
  84.  datei  := Open(name);
  85.  header := ReadHeader(datei);
  86.  Close(datei);
  87.  WITH header DO
  88.        WrStr('Typ der Datei          : ');
  89.        WrStr(typ);
  90.        WrLn;
  91.        WrStr('Länge des Blocks       : ');
  92.        WrLngCard(lang,-4);
  93.        WrLn;
  94.        WrStr('Breite des Bildes      : ');
  95.        WrCard    (breit,-2);
  96.        WrLn;
  97.        WrStr('Höhe des Bildes        : ');
  98.        WrCard    (hoch,-2);
  99.        WrLn;
  100.        WrStr('Referenzpunkt x        : ');
  101.        WrInt     (xpos,-2);
  102.        WrLn;
  103.        WrStr('Referenzpunkt y        : ');
  104.        WrInt     (ypos,-2);
  105.        WrLn;
  106.        WrStr('Anzahl der Bitplanes   : ');
  107.        WrShtCard (tiefe,-1);
  108.        CASE tiefe OF
  109.         4   :  WrStr('    :  ');
  110.                WrStr('16 Farben');|
  111.         8   :  WrStr('    :  ');
  112.                WrStr('256 Farben');
  113.        END;
  114.        WrLn;
  115.        CASE maske OF
  116.          0:WrStr('Keine Maske');
  117.         |1:WrStr('Maske vorhanden');
  118.         |2:WrStr('Durchsichtige Farbe steht in Transparent Color');
  119.         |3:WrStr('Lasso ?');
  120.        END;
  121.        WrLn;
  122.        CASE pack OF
  123.          0:WrStr('Nicht gepackt');
  124.         |1:WrStr('Gepackt');
  125.        END;
  126.        WrLn;
  127.        WrStr('Durchsichtige Farbe    : ');
  128.        WrCard    (transp,-2);
  129.        WrLn;
  130.        WrStr('Seitenverhältnis       : ');
  131.        WrShtCard (xasp,-1);
  132.        WrLn;
  133.        WrStr('Seitenverhältnis       : ');
  134.        WrShtCard (yasp,-1);
  135.        WrLn;
  136.        WrStr('Bildschirmbreite       : ');
  137.        WrInt     (scbreit,-1);
  138.        WrLn;
  139.        WrStr('Bildschirmhöhe         : ');
  140.        WrInt     (schoch,-1);
  141.        WrLn;
  142.        WrStr('Dateilänge             : ');
  143.        WrLngCard(size,4);
  144.        WrLn;
  145.        WrStr('Länge der Graphikdaten : ');
  146.        WrLngCard(graphik,-4);
  147.        WrLn;
  148.        WrStr('Bitte Leertaste drücken   ');
  149.        WrLn;
  150.        WrStr(' X  bricht das Programm ab');
  151.  END;
  152.  Key();
  153. END PrintHeader;
  154.  
  155. (********************************************)
  156.  
  157. (* Wertet die Kommandozeile aus  *)
  158.  
  159. PROCEDURE GetComLine():mode_typ;
  160. CONST  MAX      = 6;
  161. TYPE   string2  = ARRAY[1..2] OF CHAR;
  162. VAR    cline    : string2;
  163.        mode     : mode_typ;
  164.        anzahl   : CARDINAL;
  165.        count    : CARDINAL;
  166. BEGIN
  167.  mode.tp := TRUE;
  168.  mode.co := TRUE;
  169.  mode.hd := FALSE;
  170.  mode.vb := FALSE;
  171.  mode.md := 1;
  172.  anzahl    := ParamCount();
  173.  IF anzahl = 0 THEN
  174.   WrLn;
  175.   WrStr('1. Parameter : Name des Bildes + Extension');
  176.   WrLn;
  177.   WrStr('Weitere optionale Parameter :');
  178.   WrLn;
  179.   WrStr('/P : Daten beim lesen NICHT Puffern (langsam!) ');
  180.   WrLn;
  181.   WrStr('/C : Palette NICHT setzen ');
  182.   WrLn;
  183.   WrStr('/H : Header der Datei vor dem Laden anzeigen ');
  184.   WrLn;
  185.   WrStr('/V : Virtuellen Bildschirm benutzen ');
  186.   WrLn;
  187.   WrStr('Weiterer Parameter wenn /V gesetzt ist: /n ');
  188.   WrLn;
  189.   WrStr('n=1 : Bild direkt kopieren  (Defaultwert) ');
  190.   WrLn;
  191.   WrStr('n=2 : Horizontale Blende : Mitte nach Außen ');
  192.   WrLn;
  193.   WrStr('n=3 : Horizontale Blende : Außen nach Mitte ');
  194.   WrLn;
  195.   WrStr('n=4 : Vertikale Blende Mitte nach Außen ');
  196.   WrLn;
  197.   WrStr('n=5 : Vertikale Blende Außen nach Mitte ');
  198.   WrLn;
  199.   WrStr('n=6 : Effekte die als Anregung zur');
  200.   WrLn;
  201.   WrStr('Weiterentwicklung gedacht sind');
  202.   HALT;
  203.  END;
  204.  IF anzahl > MAX THEN
  205.   anzahl := MAX;
  206.  END;
  207.  ParamStr(mode.name,1);
  208.  FOR count := 2 TO anzahl DO
  209.   ParamStr(cline,count);
  210.   CASE cline[2] OF
  211.    'P','p' : mode.tp := FALSE;|
  212.    'C','c' : mode.co := FALSE;|
  213.    'V','v' : mode.vb := TRUE;|
  214.    'H','h' : mode.hd := TRUE;|
  215.    '2'     : mode.md := 2;|
  216.    '3'     : mode.md := 3;|
  217.    '4'     : mode.md := 4;|
  218.    '5'     : mode.md := 5;|
  219.    '6'     : mode.md := 6;
  220.   END;
  221.  END;
  222.  RETURN(mode);
  223. END GetComLine;
  224.  
  225. (********************************************)
  226.  
  227. (* Zeigt das Bild *)
  228.  
  229. PROCEDURE Show();
  230. VAR   mode  : mode_typ;
  231. BEGIN
  232.  mode := GetComLine();
  233.  IF mode.hd THEN;
  234.   PrintHeader(mode.name);
  235.  END;
  236.  IF LeseBild(mode.name,mode.tp,TRUE,mode.co,TRUE,
  237.              mode.vb,mode.md) <> 0     THEN
  238.   TextMode();
  239.   WrStr('Bild konnte nicht gelesen werden');
  240.   HALT();
  241.  END;
  242.  Key();
  243. END Show;
  244.  
  245. (********************************************)
  246.  
  247. BEGIN
  248.  speedh := 12;
  249.  speedv := 2;
  250.  Show();
  251.  TextMode();
  252. END showlbm.
  253.