home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 8
/
CDASC08.ISO
/
NEWS
/
554
/
AVRIL
/
FADEDEMO.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-10-07
|
2KB
|
69 lines
{─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
Msg : 592 of 708
From : Reynir Stefansson 2:391/20.0 14 Apr 93 17:32
To : All
Subj : Yafir...
────────────────────────────────────────────────────────────────────────────────
Here is yet another fade-in routine. This one does a proportional fade
of all colours. }
PROGRAM FadeDemo;
USES Crt;
CONST PelAddrRgR = $3C7;
PelAddrRgW = $3C8;
PelDataReg = $3C9;
TYPE rgb = RECORD r, g, b : BYTE; END;
VAR i : INTEGER; ch : CHAR; col : ARRAY[0..63] OF rgb;
PROCEDURE GetCol(C : BYTE; VAR R, G, B : BYTE);
BEGIN
Port[PelAddrRgR] := C;
R := Port[PelDataReg];
G := Port[PelDataReg];
B := Port[PelDataReg];
END;
PROCEDURE SetCol(C, R, G, B : BYTE);
BEGIN
Port[PelAddrRgW] := C;
Port[PelDataReg] := R;
Port[PelDataReg] := G;
Port[PelDataReg] := B;
END;
PROCEDURE SetInten(b : BYTE);
VAR i : INTEGER; fr, fg, fb : BYTE;
BEGIN
FOR i := 0 TO 63 DO
BEGIN
fr := col[i].r*b DIV 63;
fg := col[i].g*b DIV 63;
fb := col[i].b*b DIV 63;
SetCol(i, fr, fg, fb);
END;
END;
BEGIN
TextMode(LastMode);
FOR i := 0 TO 63 DO GetCol(i, col[i].r, col[i].g, col[i].b);
FOR i := 1 TO 15 DO
BEGIN
TextAttr := i;
WriteLn('Foreground colour = ', i:2);
END;
ch := ReadKey;
FOR i := 63 DOWNTO 0 DO BEGIN SetInten(i); Delay(20); END;
GotoXY(1, 1);
FOR i := 15 DOWNTO 1 DO
BEGIN
TextAttr := i;
WriteLn('Foreground colour = ', i:2);
END;
FOR i := 0 TO 63 DO BEGIN SetInten(i); Delay(20); END;
ch := ReadKey;
TextMode(LastMode);
END.