home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_GEN / TCYBER.ZIP / CHRPCX.PAS < prev    next >
Pascal/Delphi Source File  |  1994-01-15  |  3KB  |  34 lines

  1. {
  2. Turbo Vision CyberTools 1.0
  3. (C) 1994 Steve Goldsmith
  4. All Rights Reserved
  5.  
  6. Load and save 1 bit PCX file using VGA character table. See PCX.PAS for more
  7. info on encoding and decoding .PCX files. See VGA.PAS for more info on
  8. accessing font memory.
  9. }
  10.  
  11. UNIT CHRPCX;{$I APP.INC} INTERFACE USES DOS,DRIVERS,MEMORY,MSGBOX,VGA,PCX;FUNCTION PCXTOCHRTABLE
  12. (FILENAME:PATHSTR;XLEN,YLEN,CHEIGHT:WORD;CHRTABLEPTR:VGACHRTABLEPTR):BOOLEAN;FUNCTION CHRTABLETOPCX
  13. (FILENAME:PATHSTR;XCHRS,YCHRS,CHEIGHT:WORD;CHRTABLEPTR:VGACHRTABLEPTR):BOOLEAN;
  14. IMPLEMENTATION FUNCTION PCXTOCHRTABLE (FILENAME:PATHSTR;XLEN,YLEN,CHEIGHT:WORD;CHRTABLEPTR:VGACHRTABLEPTR):BOOLEAN;
  15. VAR OOIO,OOIl,OI11II10lI0I,O1lO011OI01l,O1Ol110OlOO0,OOIO1llOlII1,O1l110l010:WORD;OI0ll0IO1O:TDECODEPCXFILE2;
  16. BEGIN PCXTOCHRTABLE:=FALSE;OI0ll0IO1O.INIT (FILENAME);IF OI0ll0IO1O.READERROR=0 THEN BEGIN OI0ll0IO1O.DECODEFILE;
  17. IF OI0ll0IO1O.READERROR=0 THEN BEGIN ACCESSFONTMEM;FOR OOIO:=0 TO VGACHRTABLESIZE-1 DO CHRTABLEPTR^[OOIO ]:=0
  18. ;OI11II10lI0I:=0;O1lO011OI01l:=0;O1Ol110OlOO0:=XLEN*VGAMAXCHRHEIGHT;IF OI0ll0IO1O.HEADER.BYTESPERLINE > XLEN
  19. THEN OOIO1llOlII1:=XLEN-1 ELSE OOIO1llOlII1:=OI0ll0IO1O.HEADER.BYTESPERLINE-1;IF OI0ll0IO1O.YSIZE > YLEN*
  20. CHEIGHT THEN O1l110l010:=YLEN*CHEIGHT-1 ELSE O1l110l010:=OI0ll0IO1O.YSIZE-1;FOR OOIl:=0 TO O1l110l010
  21.  DO BEGIN FOR OOIO:=0 TO OOIO1llOlII1 DO CHRTABLEPTR^[OOIO*VGAMAXCHRHEIGHT+O1lO011OI01l+OI11II10lI0I ]:=
  22. OI0ll0IO1O.DECODEBUFPTR^[OOIl*OI0ll0IO1O.HEADER.BYTESPERLINE+OOIO ] XOR $ff;INC (OI11II10lI0I);IF OI11II10lI0I
  23. =CHEIGHT THEN BEGIN OI11II10lI0I:=0;O1lO011OI01l:=O1lO011OI01l+O1Ol110OlOO0 END END;ACCESSSCREENMEM;
  24. PCXTOCHRTABLE:=TRUE END END;OI0ll0IO1O.DONE END;FUNCTION CHRTABLETOPCX (FILENAME:PATHSTR;XCHRS,YCHRS,CHEIGHT:WORD;
  25. CHRTABLEPTR:VGACHRTABLEPTR):BOOLEAN;VAR OOIO,OOIl,OI11II10lI0I,O1lO011OI01l,O1Ol110OlOO0,O10O0lIIll000:WORD;
  26. OI0ll0IOOO:TENCODEPCXFILE2;OOO011IOlIOI:VGADATABUFPTR;BEGIN CHRTABLETOPCX:=FALSE;OI0ll0IOOO.INIT (FILENAME);IF
  27. OI0ll0IOOO.WRITEERROR=0 THEN BEGIN OOO011IOlIOI:=MEMALLOC (XCHRS*YCHRS*CHEIGHT);IF OOO011IOlIOI <> NIL THEN
  28. BEGIN ACCESSFONTMEM;OI11II10lI0I:=0;O1lO011OI01l:=0;O1Ol110OlOO0:=XCHRS*VGAMAXCHRHEIGHT;O10O0lIIll000:=
  29. YCHRS*CHEIGHT;FOR OOIl:=0 TO O10O0lIIll000-1 DO BEGIN FOR OOIO:=0 TO XCHRS-1 DO OOO011IOlIOI^[OOIl*XCHRS
  30. +OOIO ]:=CHRTABLEPTR^[OOIO*VGAMAXCHRHEIGHT+O1lO011OI01l+OI11II10lI0I ] XOR $ff;INC (OI11II10lI0I);IF
  31. OI11II10lI0I=CHEIGHT THEN BEGIN OI11II10lI0I:=0;O1lO011OI01l:=O1lO011OI01l+O1Ol110OlOO0 END END;ACCESSSCREENMEM
  32. ;OI0ll0IOOO.SETHEADER (XCHRS*8,O10O0lIIll000,1,1);OI0ll0IOOO.WRITEHEADER;OI0ll0IOOO.ENCODEFILE (OOO011IOlIOI);
  33. FREEMEM (OOO011IOlIOI,XCHRS*YCHRS*CHEIGHT);CHRTABLETOPCX:=TRUE END END;OI0ll0IOOO.DONE END;END.
  34.