Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {$loadlib pumbaa.dll}
- const
- BITMAP_WIDTH = 800;
- BITMAP_HEIGHT = 600;
- AREA_X1 = 25;
- AREA_Y1 = 25;
- AREA_X2 = 775;
- AREA_Y2 = 575;
- PART_WIDTH = 25;
- PART_HEIGHT = 100;
- GENERATE_SIZE = 10000; // Size of random points generated to area..
- DUPLICATES = FALSE;
- {==============================================================================]
- Explanation: Sets points from TPA that are inside bmp as color.
- [==============================================================================}
- procedure SetPixels(bmp: Integer; TPA: TPointArray; color: Integer);
- var
- a, z, w, h: Integer;
- begin
- z := High(TPA);
- if (z > -1) then
- begin
- GetBitmapSize(bmp, w, h);
- for a := 0 to z do
- if ((TPA[a].X >= 0) and (TPA[a].Y >= 0) and (TPA[a].X < w) and (TPA[a].Y < h)) then
- FastSetPixel(bmp, TPA[a].X, TPA[a].Y, color);
- end;
- end;
- var
- bmp, h, i, t: Integer;
- TPA, p: TPointArray;
- ATPA: T2DPointArray;
- bxs: TBoxArray;
- a, b: TBox;
- begin
- ClearDebug;
- b := pp_Box((AREA_X1 + 1), (AREA_Y1 + 1), (AREA_X2 - 1), (AREA_Y2 - 1));
- pp_TPAFromBox(b, GENERATE_SIZE, DUPLICATES, TPA);
- WriteLn('TPA size: ' + IntToStr(Length(TPA)));
- bmp := CreateBitmap(BITMAP_WIDTH, BITMAP_HEIGHT);
- b := pp_Box(AREA_X1, AREA_Y1, AREA_X2, AREA_Y2);
- pp_BoxPartition(b, PART_WIDTH, PART_HEIGHT, bxs);
- pp_TPAFromBoxEdge(bxs, p);
- t := GetSystemTime;
- pp_TPAGrab(TPA, bxs, ATPA);
- WriteLn('TPAGrab took ' + IntToStr(GetSystemTime - t) + ' ms.');
- h := High(ATPA);
- SetPixels(bmp, p, 255);
- for i := 0 to h do
- SetPixels(bmp, ATPA[i], Random(16777216));
- DisplayDebugImgWindow(BITMAP_WIDTH, BITMAP_HEIGHT);
- DrawBitmapDebugImg(bmp);
- end.
Advertisement
Add Comment
Please, Sign In to add comment