SCAR Code:
{*******************************************************************************
function PixelShiftMulti(B: TBoxArray; T: Integer): TIntegerArray;
By: marpis
Description: Calculates how many pixels change in boxes B during time T.
Date: Nov. 29, 2009
*******************************************************************************}
function PixelShiftMulti(B: TBoxArray; T: Integer): TIntegerArray;
Var
L, I, X, Y: Integer;
BMP, BMP2: TIntegerArray;
begin
L := Length(B);
SetLength(BMP, L);
SetLength(BMP2, L);
SetLength(Result, L);
{$IFDEF Simba}
for I := 0 to (L - 1) do
BMP[I] := BitmapFromClient(B[i].x1,B[i].y1,B[i].x2,B[i].y2);
Wait(T);
for I := 0 to (L - 1) do
BMP2[I] := BitmapFromClient(B[i].x1,B[i].y1,B[i].x2,B[i].y2);
{$ELSE}
for I := 0 to (L - 1) do
begin
BMP[I] := BitmapFromString((B[I].X2 - B[I].X1), (B[I].Y2 - B[I].Y1), '');
BMP2[I] := BitmapFromString((B[I].X2 - B[I].X1), (B[I].Y2 - B[I].Y1), '');
SafeCopyCanvas(GetClientCanvas, GetBitmapCanvas(BMP[I]), B[I].X1, B[I].Y1, B[I].X2, B[I].Y2, 0, 0, (B[I].X2 - B[I].X1), (B[I].Y2 - B[I].Y1));
end;
Wait(T);
for I := 0 to (L - 1) do
SafeCopyCanvas(GetClientCanvas, GetBitmapCanvas(BMP2[I]), B[I].X1, B[I].Y1, B[I].X2, B[I].Y2, 0, 0, (B[I].X2 - B[I].X1), (B[I].Y2 - B[I].Y1));
{$ENDIF}
for I := 0 to (L - 1) do
for X := 0 to (B[I].X2 - B[I].X1) do
for Y := 0 to (B[I].Y2 - B[I].Y1) do
if (FastGetPixel(BMP[I], X, Y) <> FastGetPixel(BMP2[I], X, Y)) then
Inc(Result[I]);
for I := 0 to (L - 1) do
begin
FreeBitmap(BMP[I]);
FreeBitmap(BMP2[I]);
end;
end;
SCAR Code:
SafeCopyCanvas(GetClientCanvas, GetBitmapCanvas(BMP[I]), B[I].X1, B[I].Y1, B[I].X2, B[I].Y2, 0, 0, (B[I].X2 - B[I].X1), (B[I].Y2 - B[I].Y1));