home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
PROG_GEN
/
TCYBER.ZIP
/
CHRPCX.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-01-15
|
3KB
|
34 lines
{
Turbo Vision CyberTools 1.0
(C) 1994 Steve Goldsmith
All Rights Reserved
Load and save 1 bit PCX file using VGA character table. See PCX.PAS for more
info on encoding and decoding .PCX files. See VGA.PAS for more info on
accessing font memory.
}
UNIT CHRPCX;{$I APP.INC} INTERFACE USES DOS,DRIVERS,MEMORY,MSGBOX,VGA,PCX;FUNCTION PCXTOCHRTABLE
(FILENAME:PATHSTR;XLEN,YLEN,CHEIGHT:WORD;CHRTABLEPTR:VGACHRTABLEPTR):BOOLEAN;FUNCTION CHRTABLETOPCX
(FILENAME:PATHSTR;XCHRS,YCHRS,CHEIGHT:WORD;CHRTABLEPTR:VGACHRTABLEPTR):BOOLEAN;
IMPLEMENTATION FUNCTION PCXTOCHRTABLE (FILENAME:PATHSTR;XLEN,YLEN,CHEIGHT:WORD;CHRTABLEPTR:VGACHRTABLEPTR):BOOLEAN;
VAR OOIO,OOIl,OI11II10lI0I,O1lO011OI01l,O1Ol110OlOO0,OOIO1llOlII1,O1l110l010:WORD;OI0ll0IO1O:TDECODEPCXFILE2;
BEGIN PCXTOCHRTABLE:=FALSE;OI0ll0IO1O.INIT (FILENAME);IF OI0ll0IO1O.READERROR=0 THEN BEGIN OI0ll0IO1O.DECODEFILE;
IF OI0ll0IO1O.READERROR=0 THEN BEGIN ACCESSFONTMEM;FOR OOIO:=0 TO VGACHRTABLESIZE-1 DO CHRTABLEPTR^[OOIO ]:=0
;OI11II10lI0I:=0;O1lO011OI01l:=0;O1Ol110OlOO0:=XLEN*VGAMAXCHRHEIGHT;IF OI0ll0IO1O.HEADER.BYTESPERLINE > XLEN
THEN OOIO1llOlII1:=XLEN-1 ELSE OOIO1llOlII1:=OI0ll0IO1O.HEADER.BYTESPERLINE-1;IF OI0ll0IO1O.YSIZE > YLEN*
CHEIGHT THEN O1l110l010:=YLEN*CHEIGHT-1 ELSE O1l110l010:=OI0ll0IO1O.YSIZE-1;FOR OOIl:=0 TO O1l110l010
DO BEGIN FOR OOIO:=0 TO OOIO1llOlII1 DO CHRTABLEPTR^[OOIO*VGAMAXCHRHEIGHT+O1lO011OI01l+OI11II10lI0I ]:=
OI0ll0IO1O.DECODEBUFPTR^[OOIl*OI0ll0IO1O.HEADER.BYTESPERLINE+OOIO ] XOR $ff;INC (OI11II10lI0I);IF OI11II10lI0I
=CHEIGHT THEN BEGIN OI11II10lI0I:=0;O1lO011OI01l:=O1lO011OI01l+O1Ol110OlOO0 END END;ACCESSSCREENMEM;
PCXTOCHRTABLE:=TRUE END END;OI0ll0IO1O.DONE END;FUNCTION CHRTABLETOPCX (FILENAME:PATHSTR;XCHRS,YCHRS,CHEIGHT:WORD;
CHRTABLEPTR:VGACHRTABLEPTR):BOOLEAN;VAR OOIO,OOIl,OI11II10lI0I,O1lO011OI01l,O1Ol110OlOO0,O10O0lIIll000:WORD;
OI0ll0IOOO:TENCODEPCXFILE2;OOO011IOlIOI:VGADATABUFPTR;BEGIN CHRTABLETOPCX:=FALSE;OI0ll0IOOO.INIT (FILENAME);IF
OI0ll0IOOO.WRITEERROR=0 THEN BEGIN OOO011IOlIOI:=MEMALLOC (XCHRS*YCHRS*CHEIGHT);IF OOO011IOlIOI <> NIL THEN
BEGIN ACCESSFONTMEM;OI11II10lI0I:=0;O1lO011OI01l:=0;O1Ol110OlOO0:=XCHRS*VGAMAXCHRHEIGHT;O10O0lIIll000:=
YCHRS*CHEIGHT;FOR OOIl:=0 TO O10O0lIIll000-1 DO BEGIN FOR OOIO:=0 TO XCHRS-1 DO OOO011IOlIOI^[OOIl*XCHRS
+OOIO ]:=CHRTABLEPTR^[OOIO*VGAMAXCHRHEIGHT+O1lO011OI01l+OI11II10lI0I ] XOR $ff;INC (OI11II10lI0I);IF
OI11II10lI0I=CHEIGHT THEN BEGIN OI11II10lI0I:=0;O1lO011OI01l:=O1lO011OI01l+O1Ol110OlOO0 END END;ACCESSSCREENMEM
;OI0ll0IOOO.SETHEADER (XCHRS*8,O10O0lIIll000,1,1);OI0ll0IOOO.WRITEHEADER;OI0ll0IOOO.ENCODEFILE (OOO011IOlIOI);
FREEMEM (OOO011IOlIOI,XCHRS*YCHRS*CHEIGHT);CHRTABLETOPCX:=TRUE END END;OI0ll0IOOO.DONE END;END.