Janilabo

Untitled

Aug 7th, 2013
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 15.07 KB | None | 0 0
  1. {==============================================================================]
  2.  @action: Removes all TPAs from ATPA that fall outside minSize / maxSize.
  3.  @note: Based on Length()
  4.  @contributors: Janilabo, slacky
  5. [==============================================================================}
  6. procedure ATPAExtractSizeEx(var ATPA: T2DPointArray; minSize, maxSize: Integer); callconv
  7. var
  8.   h, i, l, s: Integer;
  9.   z: TIntegerArray;
  10. begin
  11.   h := High(ATPA);
  12.   if (h > -1) then
  13.     if ((minSize <= maxSize) and (maxSize > 0)) then
  14.     begin
  15.       for i := 0 to h do
  16.       begin
  17.         s := Length(ATPA[i]);  
  18.         if ((s >= minSize) and (s <= maxSize)) then
  19.         begin
  20.           l := Length(z);
  21.           SetLength(z, (l + 1));
  22.           z[l] := i;
  23.         end;
  24.       end;  
  25.       ExtractIndexesATPA(ATPA, z);
  26.     end else
  27.       SetLength(ATPA, 0);
  28. end;
  29.  
  30. {==============================================================================]
  31.  @action: Removes all TPAs from ATPA that fall outside size.
  32.  @note: Based on Length()
  33.  @contributors: Janilabo, slacky
  34. [==============================================================================}
  35. procedure ATPAExtractSize(var ATPA: T2DPointArray; size: Integer); callconv
  36. begin
  37.   ATPAExtractSizeEx(ATPA, size, size);
  38. end;
  39.  
  40. {==============================================================================]
  41.  @action: Removes all TPAs from ATPA that fall outside minSize.
  42.  @note: Based on Length()
  43.  @contributors: Janilabo, slacky
  44. [==============================================================================}
  45. procedure ATPAExtractSizeMin(var ATPA: T2DPointArray; minSize: Integer); callconv
  46. var
  47.   h, i, l: Integer;
  48.   z: TIntegerArray;
  49. begin
  50.   h := High(ATPA);
  51.   if (h > -1) then
  52.   begin
  53.     for i := 0 to h do
  54.       if (Length(ATPA[i]) >= minSize) then
  55.       begin
  56.         l := Length(z);
  57.         SetLength(z, (l + 1));
  58.         z[l] := i;
  59.       end;
  60.     ExtractIndexesATPA(ATPA, z);
  61.   end;
  62. end;
  63.  
  64. {==============================================================================]
  65.  @action: Removes all TPAs from ATPA that fall outside maxSize.
  66.  @note: Based on Length()
  67.  @contributors: Janilabo, slacky
  68. [==============================================================================}
  69. procedure ATPAExtractSizeMax(var ATPA: T2DPointArray; maxSize: Integer); callconv
  70. var
  71.   h, i, l: Integer;
  72.   z: TIntegerArray;
  73. begin
  74.   h := High(ATPA);
  75.   if (h > -1) then
  76.   begin
  77.     for i := 0 to h do
  78.       if (Length(ATPA[i]) <= maxSize) then
  79.       begin
  80.         l := Length(z);
  81.         SetLength(z, (l + 1));
  82.         z[l] := i;
  83.       end;  
  84.     ExtractIndexesATPA(ATPA, z);
  85.   end;
  86. end;
  87.  
  88. {==============================================================================]
  89.  @action: Removes all TPAs from ATPA that fall within minSize / maxSize.
  90.  @note: Based on Length()
  91.  @contributors: Janilabo, slacky
  92. [==============================================================================}
  93. procedure ATPAFilterSizeEx(var ATPA: T2DPointArray; minSize, maxSize: Integer); callconv
  94. var
  95.   h, i, l, s: Integer;
  96.   z: TIntegerArray;
  97. begin
  98.   h := High(ATPA);
  99.   if (h > -1) then
  100.   begin
  101.     if (minSize <= maxSize) then
  102.     begin
  103.       for i := 0 to h do
  104.       begin
  105.         s := Length(ATPA[i]);  
  106.         if ((s < minSize) or (s > maxSize)) then
  107.         begin
  108.           l := Length(z);
  109.           SetLength(z, (l + 1));
  110.           z[l] := i;
  111.         end;
  112.       end;  
  113.       ExtractIndexesATPA(ATPA, z);  
  114.     end;
  115.   end;
  116. end;
  117.  
  118. {==============================================================================]
  119.  @action: Removes all TPAs from ATPA that fall within size.
  120.  @note: Based on Length()
  121.  @contributors: Janilabo, slacky
  122. [==============================================================================}
  123. procedure ATPAFilterSize(var ATPA: T2DPointArray; size: Integer); callconv
  124. begin
  125.   ATPAFilterSizeEx(ATPA, size, size);
  126. end;
  127.  
  128. {==============================================================================]
  129.  @action: Removes all TPAs from ATPA that fall within minSize.
  130.  @note: Based on Length()
  131.  @contributors: Janilabo, slacky
  132. [==============================================================================}
  133. procedure ATPAFilterSizeMin(var ATPA: T2DPointArray; minSize: Integer); callconv
  134. var
  135.   h, i, l: Integer;
  136.   z: TIntegerArray;
  137. begin
  138.   h := High(ATPA);
  139.   if (h > -1) then
  140.   begin
  141.     for i := 0 to h do
  142.       if (Length(ATPA[i]) < minSize) then
  143.       begin
  144.         l := Length(z);
  145.         SetLength(z, (l + 1));
  146.         z[l] := i;
  147.       end;
  148.     ExtractIndexesATPA(ATPA, z);  
  149.   end;
  150. end;
  151.  
  152. {==============================================================================]
  153.  @action: Removes all TPAs from ATPA that fall within maxSize.
  154.  @note: Based on Length()
  155.  @contributors: Janilabo, slacky
  156. [==============================================================================}
  157. procedure ATPAFilterSizeMax(var ATPA: T2DPointArray; maxSize: Integer); callconv
  158. var
  159.   h, i, l: Integer;
  160.   z: TIntegerArray;
  161. begin
  162.   h := High(ATPA);
  163.   if (h > -1) then
  164.   begin
  165.     for i := 0 to h do  
  166.       if (Length(ATPA[i]) > maxSize) then
  167.       begin
  168.         l := Length(z);
  169.         SetLength(z, (l + 1));
  170.         z[l] := i;
  171.       end;  
  172.     ExtractIndexesATPA(ATPA, z);  
  173.   end;
  174. end;
  175.  
  176. {==============================================================================]
  177.  @action: Removes all TPAs from ATPA that fall outside minDensity / maxDensity.
  178.  @note: Based on TPADensity()
  179.  @contributors: Janilabo, slacky
  180. [==============================================================================}
  181. procedure ATPAExtractDensityEx(var ATPA: T2DPointArray; minDensity, maxDensity: Extended); callconv
  182. var
  183.   h, i: Integer;
  184.   d: Extended;
  185.   z: TIntegerArray;
  186. begin
  187.   h := High(ATPA);
  188.   if (h > -1) then
  189.   begin  
  190.     if ((minDensity <= maxDensity) and (maxDensity > 0.0)) then
  191.     for i := h downto 0 do
  192.     begin
  193.       d := TPADensity(ATPA[i]);
  194.       if ((d >= minDensity) and (d <= maxDensity)) then
  195.       begin
  196.         l := Length(z);
  197.         SetLength(z, (l + 1));
  198.         z[l] := i;        
  199.       end;
  200.     end;
  201.     ExtractIndexesATPA(ATPA, z);
  202.   end;
  203. end;
  204.  
  205. {==============================================================================]
  206.  @action: Removes all TPAs from ATPA that fall outside density.
  207.  @note: Based on TPADensity()
  208.  @contributors: Janilabo, slacky
  209. [==============================================================================}
  210. procedure ATPAExtractDensity(var ATPA: T2DPointArray; density: Extended); callconv
  211. begin
  212.   ATPAExtractDensityEx(ATPA, density, density);
  213. end;
  214.  
  215. {==============================================================================]
  216.  @action: Removes all TPAs from ATPA that fall outside minDensity.
  217.  @note: Based on TPADensity()
  218.  @contributors: Janilabo, slacky
  219. [==============================================================================}
  220. procedure ATPAExtractDensityMin(var ATPA: T2DPointArray; minDensity: Extended); callconv
  221. var
  222.   h, i: Integer;
  223.   d: Extended;
  224. begin
  225.   h := High(ATPA);
  226.   for i := h downto 0 do
  227.   begin
  228.     d := TPADensity(ATPA[i]);
  229.     if (d < minDensity) then
  230.       Delete(ATPA, i, 1);
  231.   end;
  232. end;
  233.  
  234. {==============================================================================]
  235.  @action: Removes all TPAs from ATPA that fall outside maxDensity.
  236.  @note: Based on TPADensity()
  237.  @contributors: Janilabo, slacky
  238. [==============================================================================}
  239. procedure ATPAExtractDensityMax(var ATPA: T2DPointArray; maxDensity: Extended); callconv
  240. var
  241.   h, i: Integer;
  242.   d: Extended;
  243. begin
  244.   h := High(ATPA);
  245.   for i := h downto 0 do
  246.   begin
  247.     d := TPADensity(ATPA[i]);
  248.     if (d > maxDensity) then
  249.       Delete(ATPA, i, 1);
  250.   end;
  251. end;
  252.  
  253. {==============================================================================]
  254.  @action: Removes all TPAs from ATPA that fall within minDensity / maxDensity.
  255.  @note: Based on TPADensity()
  256.  @contributors: Janilabo, slacky
  257. [==============================================================================}
  258. procedure ATPAFilterDensityEx(var ATPA: T2DPointArray; minDensity, maxDensity: Extended); callconv
  259. var
  260.   h, i: Integer;
  261.   d: Extended;
  262. begin
  263.   if (minDensity > maxDensity) then
  264.     Exit;
  265.   h := High(ATPA);
  266.   for i := h downto 0 do
  267.   begin
  268.     d := TPADensity(ATPA[i]);
  269.     if ((d >= minDensity) and (d <= maxDensity)) then
  270.       Delete(ATPA, i, 1);
  271.   end;
  272. end;  
  273.  
  274. {==============================================================================]
  275.  @action: Removes all TPAs from ATPA that fall within density.
  276.  @note: Based on TPADensity()
  277.  @contributors: Janilabo, slacky
  278. [==============================================================================}
  279. procedure ATPAFilterDensity(var ATPA: T2DPointArray; density: Extended); callconv
  280. begin
  281.   ATPAFilterDensityEx(ATPA, density, density);
  282. end;
  283.  
  284. {==============================================================================]
  285.  @action: Removes all TPAs from ATPA that fall within minDensity.
  286.  @note: Based on TPADensity()
  287.  @contributors: Janilabo, slacky
  288. [==============================================================================}
  289. procedure ATPAFilterDensityMin(var ATPA: T2DPointArray; minDensity: Extended); callconv
  290. var
  291.   h, i: Integer;
  292.   d: Extended;
  293. begin
  294.   h := High(ATPA);
  295.   for i := h downto 0 do
  296.   begin
  297.     d := TPADensity(ATPA[i]);
  298.     if (d >= minDensity) then
  299.       Delete(ATPA, i, 1);
  300.   end;
  301. end;  
  302.  
  303. {==============================================================================]
  304.  @action: Removes all TPAs from ATPA that fall within maxDensity.
  305.  @note: Based on TPADensity()
  306.  @contributors: Janilabo, slacky
  307. [==============================================================================}
  308. procedure ATPAFilterDensityMax(var ATPA: T2DPointArray; maxDensity: Extended); callconv
  309. var
  310.   h, i: Integer;
  311.   d: Extended;
  312. begin
  313.   h := High(ATPA);
  314.   for i := h downto 0 do
  315.   begin
  316.     d := TPADensity(ATPA[i]);
  317.     if (d <= maxDensity) then
  318.       Delete(ATPA, i, 1);
  319.   end;
  320. end;
  321.  
  322. {==============================================================================]
  323.  @action: Removes all TPAs from ATPA that fall outside minimum / maximum dimensions.
  324.  @note: Based on TPADimensions()
  325.  @contributors: Janilabo, slacky
  326. [==============================================================================}
  327. procedure ATPAExtractDimensionsEx(var ATPA: T2DPointArray; minWidth, minHeight, maxWidth, maxHeight: Integer); callconv
  328. var
  329.   width, height, h, i: Integer;
  330. begin
  331.   if ((minWidth > maxWidth) or (minHeight > maxHeight)) then
  332.     Exit;
  333.   h := High(ATPA);
  334.   for i := h downto 0 do
  335.   begin
  336.     TPADimensions(ATPA[i], width, height);
  337.     if ((width < minWidth) or (width > maxWidth) or (height < minHeight) or (height > maxHeight)) then
  338.       Delete(ATPA, i, 1);
  339.   end;
  340. end;
  341.  
  342. {==============================================================================]
  343.  @action: Removes all TPAs from ATPA that fall outside dimensions (width / height).
  344.  @note: Based on TPADimensions()
  345.  @contributors: Janilabo, slacky
  346. [==============================================================================}
  347. procedure ATPAExtractDimensions(var ATPA: T2DPointArray; width, height: Integer); callconv
  348. begin
  349.   ATPAExtractDimensionsEx(ATPA, width, height, width, height);
  350. end;
  351.  
  352. {==============================================================================]
  353.  @action: Removes all TPAs from ATPA that fall outside minimum dimensions.
  354.  @note: Based on TPADimensions()
  355.  @contributors: Janilabo, slacky
  356. [==============================================================================}
  357. procedure ATPAExtractDimensionsMin(var ATPA: T2DPointArray; minWidth, minHeight: Integer); callconv
  358. var
  359.   width, height, h, i: Integer;
  360. begin
  361.   h := High(ATPA);
  362.   for i := h downto 0 do
  363.   begin
  364.     TPADimensions(ATPA[i], width, height);
  365.     if ((width < minWidth) or (height < minHeight)) then
  366.       Delete(ATPA, i, 1);
  367.   end;
  368. end;
  369.  
  370. {==============================================================================]
  371.  @action: Removes all TPAs from ATPA that fall outside maximum dimensions.
  372.  @note: Based on TPADimensions()
  373.  @contributors: Janilabo, slacky
  374. [==============================================================================}
  375. procedure ATPAExtractDimensionsMax(var ATPA: T2DPointArray; maxWidth, maxHeight: Integer); callconv
  376. var
  377.   width, height, h, i: Integer;
  378. begin
  379.   h := High(ATPA);
  380.   for i := h downto 0 do
  381.   begin
  382.     TPADimensions(ATPA[i], width, height);
  383.     if ((width > maxWidth) or (height > maxHeight)) then
  384.       Delete(ATPA, i, 1);
  385.   end;
  386. end;
  387.  
  388. {==============================================================================]
  389.  @action: Removes all TPAs from ATPA that fall within minimum / maximum dimensions.
  390.  @note: Based on TPADimensions()
  391.  @contributors: Janilabo, slacky
  392. [==============================================================================}
  393. procedure ATPAFilterDimensionsEx(var ATPA: T2DPointArray; minWidth, minHeight, maxWidth, maxHeight: Integer); callconv
  394. var
  395.   width, height, h, i: Integer;
  396. begin
  397.   if ((minWidth > maxWidth) or (minHeight > maxHeight)) then
  398.     Exit;
  399.   h := High(ATPA);
  400.   for i := h downto 0 do
  401.   begin  
  402.     TPADimensions(ATPA[i], width, height);
  403.     if ((width >= minWidth) and (width <= maxWidth) or (height >= minHeight) and (height <= maxHeight)) then
  404.       Delete(ATPA, i, 1);
  405.   end;
  406. end;
  407.  
  408. {==============================================================================]
  409.  @action: Removes all TPAs from ATPA that fall within dimensions (width / height).
  410.  @note: Based on TPADimensions()
  411.  @contributors: Janilabo, slacky
  412. [==============================================================================}
  413. procedure ATPAFilterDimensions(var ATPA: T2DPointArray; width, height: Integer); callconv
  414. begin
  415.   ATPAFilterDimensionsEx(ATPA, width, height, width, height);
  416. end;  
  417.  
  418. {==============================================================================]
  419.  @action: Removes all TPAs from ATPA that fall within minimum dimensions.
  420.  @note: Based on TPADimensions()
  421.  @contributors: Janilabo, slacky
  422. [==============================================================================}
  423. procedure ATPAFilterDimensionsMin(var ATPA: T2DPointArray; minWidth, minHeight: Integer); callconv
  424. var
  425.   width, height, h, i: Integer;
  426. begin
  427.   h := High(ATPA);
  428.   for i := h downto 0 do
  429.   begin  
  430.     TPADimensions(ATPA[i], width, height);
  431.     if ((width >= minWidth) and (height >= minHeight)) then
  432.       Delete(ATPA, i, 1);
  433.   end;
  434. end;    
  435.  
  436. {==============================================================================]
  437.  @action: Removes all TPAs from ATPA that fall within maximum dimensions.
  438.  @note: Based on TPADimensions()
  439.  @contributors: Janilabo, slacky
  440. [==============================================================================}
  441. procedure ATPAFilterDimensionsMax(var ATPA: T2DPointArray; maxWidth, maxHeight: Integer); callconv
  442. var
  443.   width, height, h, i: Integer;
  444. begin
  445.   h := High(ATPA);
  446.   for i := h downto 0 do
  447.   begin  
  448.     TPADimensions(ATPA[i], width, height);
  449.     if ((width <= maxWidth) and (height <= maxHeight)) then
  450.       Delete(ATPA, i, 1);
  451.   end;
  452. end;
Advertisement
Add Comment
Please, Sign In to add comment