home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / grafik / vgakit / rgb / rgb2tga.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1991-09-17  |  1.3 KB  |  69 lines

  1.  
  2. PROGRAM RGB2TGA;
  3. {
  4.   UMWANDELN EINES RGB- FILES VON THUNDER IN EIN TGA- FILE
  5.  
  6.   Paul Schubert, Rottweiler Str. 8, D6000 Frankfurt /M 1, 069 / 231145
  7.  
  8. }
  9.  
  10.  
  11. TYPE  RGBTYP = RECORD R,G,B : BYTE END;
  12.  
  13.  
  14. CONST HDR1 : ARRAY[0..11] OF BYTE = (0,0,2,0, 0,0,0,0, 0,0,0,0);
  15.       HDR2 : ARRAY[0.. 1] OF BYTE = ($18,$20);
  16.  
  17.  
  18. VAR   I,J,K    : INTEGER;
  19.       BB       : BYTE;
  20.       W        : WORD;
  21.       BUF      : ARRAY[0..$3FFF] OF RGBTYP;
  22.       F1,F2    : FILE;
  23.       S,N1,N2  : STRING;
  24.  
  25.  
  26. BEGIN
  27.   IF PARAMCOUNT = 0 THEN HALT;
  28.   S := PARAMSTR(1);
  29.   I := POS('.',S);
  30.   IF I > 0 THEN DELETE(S,I,4);
  31.   N1 := S + '.RGB';
  32.   N2 := S + '.TGA';
  33.   ASSIGN(F1,N1);
  34.   RESET(F1,1);
  35.   ASSIGN(F2,N2);
  36.   REWRITE(F2,1);
  37.   BLOCKREAD(F1,BUF,4);
  38.   BLOCKWRITE(F2,HDR1,SIZEOF(HDR1));
  39.   BLOCKWRITE(F2,BUF,4);
  40.   BLOCKWRITE(F2,HDR2,SIZEOF(HDR2));
  41.  
  42.   REPEAT
  43. (*
  44.   WHILE NOT EOF(F1) DO BEGIN
  45. *)
  46.     BLOCKREAD(F1,BUF,SIZEOF(BUF),W);
  47.     IF W > 0 THEN BEGIN
  48. (*
  49. WRITE(W:6,W DIV 3:6,'        ');
  50. *)
  51.       FOR I := 0 TO (PRED(W) DIV 3) DO BEGIN
  52.         WITH BUF[I] DO BEGIN
  53.           BB := R;
  54.           R  := B;
  55.           B  := BB;
  56.         END; { WITH }
  57.       END; { NEXT I }
  58.       BLOCKWRITE(F2,BUF,W);
  59.     END;
  60. (*
  61.   END;
  62. *)
  63.   UNTIL (W < SIZEOF(BUF));
  64.   CLOSE(F2);
  65.   CLOSE(F1);
  66.  
  67. END.
  68.  
  69.