Janilabo

example

Aug 23rd, 2013
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 30.92 KB | None | 0 0
  1. {$loadlib tpadistribute.dll}
  2.  
  3. // TPADistribute contains these 2 commands:
  4. // procedure TPADistribute(TPA: TPointArray; dist: Extended; var output: T2DPointArray);
  5. // procedure TPADistributeEx(TPA: TPointArray; minDist, maxDist: Extended; var output: T2DPointArray);
  6.  
  7. const
  8.   DELAY = 2000; // Delay before actual "show" starts for both commands..
  9.   EXAMPLE = 3; // 1-3... NOTE: Example 1 is REALLY slow for SplitTPA (takes maybe couple minutes?)
  10.   DIST = 5;
  11.   DISTRIBUTE_OUTLINES = 16711680; // Color of bounds for all ATPAs by TPADistribute
  12.   SPLIT_OUTLINES = 255; // Color of bounds for all ATPAs by SplitTPA
  13.   OVERLAP_OUTLINES = 32768;
  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. {==============================================================================]
  33.   Explanation: Returns all the color points from bitmap as TPointArray.
  34.                Result is based on Row-by-Row.
  35. [==============================================================================}
  36. function GetBitmapColorTPA(bmp: Integer; color: Integer): TPointArray;
  37. var
  38.   w, h, x, y, r: Integer;
  39. begin
  40.   try
  41.     GetBitmapSize(bmp, w, h);
  42.   except
  43.   end;
  44.   if ((w > 0) and (h > 0)) then
  45.   begin
  46.     SetLength(Result, (w * h));
  47.     for y := 0 to (h - 1) do
  48.       for x := 0 to (w - 1) do
  49.         if (FastGetPixel(bmp, x, y) = color) then
  50.         begin
  51.           Result[r] := Point(x, y);
  52.           Inc(r);
  53.         end;
  54.   end;
  55.   SetLength(Result, r);
  56. end;
  57.  
  58. procedure DrawBounds(var bmp: Integer; ATPA: T2DPointArray; color: Integer);
  59. var
  60.   w, h, l, i, x, y: Integer;
  61.   b: TBox;
  62. begin
  63.   GetBitmapSize(bmp, w, h);
  64.   l := Length(ATPA);
  65.   for i := 0 to (l - 1) do
  66.   begin
  67.     b := GetTPABounds(ATPA[i]);
  68.     b.X1 := (b.X1 - 1);
  69.     b.Y1 := (b.Y1 - 1);
  70.     b.X2 := (b.X2 + 1);
  71.     b.Y2 := (b.Y2 + 1);
  72.     for x := b.X1 to b.X2 do
  73.       if ((x > -1) and (b.Y1 > -1) and (x < w) and (b.Y1 < h)) then
  74.         FastSetPixel(bmp, x, b.Y1, color);
  75.     for y := b.Y1 to b.Y2 do
  76.       if ((b.X2 > -1) and (y > -1) and (b.X2 < w) and (y < h)) then
  77.         FastSetPixel(bmp, b.X2, y, color);
  78.     for x := b.X2 downto b.X1 do
  79.       if ((x > -1) and (b.Y2 > -1) and (x < w) and (b.Y2 < h)) then
  80.         FastSetPixel(bmp, x, b.Y2, color);
  81.     for y := b.Y2 downto b.Y1 do
  82.       if ((b.X1 > -1) and (y > -1) and (b.X1 < w) and (y < h)) then
  83.       FastSetPixel(bmp, b.X1, y, color);
  84.   end;
  85. end;
  86.  
  87. procedure Test;
  88. var
  89.   TPA: TPointArray;
  90.   ATPA: T2DPointArray;
  91.   bmp, t, w, h: Integer;
  92. begin
  93.   ClearDebug;
  94.   case EXAMPLE of
  95.     1: bmp := BitmapFromString(1000, 600, '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');
  96.     2: bmp := BitmapFromString(449, 268, 'meJzt1lFy7DYMRUHvf9POx1SmHJdjSyBAUkT3CjzC5Xnv8xMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgj7yrP4pAPMkxlNIgT6K4qmiQAfVCVVR4FQT+imhwKnmJFRFoYOG711CgRQ9n7yEAil6PnkJBca1ffUSCoxr++ollCUM4zBtX/2sgrb4mFxhHufp/PBretnxS/InIzlV55vmNdLr4H+ZysGaHzRaxNtW/1DWMJjjNT9leOF3rf6hzGY2TTQ/YsrOr1j9Q5nHePpwwfS1N/yGvJlQN25Xuvkm35AXK2rI7erW3uQD8mZFTzfhgtet/hhX+SBksaJHm3C+u1Z/kkt8CrIY0nNNuF3M6g9zie9ACkN6rgm3i1n9Ya7yERhXuiJbqjbhfHet/iT3+AgMKpqQOU0z4YLXrf4YQb4AYYnjMaqFJtzxT6u/ASzgZR1jwimdGL7xvg4z4aCOC29e2Xkm3NRl4cVDO5WbwgSlD81zW841oVT6E/PoduOUUCfxfXl3e3JKqJP4vry7PTkl1El8X97dhlwTSqU/MY9uK64J1dJfmRe3DzeFOTy086Tf1GXhd57YSVKu6b5wl8d1gLuHc2jI5U09Wuxwzg25vKaHCpdQQiGdd/Qs4w1UUUjn+TxFVvoktAknhq9yX4T3daRf/n10bppLfwLe1GFu9dPRaahi9p7SAWLxdHqAwX6qKNBWSj9VFGgosZ8qCrSS3k8VBZoo6qeKAh1IKEBMaT9VFDibhAKESShAzIR+qihwKgkFCJNQgDAJBQiTUIAwCQUIk1CAMAkFGKGfAGESChAmoQAj9BMgTEIBRugnwAj9BBihnwAj9BNghH4CjNBPgEHiCTBOOQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgMf5+NfqPwTgYT7+a/WfA/AkEgoQ8/GT1X8UwAP82E8VBbhCQgFifumninLRnysatPr3wc8MmBSl/bRAtmXApCjtpwWyJxsmS1E5zY9tmTGJ0ptpe2zOjEmU3kzbY2eWTK7EWhoe+zNmcmWl0urYnzGTLqWTVsf+7JkKKbsyOfZnz1RI2ZXJsTmTpkjitOyNPVk1ddLXZWzsxqqpk74uY2Mrhk2pooFZGjuwbaqVbszMWMu2qVa6MTNjoeptmzefEsqhqodt4bwYGEeqHraF82JgnKd61UbOm3VxnupV2zlvpsVhqidt53xlWpykes+mzjd2xUmq92zqfGNXnKR6z6bON3bFYaonbed8ZVoAYRL6aD4yrCWhD+VTww4k9Il8bdiEhD6Lbw4Q418ugBj//wcIuBtPIQV4GemnigKdjfdTRYGGsuIppEA3Ff1UUaCDun6qKHC26n6qKHCqOf1UUeBIEgoQJqEAI/QTIExCAcIkFGCEfgKESShAmIQCjNBPgDAJBQiTUIAR+gkQJqEAYRIKMEJCAcL0EyBMQgHCJBRghH4ChEkowAj9BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAZ/kHdWDrGg==');
  97.     3: bmp := BitmapFromString(297, 166, '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');
  98.   else
  99.     Exit;
  100.   end;
  101.   GetBitmapSize(bmp, w, h);
  102.   DisplayDebugImgWindow(w, h);
  103.   DrawBitmapDebugImg(bmp);
  104.   Wait(Delay);
  105.   TPA := GetBitmapColorTPA(bmp, 0);
  106.   t := GetSystemTime;
  107.   TPADistribute(TPA, (Extended(DIST) + 0.5), ATPA); // Adding 0.5 to adapt the behaviour from SplitTPA distance check..
  108.   WriteLn('TPADistribute() finished in ' + IntToStr(GetSystemTime - t) + ' ms. [Length: ' + IntToStr(Length(ATPA)) + ']');
  109.   DrawBounds(bmp, ATPA, DISTRIBUTE_OUTLINES);
  110.   DrawBitmapDebugImg(bmp);
  111.   SetLength(ATPA, 0);
  112.   Wait(DELAY);
  113.   t := GetSystemTime;
  114.   ATPA := SplitTPA(TPA, DIST);
  115.   WriteLn('SplitTPA() finished in ' + IntToStr(GetSystemTime - t) + ' ms. [Length: ' + IntToStr(Length(ATPA)) + ']');
  116.   DrawBounds(bmp, ATPA, SPLIT_OUTLINES);
  117.   DrawBitmapDebugImg(bmp);
  118.   SetLength(ATPA, 0);
  119.   SetLength(TPA, 0);
  120.   FreeBitmap(bmp);
  121. end;
  122.  
  123. begin
  124.   Test;
  125. end.
Advertisement
Add Comment
Please, Sign In to add comment