Janilabo

project

Sep 12th, 2013
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.68 KB | None | 0 0
  1. {$loadlib pumbaa.dll}
  2.  
  3. const
  4.   BITMAP_WIDTH = 800;
  5.   BITMAP_HEIGHT = 600;
  6.   AREA_X1 = 25;
  7.   AREA_Y1 = 25;
  8.   AREA_X2 = 775;
  9.   AREA_Y2 = 575;
  10.   PART_WIDTH = 25;
  11.   PART_HEIGHT = 100;
  12.   GENERATE_SIZE = 10000; // Size of random points generated to area..
  13.   DUPLICATES = FALSE;
  14.  
  15. {==============================================================================]
  16.   Explanation: Sets points from TPA that are inside bmp as color.
  17. [==============================================================================}
  18. procedure SetPixels(bmp: Integer; TPA: TPointArray; color: Integer);
  19. var
  20.   a, z, w, h: Integer;
  21. begin
  22.   z := High(TPA);
  23.   if (z > -1) then
  24.   begin
  25.     GetBitmapSize(bmp, w, h);
  26.     for a := 0 to z do
  27.       if ((TPA[a].X >= 0) and (TPA[a].Y >= 0) and (TPA[a].X < w) and (TPA[a].Y < h)) then
  28.         FastSetPixel(bmp, TPA[a].X, TPA[a].Y, color);
  29.   end;
  30. end;
  31.  
  32. var
  33.   bmp, h, i, t: Integer;
  34.   TPA, p: TPointArray;
  35.   ATPA: T2DPointArray;
  36.   bxs: TBoxArray;
  37.   a, b: TBox;
  38.  
  39. begin
  40.   ClearDebug;
  41.   b := pp_Box((AREA_X1 + 1), (AREA_Y1 + 1), (AREA_X2 - 1), (AREA_Y2 - 1));
  42.   pp_TPAFromBox(b, GENERATE_SIZE, DUPLICATES, TPA);
  43.   WriteLn('TPA size: ' + IntToStr(Length(TPA)));
  44.   bmp := CreateBitmap(BITMAP_WIDTH, BITMAP_HEIGHT);
  45.   b := pp_Box(AREA_X1, AREA_Y1, AREA_X2, AREA_Y2);
  46.   pp_BoxPartition(b, PART_WIDTH, PART_HEIGHT, bxs);
  47.   pp_TPAFromBoxEdge(bxs, p);
  48.   t := GetSystemTime;
  49.   pp_TPAGrab(TPA, bxs, ATPA);
  50.   WriteLn('TPAGrab took ' + IntToStr(GetSystemTime - t) + ' ms.');
  51.   h := High(ATPA);
  52.   SetPixels(bmp, p, 255);
  53.   for i := 0 to h do
  54.     SetPixels(bmp, ATPA[i], Random(16777216));
  55.   DisplayDebugImgWindow(BITMAP_WIDTH, BITMAP_HEIGHT);
  56.   DrawBitmapDebugImg(bmp);
  57. end.
Advertisement
Add Comment
Please, Sign In to add comment