procedure Gray(bmp: TBitmap); var p: PByteArray; w: Integer; i, j: Integer; begin bmp.pixelformat := pf24bit; for i := 0 to bmp.height - 1 do begin p := bmp.scanline[i]; j := 0; while j < (bmp.width-1) * 3 do begin w :=(p[j] * 28 + p[j+1] * 151 + p[j+2]*77); w := w shr 8; p[j] := byte(w); p[j+1] := byte(w); p[j+2] := byte(w); inc(j, 3) end; end; end;
procedure Twist(var Bmp, Dst: TBitmap; Amount: integer); var fxmid, fymid : Single; txmid, tymid : Single; fx,fy : Single; tx2, ty2 : Single; r : Single; theta : Single; ifx, ify : integer; dx, dy : Single; OFFSET : Single; ty, tx : Integer; weight_x, weight_y : array[0..1] of Single; weight : Single; new_red, new_green : Integer; new_blue : Integer; total_red, total_green : Single; total_blue : Single; ix, iy : Integer; sli, slo : PBytearray; function ArcTan2(xt,yt : Single): Single; begin if xt = 0 then if yt > 0 then Result := Pi/2 else Result := -(Pi/2) else begin Result := ArcTan(yt/xt); if xt < 0 then Result := Pi + ArcTan(yt/xt); end; end;
var
p: PByteArray;
w: Integer;
i, j: Integer;
begin
bmp.pixelformat := pf24bit;
for i := 0 to bmp.height - 1 do
begin
p := bmp.scanline[i];
j := 0;
while j < (bmp.width-1) * 3 do
begin
w :=(p[j] * 28 + p[j+1] * 151 + p[j+2]*77);
w := w shr 8;
p[j] := byte(w);
p[j+1] := byte(w);
p[j+2] := byte(w);
inc(j, 3)
end;
end;
end;
var
fxmid, fymid : Single;
txmid, tymid : Single;
fx,fy : Single;
tx2, ty2 : Single;
r : Single;
theta : Single;
ifx, ify : integer;
dx, dy : Single;
OFFSET : Single;
ty, tx : Integer;
weight_x, weight_y : array[0..1] of Single;
weight : Single;
new_red, new_green : Integer;
new_blue : Integer;
total_red, total_green : Single;
total_blue : Single;
ix, iy : Integer;
sli, slo : PBytearray; function ArcTan2(xt,yt : Single): Single;
begin
if xt = 0 then
if yt > 0 then
Result := Pi/2
else
Result := -(Pi/2)
else begin
Result := ArcTan(yt/xt);
if xt < 0 then
Result := Pi + ArcTan(yt/xt);
end;
end;