home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / grafik / vgakit / gif / source / gifmisc.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1991-10-16  |  2.8 KB  |  135 lines

  1.  
  2. UNIT GIFMISC;
  3. {
  4.   Modul GIFMISC für Programm GIF
  5.  
  6.   * Prozeduren, die den UNITS zur Verfügung stehen müssen, aber nicht
  7.   * als Overlays geladen werden sollen
  8.  
  9.   Paul Schubert, Rottweiler Str. 8, D6000 Frankfurt /M 1, 069 / 231145
  10.  
  11. }
  12. {$F+}
  13.  
  14.  
  15. INTERFACE
  16.  
  17.  
  18. USES  DOS,TPCRT,TPSTRING
  19.       ,TPMOUSE,TPTIMER
  20.       ,SELECTD,SVGA1
  21.       ,GIFVAR
  22.       ;
  23.  
  24.  
  25. FUNCTION  PATHNAME(NAME:STRING):STRING;
  26. PROCEDURE AUS;
  27. PROCEDURE CHECKESC;
  28. PROCEDURE NEWDELAY(ZEIT:WORD);
  29. PROCEDURE NEWI1C; INTERRUPT;
  30. PROCEDURE MYEXIT;
  31.  
  32.  
  33. IMPLEMENTATION
  34.  
  35.  
  36. PROCEDURE NEWI1C;
  37. VAR   I,J  : INTEGER;
  38. BEGIN
  39.   IF ANIMATE THEN BEGIN
  40.     FOR I := 1 TO CRZ DO BEGIN
  41.       WITH CR[I] DO BEGIN
  42.         DEC(COUNT);
  43.         IF COUNT <= 0 THEN BEGIN
  44.           COUNT := TIME;
  45.           IF INCR < 0 THEN BEGIN
  46.             FOR J := 1 TO ABS(INCR) DO BEGIN
  47.               COL := DIAPAL[STOP];
  48.               MOVE(DIAPAL[START],
  49.                    DIAPAL[SUCC(START)],
  50.                    SIZEOF(VGAPALETTETYP) - 3 * (256 - STOP + START));
  51.               DIAPAL[START] := COL;
  52.             END; { NEXT J }
  53.           END ELSE BEGIN
  54.             FOR J := 1 TO INCR DO BEGIN
  55.               COL := DIAPAL[START];
  56.               MOVE(DIAPAL[SUCC(START)],
  57.                    DIAPAL[START],
  58.                    SIZEOF(VGAPALETTETYP) - 3 * (256 - STOP + START));
  59.               DIAPAL[STOP] := COL;
  60.             END; { NEXT J }
  61.           END;
  62.         END;
  63.       END; { WITH }
  64.     END; { NEXT I }
  65.   END; { IF ANIMATE }
  66. END; { NEWI1C }
  67.  
  68.  
  69. PROCEDURE NEWDELAY(ZEIT:WORD);
  70. VAR   START,STOP  : LONGINT;
  71.       R           : REAL;
  72.       CH1         : CHAR;
  73. BEGIN
  74.   START := READTIMER;
  75.   REPEAT
  76.     R := ELAPSEDTIME(START,STOP); { ZEITVERBRATER IST FÜR 20 MHz- NEAT NÖTIG }
  77.     STOP := READTIMER;
  78.   UNTIL (ROUND(ELAPSEDTIME(START,STOP)) >= (10 * LONGINT(ZEIT))) OR
  79.         KEYPRESSED OR MOUSEPRESSED;
  80.   CH1 := ' ';
  81.   WHILE KEYPRESSED DO CH1 := READKEY;
  82.   IF CH1 = ^[ THEN AUS;
  83. END;
  84.  
  85.  
  86. PROCEDURE CHECKESC;
  87. VAR   MKB  : WORD;
  88. BEGIN
  89.   IF KEYPRESSED THEN BEGIN
  90.     IF READKEY = ^[ THEN AUS;
  91.     WHILE KEYPRESSED DO IF READKEY = ^[ THEN AUS;
  92.   END;
  93.   IF MOUSEPRESSED THEN BEGIN
  94.     MKB := READKEYORBUTTON;
  95.     IF MKB = MOUSERT THEN AUS;
  96.   END;
  97. END; { CHECKESC }
  98.  
  99.  
  100. PROCEDURE MYEXIT;
  101. BEGIN
  102.   IF OLDI1C <> NIL THEN SETINTVEC($1C,OLDI1C);
  103.   EXITPROC := EXITSAVE;
  104. END; { MYEXIT }
  105.  
  106.  
  107. PROCEDURE AUS;
  108. BEGIN
  109. {$I-}
  110.   CHDIR(QUELLDIR);
  111. {$I+}
  112.   IF NOT GRAPHEXIT THEN TEXTMODE(CO80);
  113.   HALT(3);
  114. END; { AUS }
  115.  
  116.  
  117. { DIE ETWAS UMFANGREICHERE AUFBEREITUNG DES PATHNAMENS IST LEIDER NICHT
  118.   ZU UMGEHEN !
  119. }
  120. FUNCTION PATHNAME(NAME:STRING):STRING;
  121. VAR   S  : STRING;
  122. BEGIN
  123.   IF LENGTH(NAME) = 0 THEN BEGIN
  124.     PATHNAME := '';
  125.     EXIT;
  126.   END;
  127.   S := JUSTPATHNAME(NAME);
  128.   IF NOT (S[LENGTH(S)] IN ['\',':']) THEN S := S + '\';
  129.   PATHNAME := S;
  130. END; { PATHNAME }
  131.  
  132.  
  133. END.
  134.  
  135.