home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 October
/
Chip_2001-10_cd1.bin
/
zkuste
/
delphi
/
nastroje
/
d3456
/
KBMWABD.ZIP
/
WABD_About.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2001-07-15
|
5KB
|
185 lines
unit WABD_About;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TWABDAboutForm = class(TForm)
Image1: TImage;
Timer1: TTimer;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
X1,X2,X3: Byte;
dX1,dX2,dX3: integer;
sctable: array[0..255] of Byte;
curtext:integer;
curtexttime:integer;
curtextfade:integer;
procedure PrepareImage;
procedure DrawBackground;
procedure DrawText;
procedure SelectIncrements;
public
end;
TWABDAbout = class(TPersistent)
end;
var
WABDAboutForm: TWABDAboutForm;
implementation
uses WABD_Objects;
{$R *.DFM}
procedure TWABDAboutForm.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TWABDAboutForm.SelectIncrements;
begin
dX1:=Random(8)-4;
dX2:=Random(8)-4;
dX3:=Random(8)-4;
end;
{$Q-}
{$R-}
procedure TWABDAboutForm.DrawBackground;
type
dings = array[0..1] of Integer;
var
x,y:integer;
d1,d2,d3:Byte;
p:^dings;
begin
if Random(1000)<2 then SelectIncrements;
for y:=0 to Image1.Picture.Bitmap.Height-1 do
begin
p:=Image1.Picture.Bitmap.scanline[y];
for x:=0 to Image1.Picture.Bitmap.Width-1 do
begin
d1:=x shr 1 + X1;
d2:=y shr 2 + X2;
d3:=x shr 1 + y shr 3 + X3;
p[x]:=rgb(sctable[d1], sctable[d2], sctable[d3]);
end;
end;
inc(X1,dX1);
inc(X2,dX2);
inc(X3,dX3);
end;
{$R+}
{$Q+}
procedure TWABDAboutForm.DrawText;
const
sText:array [0..8] of string = ('kbmWABD',
'Version',
'by',
'Kim Madsen',
'based on code by',
'Ben Ziegler',
'...rapid WEB dev. for real!',
'...the best RWAD around!',
'...and free too!');
sContact='Email: kbm@optical.dk, Web: delphi.e-indexit.com';
var
s:string;
x,y:integer;
begin
with Image1.Picture.Bitmap.Canvas do
begin
// Check if to start fading.
if curtexttime>0 then
begin
curtextfade:=255;
dec(curtexttime);
end
// Check if to fade text.
else if curtextfade>0 then
dec(curtextfade,3)
// Check if to change text.
else
begin
inc(curtext);
if curtext>high(sText) then curtext:=0;
curtexttime:=60;
curtextfade:=255;
end;
case curtext of
0: begin Font.Style:=[fsBold]; Font.Size:=48; end;
1,2: begin Font.Style:=[fsItalic]; Font.Size:=24; end;
4: begin Font.Style:=[fsItalic]; Font.Size:=18; end;
3,5: begin Font.Style:=[]; Font.Size:=36; end;
else begin Font.Style:=[fsItalic]; Font.Size:=18; end;
end;
s:=sText[curtext];
if curtext=1 then s:=s+format(' %2.2f',[WABD_VERSION]);
x:=(Image1.Width-TextWidth(s)) div 2;
y:=(Image1.Height-TextHeight(s)) div 2 - 30;
Font.Color:=clBlack;
TextOut(x+5,y+5,s);
Font.Color:=rgb(255,curtextfade,curtextfade);
TextOut(x,y,s);
Font.Color:=clBlack;
Font.Style:=[];
Font.Size:=10;
TextOut((Image1.Width-TextWidth(sContact)) div 2,(Image1.Height-TextHeight(sContact)),sContact);
end;
end;
procedure TWABDAboutForm.PrepareImage;
var
i:integer;
begin
// Prepare sines.
for i:=0 to 255 do sctable[i] := Round(sin(i / 128 * 3.14) * 127 + 128);
// Prepare animation image.
with Image1.Picture.Bitmap do
begin
Width:=Image1.Width;
Height:=Image1.Height;
PixelFormat := pf32bit;
HandleType:=bmDIB;
Canvas.Font.Size:=36;
Canvas.Font.Name:='Arial';
Canvas.Brush.Style:=bsClear;
end;
curtext:=0;
curtextfade:=255;
curtexttime:=60;
end;
procedure TWABDAboutForm.FormCreate(Sender: TObject);
begin
PrepareImage;
SelectIncrements;
end;
procedure TWABDAboutForm.Timer1Timer(Sender: TObject);
begin
DrawBackground;
DrawText;
Image1.Refresh;
end;
end.