home *** CD-ROM | disk | FTP | other *** search
/ Intermedia 1998 January / inter1_98.iso / www / rozi / PCX.ZIP / PCX256.PAS next >
Pascal/Delphi Source File  |  1996-04-04  |  927b  |  55 lines

  1. {$M 16384,0,200000}
  2. program PCX256;
  3. uses PCX256UN,crt;
  4. var
  5. f:file;
  6. x,y,n:word;
  7. H:PCXHeader;
  8. Line:ScanLine;
  9. RGB:ExtPalette;
  10. ReadByte:byte;
  11. ByteOffset:word;
  12. RepCount,k:byte;
  13. i:word;
  14. procedure rys(naz:string);
  15. begin
  16. ReadPCXHeader(naz,H);
  17. ReadExtendedPalette(naz,RGB);
  18. InstallExtendedPalette(RGB);
  19. {SetGrayDisplay;}
  20. assign(f,naz);
  21. reset(f,1);
  22. seek(f,128);
  23. x:=0;
  24. for y:=H.YMIN to H.YMAX do
  25. begin
  26. ByteOffset:=0;
  27. while ByteOffset<H.BYtesPerLine do
  28. begin
  29. Blockread(f,ReadByte,1);
  30. if (ReadByte and $C0)=$C0 THEN
  31. begin
  32. RepCount:=ReadByte and $3f;
  33. blockread(f,readbyte,1);
  34. for k:=1 to repcount do
  35. begin
  36. Line[ByteOffset]:=ReadByte;
  37. inc(ByteOffset);
  38. end;
  39. end else
  40. begin
  41. Line[ByteOffset]:=ReadByte;
  42. inc(ByteOffset);
  43. end;
  44. end;
  45. CopyToVRAM(@Line,GetPixel256Addr(x,y),h.BytesPerLine);
  46. end;
  47. close(f);
  48. end;
  49. begin
  50. VGAInit(VGA_256);
  51. repeat
  52. rys('1.pcx');
  53. until keypressed;
  54. VGAInit(Vga_Text);
  55. end.