Janilabo

example3

Jul 22nd, 2013
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 13.60 KB | None | 0 0
  1. // Original algorithms by slacky, optimized by Janilabo
  2.  
  3. const
  4.   FLOODFILL_8WAY = True; // Fills TPA bounds (polygon outlines)
  5.   FLOODFILL_COLOR = 65535; // ..with this color.
  6.  
  7. type
  8.   TFloodFill = (ff4Way, ff8Way);
  9.  
  10. procedure __TPAFloodFill4Way(var store: array of TBoolArray; skip: array of TBoolArray; X, Y, W, H: Integer);
  11. begin
  12.   if ((X > -1) and (Y > -1) and (X < W) and (Y < H)) then
  13.     if not skip[X][Y] then
  14.       if not store[X][Y] then
  15.       begin
  16.         store[X][Y] := True;
  17.         __TPAFloodFill4Way(store, skip, (X - 1), Y, W, H);
  18.         __TPAFloodFill4Way(store, skip, (X + 1), Y, W, H);
  19.         __TPAFloodFill4Way(store, skip, X, (Y - 1), W, H);
  20.         __TPAFloodFill4Way(store, skip, X, (Y + 1), W, H);
  21.       end;
  22. end;
  23.  
  24. procedure __TPAFloodFill8Way(var store: array of TBoolArray; skip: array of TBoolArray; X, Y, W, H: Integer);
  25. begin
  26.   if ((X > -1) and (Y > -1) and (X < W) and (Y < H)) then
  27.     if not skip[X][Y] then
  28.       if not store[X][Y] then
  29.       begin
  30.         store[X][Y] := True;
  31.         __TPAFloodFill8Way(store, skip, (X - 1), Y, W, H);
  32.         __TPAFloodFill8Way(store, skip, (X + 1), Y, W, H);
  33.         __TPAFloodFill8Way(store, skip, X, (Y - 1), W, H);
  34.         __TPAFloodFill8Way(store, skip, X, (Y + 1), W, H);
  35.         __TPAFloodFill8Way(store, skip, (X - 1), (Y - 1), W, H);
  36.         __TPAFloodFill8Way(store, skip, (X + 1), (Y + 1), W, H);
  37.         __TPAFloodFill8Way(store, skip, (X + 1), (Y - 1), W, H);
  38.         __TPAFloodFill8Way(store, skip, (X - 1), (Y + 1), W, H);
  39.       end;
  40. end;
  41.  
  42. {==============================================================================]
  43.   Explanation: !
  44. [==============================================================================}
  45. function TPAFloodFill(TPA: TPointArray; start: TPoint; method: TFloodFill): TPointArray;
  46. var
  47.   i, l, r, X, Y, W, H: Integer;
  48.   b: TBox;
  49.   store, skip: array of TBoolArray;
  50.   o: Boolean;
  51. begin
  52.   l := Length(TPA);
  53.   if (l > 0) then
  54.   begin
  55.     b := IntToBox(TPA[0].X, TPA[0].Y, TPA[0].X, TPA[0].Y);
  56.     o := ((start.X = TPA[0].X) and (start.Y = TPA[0].Y));
  57.     if (l > 1) then
  58.     for i := 1 to (l - 1) do
  59.     begin
  60.       if not o then
  61.         o := ((start.X = TPA[i].X) and (start.Y = TPA[i].Y));
  62.       if (TPA[i].X < b.X1) then
  63.         b.X1 := TPA[i].X
  64.       else
  65.         if (TPA[i].X > b.X2) then
  66.           b.X2 := TPA[i].X;
  67.       if (TPA[i].Y < b.Y1) then
  68.         b.Y1 := TPA[i].Y
  69.       else
  70.         if (TPA[i].Y > b.Y2) then
  71.           b.Y2 := TPA[i].Y;
  72.     end;
  73.     if ((start.X >= b.X1) and (start.Y >= b.Y1) and (start.X <= b.X2) and (start.Y <= b.Y2)) then
  74.     begin
  75.       W := ((b.X2 - b.X1) + 1);
  76.       H := ((b.Y2 - b.Y1) + 1);
  77.       SetLength(store, W);
  78.       SetLength(skip, W);
  79.       for i := 0 to (W - 1) do
  80.       begin
  81.         SetLength(skip[i], H);
  82.         SetLength(store[i], H);
  83.       end;
  84.       if o then
  85.       begin
  86.         for X := 0 to (W - 1) do
  87.           for Y := 0 to (H - 1) do
  88.             skip[X][Y] := True;
  89.         for i := 0 to (l - 1) do
  90.           skip[(TPA[i].X - b.X1)][(TPA[i].Y - b.Y1)] := False;
  91.       end else
  92.         for i := 0 to (l - 1) do
  93.           skip[(TPA[i].X - b.X1)][(TPA[i].Y - b.Y1)] := True;
  94.       case method of
  95.         ff4Way: __TPAFloodFill4Way(store, skip, (start.X - b.X1), (start.Y - b.Y1), W, H);
  96.         ff8Way: __TPAFloodFill8Way(store, skip, (start.X - b.X1), (start.Y - b.Y1), W, H);
  97.       end;
  98.       SetLength(skip, 0);
  99.       SetLength(Result, (W * H));
  100.       for Y := 0 to (H - 1) do
  101.         for X := 0 to (W - 1) do
  102.           if store[X][Y] then
  103.           begin
  104.             Result[r] := Point((X + b.X1), (Y + b.Y1));
  105.             Inc(r);
  106.           end;
  107.     end;
  108.   end;
  109.   SetLength(Result, r);
  110. end;
  111.  
  112. //******* DIRTY EXAMPLE BELLOW: *******//
  113. procedure SetPixels(bmp: Integer; TPA: TPointArray; color: Integer);
  114. var
  115.   a, z, w, h: Integer;
  116. begin
  117.   z := High(TPA);
  118.   if (z > -1) then
  119.   begin
  120.     GetBitmapSize(bmp, w, h);
  121.     for a := 0 to z do
  122.       if ((TPA[a].X >= 0) and (TPA[a].Y >= 0) and (TPA[a].X < w) and (TPA[a].Y < h)) then
  123.         FastSetPixel(bmp, TPA[a].X, TPA[a].Y, color);
  124.   end;
  125. end;
  126.  
  127. function GetBitmapColorTPA(bmp: Integer; color: Integer): TPointArray;
  128. var
  129.   w, h, x, y, r: Integer;
  130. begin
  131.   try
  132.     GetBitmapSize(bmp, w, h);
  133.   except
  134.   end;
  135.   if ((w > 0) and (h > 0)) then
  136.   begin
  137.     SetLength(Result, (w * h));
  138.     for y := 0 to (h - 1) do
  139.       for x := 0 to (w - 1) do
  140.         if (FastGetPixel(bmp, x, y) = color) then
  141.         begin
  142.           Result[r] := Point(x, y);
  143.           Inc(r);
  144.         end;
  145.   end;
  146.   SetLength(Result, r);
  147. end;
  148.  
  149. procedure Setup;
  150. var
  151.   shape, TPA: TPointArray;
  152.   bmp, w, h, t: Integer;
  153.   pt: TPoint;
  154. begin
  155.   bmp := BitmapFromString(490, 361, 'meJzt21mSKzkOBdHc/6ajPmSm' +
  156.         '0ouRwQG4APz8dlcKBD1ZyjbrbQMAAAAAAAAAAAAAAAAAAAAAAAAAA' +
  157.         'AAAAAAAAAAAAAAAqPsD1qNq5GNcNZHDC1UjH7Oqrzp3HAAVGGdG1T' +
  158.         'Dgnpn7AKiA1xv5uGfmPgAq4PVGPu6ZuQ+ACni9kY97Zu4DoAJeb+T' +
  159.         'jnpn7AKiA1xv5uGfmPgAq4PVGPu6ZuQ+ACni9kY97Zu4DoAJeb+Tj' +
  160.         'npn7AKiA1xv5uGfmPgAq4PVGPu6ZuQ+ACni9kY97Zu4DoAJeb+Tjn' +
  161.         'pn7AKiA1xv5uGfmPgAq4PVGPu6ZuQ+ACni9kY97Zu4DoAJeb+Tjnp' +
  162.         'n7AKiA1xv5uGfmPgAq4PVGPu6ZuQ+ACni9kY97Zu4DoAJeb+Tjnpn' +
  163.         '7AKiA1xv5uGfmPgAq4PVGPu6ZuQ+ACni9kY97Zu4DoAJeb+Tjnpn7' +
  164.         'AKiA1xv5uGfmPgAq4PVGPu6ZuQ+ACni9kY97Zu4DoAJeb+Tjnpn7A' +
  165.         'KiA1xv5uGfmPgAq4PVGPu6ZuQ+ACni9kY97Zu4DpPRnxfugrXi9E6' +
  166.         'DqHfdp3QeIzizpdt4rOWE8mOweovCL95L3Sk64D+Y+QDjr4lz3k90' +
  167.         'ZT6Jz8CjWtbfuJ7tzn8R9AH3KaSnPdpwz68dFpFyO8mzHOV0+WmQA' +
  168.         'TfrlXNGcPPfHRaHZRgvNyd0X5T6AFKk2ZlE4VLVfKykKAUyncCj31' +
  169.         'bkP4E4hAzNehzVeY7Jb60DV+aoWHMBRkbavWB7feKVFbvAUVWetWn' +
  170.         'AAe5XbvrJ6J7zeq1H1UbKqBQewRN6PFq2I13sdqn6Uo2rBAQyQd4e' +
  171.         '5S+P1no6qO4SuWnCApSh80KwF8npPRNWDglYtOMAi5D3X4D55vaeg' +
  172.         '6rliVS04wHQUvk73bnm9B1H1OlGqFhxgIgq30bFnXu9uVG1Dv2rBA' +
  173.         'WahcGOvFs7r3YeqjSlXLTjAOAp31Lh8Xu+3qNqRZtWCA4ygcBGPF8' +
  174.         'Hr3Y6qRahVfeQ+QDcKV3NzI7zejahajU7VR+4DdODLiayrq+H1fkT' +
  175.         'VskSqvhrMcYC3KFzf8Y54ve9RtT73qq9GchzgFSKP4vh1hdf7ClVH' +
  176.         '4Vv11TyOA7QT2Rja8Xo/oupweL1f0VkX3nK5uxCdUHVcInenX47Cl' +
  177.         'jDI+BL1a6HqBNwvUbwf9/1gFsurFA+GqtPwvUrlhIg8GbMLVW6Gqp' +
  178.         'NxvFDZiog8JZtrlc2GqlPyulbNkIg8MYPL1SyHqhNzuVzBlog8vdV' +
  179.         'XLBgPVadnf8VqORF5EUsvWq0fqi7C+KKliiLyUtZdt1RCVF2K5XVL' +
  180.         'RUXk1ZR6vb0HgZGCrzeR17Ti3nVCouqabO5dJC3+uixrxdWLhETVZ' +
  181.         'dlcvUJaRF7c9AAUWqLq4gwCUKiLyJH49fYdA47Sv958RcE2OwP3nK' +
  182.         'gaW4H/XwOR4yPl6+04AxQkfr2JHL9m9UDV0LGuB8fM+OsSO7OSoGr' +
  183.         'oWJeEQucunw5NaV5vl0+HJl5vVMDrjXySvd5EjivjbVA11Kxog86h' +
  184.         'htcb+aR5vf9+GH809I3nQdVQsyIP386NPxdRhH69jT8XUfB6owJeb' +
  185.         '+TD640KeL2RT4LXm8ivsJZfI51QtQ7W8mtuJ3Qu4u+H9ywSeL0ToO' +
  186.         'odXu9k/g68J5LA6x0aVZ/i9c7kGDmb+eD1jouqr/B6p7Frm8384vU' +
  187.         'Oiqpv8HoncPq1hM384vUOh6of8XpHdxr5xmb+xesdC1W34PUO7bTw' +
  188.         '3X/kMpgaXu9AqLrRitfbxZT5A3k8ftnNnBrZhlHBZ6bvQdzj8ctu5' +
  189.         'tT0bRhlfTBr/hBazl5zM1cGt2EU8cHcJYhrOXvNzVyJvo3o83do/O' +
  190.         '0uuJkbsbYRa9opqLpD9G1En/+VV1/MSm3mUaxtxJp2EFV3i76N6PO' +
  191.         '3exX5VmkzLWJtI9a0I6h6RPRtRJ+/0avCd//I0sGiiLWNWNN2o+pB' +
  192.         '0bcRff5Hb7+cHP/BdbMFEmsbsabtQNVTRN9G9Pnv9RW++2dXDBZOr' +
  193.         'G3EmvYtqp4lwTYSHOGo+8vJ8SdMny2ciKuIOPMjqp4oxypynOLXeO' +
  194.         'RbxrV0i7iKiDPfo+q5cqwixym+xgv//TmzpgotYiERZ75B1dPZF7L' +
  195.         'i42aF4W7Kl5PdT5syWGgGeVD1DapewT6Pv4PpP3nWD7S3IvLQC5nF' +
  196.         '5umm6lNUvYj9Ko6dzxog+rVO/92PvpCJ7F9vqv6g6nUcX+/tovlZP' +
  197.         'zyQ6b/yux876wcGZbAHqj6i6qW89nD80FnBR7zZRZFvMbexgs0eqP' +
  198.         'oXVa/m+3qffu5g8IuCWWfpwLFWsYhZElT9RdWrOSbR8rndwUe53O7' +
  199.         'f5Y6PWPHDozBbAlVvVG3Fdwkd3bZXoX+/BpFvEfawmvEGqJqqDbhv' +
  200.         'oGOA9uANEhphNp7yEgzYZ0DVVL2aQgYjA7QE737AUy2/pCs+bvUHa' +
  201.         'bI/PlVT9Woixx+c4bT27w+0zKmR/UhqG7DkFQBVm32izcdJ0Qlg1h' +
  202.         'hXwQue1HgYkePbc7x6qjb7XLNPFKFz9duCW9Ds3HESheO7cDw4VZt' +
  203.         '9tOWHKlA7+KJhdGoX+XT7j3bkfmqqtvl0+492JHjq1SM5Bu/+K7ZJ' +
  204.         '3vhq7jvfqNpqBpdPd+G+81NmIxkHrxD5Vq9zhZ1vVL2Y+wDGFHZ+x' +
  205.         'XKqq9rnDqCzbZExbOisfaPqlUTGsKGz9lMusy0Kft3vzuA83oMsJ7' +
  206.         'X2japX0plkNam1n/Idb2LwapFv3rs1o7b2zXvzVJ2A2tqvKEw4GLz' +
  207.         'mqgVHmk5z8xtVLyM40nSamz8lNefb4Dt+KcxoTjWR7OY3seVTdSCy' +
  208.         'mz8lOOpN7b9zKke+SS52IuXNb5LLp2p9ypu/IjvtffDiexYfr1uI5' +
  209.         'W9UvYb4eN1CLP+U/szhIt8ibLVDiM1/6M9J1SJCbP5KoMmjRL6F2m' +
  210.         'qLQJv/iDiq/sAhhmwXaPM3Qg+vKXoSv4JGHmvaEMI1cCNo1UcJjqA' +
  211.         'mx0r/DrwneiHizOJyrDR01Uc5TiElwUqjFx53clkJVhq96lOZzqIg' +
  212.         'dB5pvpyEHl5Q6B7SVH2U70S+gu4zWeE5TqEj6D6TVX2U9Vxewu0zZ' +
  213.         'eGZzqIg3D5TVn0q9+mMBarlWHiIsRslO46vQHnkrvqowhnNhFhmhc' +
  214.         'KznstFiGVWqPqozkkNiC+zTuG5T2dMfJl1qj5V7bzraMZzmrfakNN' +
  215.         'VOKMNzWBqVn1U9uDTqW2ycuGlDruU2iYrV31U/PgTiWySvDeZu0hA' +
  216.         'ZJNUfYU9TOFb1FXeZW+28tknompxLGQK+zXetM1tsocpqFocm5nCZ' +
  217.         'o33bXOPX2xjCqrWx37GrcuMtvuwmXFUrY91jZu4w5awua9HbGkcVe' +
  218.         'tjb+P6dtieNHf0FhsbR9UhsMNBHcUS9moscBBVh8BWBxG2IFY6iKp' +
  219.         'DYMmDSFoQex5E1VGw+RFsTxP3MoLtRcG/OkewOk1UPYLVRUHnI1id' +
  220.         'JqoeweoC4bK6sTpZXE03VhcIX1S6sTdZVN2NvQVC593Ymyyq7sbeY' +
  221.         'uG++vBEKONq+lB1LNxXN1Yni6vpxuoC4bJG/P3wngX/41JGUHUgXN' +
  222.         'MgUhfEjQyi6hC4pnF8XVHDdYyjan1c0CxsUgd3MQubFMftzELqOri' +
  223.         'IWahaGbczEX9viuAWJqJqWdzLdKzUHVcwHSvVxKVMx9cVdyx/OqoW' +
  224.         'xI0swmIdsfxFWKwUrmMdduuFza/DbqVwF+vw96YXdr4OVevgIlZjw' +
  225.         '/bY+WpsWAG3YICvK8bYtgGqVsD+bZC6JVZtg6odsXxLbNsGe7bEtl' +
  226.         '2wdnv8vbka67VH1cbYtiOWvwiLdcTyzbBnX3xdWYF9+qJqA6xXBKl' +
  227.         'PxCZFUPU67FYK1zEFa5TCdazAVgXx9+YgtieIqqdjmbJIvRt7k0XV' +
  228.         's7BGcXxd6cC6xFH1OBYYBTfVjl1FwU11Y3WxcF8t2FIs3FcflhYOf' +
  229.         '28+YjnhUPVb7CouUr/CWuKi6kYsKjq+rhyxkOio+hH7SYOr/GIVaX' +
  230.         'CVN9hMJqT+wRIyoepT7CQf/t6sfPasqHqHbSRW9nLLHrwCLveDPaR' +
  231.         'X8OtKtfMWVLDqo9DHDz28sVKphz5p6OGNlap6J/TB+ZfvW0XWFfqM' +
  232.         'VP1WzXVFP/Xfv7zHiSH9xqKfjqo7VNtYgsP+HXhPFEbWjSU4F1V3q' +
  233.         '7OxBMc8dh79RJZSLi3Bcah6RIWl5Tjd7zVVuLUVMi0tx0Goelzipa' +
  234.         'U52vEg1N4i5Ve7NGeh6j4pq97JdLTTs+S+vhHHvNNsKf1Zkt3XRIm' +
  235.         'rPsp0tKubSn+Jr1TIO9OJqLpFhap3kh3w5sqKXOiVq7ZTbiPZuaj6' +
  236.         'Sqmqd5Kd9PHuSl3uR8G2k52Rqo8KVr2T78gtJypy12XzzndSqv4qW' +
  237.         '/VRvoM33mbieyfvfOelaqreSXn89mvN1MBV2wmO9lbKU1N18ap3su' +
  238.         '7h1bmi90DbO1k3QNVBz7JC4oW8PVrEPMj7VOI9UDW+Eq+l49KjpEL' +
  239.         'e9xJvg6rxkXs5fbcvmw1tN8q9FqrGlvqvy4/uA0pVRN6vpN8PVaPC' +
  240.         'ukbO6F4UeXeosCWqRoWlDbZhX9dV2+lvapYKu6Lq4oqsbjwSm9Joe' +
  241.         '4oiS6PqyoqsceIxF7VH3hMV2R5VV1ZnmXNPOrFDl7xzXzpVD/40qg' +
  242.         '6hznmn9zPS5FXbS+/C/rfJS+Kj7VB1nap36px0W/N9rCMYy9hufps' +
  243.         'SX33iox1RdZGqd0oddlt23lfZGGT22HbuzhMf7RRVV6h6p85Jv9Yd' +
  244.         'ubEcmwEeq07cedZz3aDqV9PmUOSYv5Zebks8cwd41fa6MaRkPdcNq' +
  245.         'l4xhrIix9xZfb+PqQ9+emPY9x/R+F+LKOWhHlF1y5BpFDnmkcHB7y' +
  246.         'vq+PTxsK9+4Ksx9GU91yOq3srcfpFjnrI5+1V+7Z8+ve3H2aJLeah' +
  247.         'GVJ216qMKZ7xidsWnOd1/9Lq2Tz9l8OeoSXmoRlSdteqdCme8MrGW' +
  248.         'vo87zd6g7dOpJv5Md/lO1I6qt6RV71Q44w3747eXvC7s03kW/XwXK' +
  249.         'Q/VjqorBNC9c3EdG1i35JsPnXiQ8WEMPsvGzJKUdGxg3ZJvPnTiQc' +
  250.         'aHMfgsLzPbEvN2A0v3fPO53ZNPH8Pyc5dalZSAtxtYuuebz+2efPo' +
  251.         'Ylp9rb1E/jkJ0vmk05j7AIlRN1SGuFTuv7q7yRSv8oqERVTei6uja' +
  252.         'r6/yRVc+e0RU3aLy2dOg83t8RYmIqu9RdRotl1j2rssePDqqvlH24' +
  253.         'Pm0XGXZ6y578Oio+kbZg6dE56dqnjoNqj5V89S53V9ozRuveepMqP' +
  254.         'qo5qlzu7nTmtdd89TJUPVOzVNXcHWzNW+85qnzoepfNU9dBJ1//P3' +
  255.         'wngWjqPqDqnM7vdyCN17wyIlR9UfBI1dzvOJql85XlHyomqqLoPNS' +
  256.         '5y2Cqkudt7Lfiy5173xFSYyqi5y3uN+7LnXvpQ5bDVV7DwIjfwfeE' +
  257.         '1koddiCqBrpETnyoWrkVrPwj4JHLoKqSx25JiKvduoKqLraqaupXP' +
  258.         'hH2YMnRtVlD14EhW98RUmHqjeqTo3Cv9hAGlT9xQayIvIvlpAGVX+' +
  259.         'xhJQofIc9JEDVO+whGQo/xTZCo+pTbCMTCj/FQkKj6lMsJA2+nNxg' +
  260.         'J0FR9Q12kgCF32MzEVH1PTYTHYW3YDmxUHULlhMakbdgP7FQdQv2E' +
  261.         'xeFt2NFUVB1O1YUEYW/wqJCoOpXWFQ4FN6BXYmj6g7sKhYi78O6lF' +
  262.         'F1H9YVBYV3Y2myqLobSwuBwsexOjVUPY7ViaPwKdihFKqegh3K4sv' +
  263.         'JXKxRAVXPxRrVUPgi7NMRVS/CPkVQ+FIs1gVVL8ViFRC5AXZrjKoN' +
  264.         'sFsFpL4au7VH1auxWxHH1LmRudiqPapeja3qOK2dq5mCfXqh6nXYp' +
  265.         'xpqX4RlOqLqRVimJmqfjjW6o+rpWKMsap+IHYqg6onYobjT2rmsDq' +
  266.         'xOB1XPwur0Ufs49qaGqsext0CofQQb00TVI9hYLHxp6cauZFF1N3Y' +
  267.         'VDrV3YFHiqLoDi4qL2l9hRSFQ9SusKDRqb8R+AqHqRuwngdPaudAd' +
  268.         '1hILVbdgLTlQ+z12EhFV32MnyVD7FRYSF1VfYSH58KXlFHsIjapPs' +
  269.         'YeUqH2HJSRA1TssITdq/yp+/Eyo+qv48Ssg9Y0vKulQ9UbVZZB65b' +
  270.         'NnRdWVz14NqZc9e2JUXfbs1VS+6+K/5olVvlaqrqP4RRc/flbFr7X' +
  271.         '48esoftF8UUmp+J1SdRHcMhvIhztlAxXwr2k2kA93ygaK4JZJPR8u' +
  272.         'lKor4Io3lpAOF7qxhAK44o0vKulwmxtVF8D9frCHTLjND/aQm++/o' +
  273.         'P8u+E5i/+mYS6clnUnsPx0GvO73KvJ7BvOs+wiYoerdPOs+Ao5idb' +
  274.         '60f1JPg6qPI035aZDicrn3H+rV//RfHHih6tPPnXFKCLG/2e5PnNj' +
  275.         '/1afTeQ5UPWU2iHu8+hAfN/dXgNSjo2qqLsLsZu0rovOyqJqqK7C5' +
  276.         'WamE6Dw9qqbqCgxuNlA/IYbEI6r+FWJIdLDsfN1HAL+oGhWs/gpB5' +
  277.         'LBH1ShiXYqB/rpEMlSNChalSORwRNWoYEWNRA5fVI0KpgdJ5HBH1a' +
  278.         'hgbpNEDgVUjSImlknkEEHVqGBWnEQOHVSNCqb0yV+XkELVqGC8TyK' +
  279.         'HGqpGBYOJEjkEUTWK6A6VyCGLqlHBeOcrpgJGUDUq6MuVyKGMqlFB' +
  280.         'R7FEDnFUjQreRsv/MAh9VI0i2rslckRB1aigMV0iRyBUjQpa6iVyx' +
  281.         'ELVqOBV52ZTASOoGhU8NkzkCIeqUcRNyfx1iaCoGhVclUzkiIuqUc' +
  282.         'FpzESO0KgaFRx7JnJER9WoYJc0kSMBqkYRv2ETOXKgalTwd+A9ETC' +
  283.         'KqlEBnSMfqkYFRI58qBoVEDnyoWoUQeTIh6oBAAAAAAAAAAAAAB3+' +
  284.         'A9qZhKc=');
  285.   GetBitmapSize(bmp, w, h);
  286.   TPA := GetBitmapColorTPA(bmp, 0);
  287.   pt := TPA[0];
  288.   t := GetSystemTime;
  289.   if FLOODFILL_8WAY then
  290.     shape := TPAFloodFill(TPA, pt, ff8Way)
  291.   else
  292.     shape := TPAFloodFill(TPA, pt, ff4Way);
  293.   WriteLn('TPAFloodFill() finished in ' + IntToStr(GetSystemTime - t) + ' ms.');
  294.   SetPixels(bmp, shape, FLOODFILL_COLOR);
  295.   DisplayDebugImgWindow(w, h);
  296.   DrawBitmapDebugImg(bmp);
  297.   FreeBitmap(bmp);
  298.   SetLength(TPA, 0);
  299. end;
  300.  
  301. begin
  302.   Setup;
  303. end.
Advertisement
Add Comment
Please, Sign In to add comment