[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
Well, some guy from Scotland asked me if it is possible to do a fade
in AniVGA V1.2 which shoves in one half of a picture from the left
side and the other half from the right side.
As it was very easy to do so and the results indeed look GREAT, it may
be of some interest for others, too, so here we go: You may add this
routine to the other fades as usual; I called it
"Fade_HorizontalSplitClose = 30;" Hopefully, I didn't mess things up
by converting the example back to TP 6.0 & AniVGA V1.2 ...
kai.rohrbacher@logo.ka.sub.org
}
{$A+,B-,D+,L+,N-,E-,O-,R-,S-,V-,G-,F-,I-,X+}
{$M 32768,0,655360}
PROGRAM Example8D;
USES ANIVGA;
CONST pic='DOG1.PIC'; {or any other PIC}
picPal1='DOG1.PAL';
{$IFDEF VER60}
Seg0040:WORD=$40;
{$ENDIF}
PROCEDURE HorizontalSplitClose(pa,time:WORD);
{ in: pa = page, which contents will be made visible }
{ time = time (in milliseconds) for this action (approx.) }
{out: - }
{rem: the contents of page "pa" has been copied to page visualPage }
CONST n = (XMAX+1) DIV 2; {number of executions of the delay loop}
VAR counter:WORD;
ClockTicks:^LONGINT; {LONGINT ABSOLUTE $40:$6C geht nicht}
t: LONGINT;
temp:REAL;
mitte,columns:INTEGER;
p:POINTER;
BEGIN
ClockTicks:=Ptr(Seg0040,$6C);
t := ClockTicks^;
counter := 0;
temp := 0.0182*time/n;
mitte:=XMAX SHR 1;
FOR columns:=0 TO mitte DO
BEGIN
p:= GetImage(StartVirtualX+mitte-columns,StartVirtualY,
StartVirtualX+mitte,StartVirtualY+YMAX,pa);
PutImage(StartVirtualX,StartVirtualY,p,1-Page);
FreeImageMem(p);
p:= GetImage(StartVirtualX+mitte+1,StartVirtualY,
StartVirtualX+mitte+1+columns,StartVirtualY+YMAX,pa);
PutImage(StartVirtualX+XMAX-columns,StartVirtualY,p,1-Page);
FreeImageMem(p);
INC(counter);
WHILE (ClockTicks^ < (t+counter*temp)) DO BEGIN END;
END;
{Cleanup:}
(* IF Odd(XMAX+1)
THEN CopyPage(pa,visualPage); *)
END;
VAR pal1:Palette;
i:WORD;
BEGIN
InitGraph;
StartVirtualX:=20; StartVirtualY:=10;
LoadBackgroundPage(pic);
LoadPalette(picPal1,0,pal1); SetPalette(pal1,FALSE);
FillPage(1-Page,0);
FOR i:=1 TO 20000 DO
PutPixel(Random(Succ(XMAX)),Random(Succ(YMAX)),Random(256));
HorizontalSplitClose(BACKGNDPAGE,2000);
CloseRoutines;
END.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]