This commit is contained in:
2025-04-20 05:58:24 +03:30
parent cdaefcf4a4
commit 98713a8b78
4 changed files with 754 additions and 286 deletions
+230 -4
View File
@@ -674,6 +674,7 @@ class XCXCAEAPOIDetector : public XCBase
//
// Tools ...
//
virtual void Default()
{
//
@@ -3376,6 +3377,7 @@ class XCXCAEAPOIDetector : public XCBase
//
void Validate(
XBoxZone &unAvailableBoxes[],
int barIndex = 0 //
)
{
@@ -3424,6 +3426,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3461,6 +3464,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3498,6 +3502,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3535,6 +3540,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3572,6 +3578,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3609,6 +3616,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3646,6 +3654,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3683,6 +3692,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3720,6 +3730,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3757,6 +3768,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3794,6 +3806,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3831,6 +3844,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3868,6 +3882,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3905,6 +3920,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3942,6 +3958,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -3979,6 +3996,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -4016,6 +4034,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -4053,6 +4072,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -4090,6 +4110,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -4127,6 +4148,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -4164,6 +4186,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -4201,6 +4224,7 @@ class XCXCAEAPOIDetector : public XCBase
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
@@ -4214,6 +4238,160 @@ class XCXCAEAPOIDetector : public XCBase
}
Clean(tmp);
}
//
has = HasRSICrossedOverOSPivots();
if (has)
{
//
Copy(
rsiCrossedOverOSPivots,
tmp //
);
Clean(rsiCrossedOverOSPivots);
while (HasChild(tmp))
{
//
XCAPivot iPivot = tmp[0];
ArrayRemove(
tmp,
0,
1 //
);
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
{
//
AddRef(
iPivot,
rsiCrossedOverOSPivots //
);
}
}
Clean(tmp);
}
//
has = HasRSICrossedUnderOBPivots();
if (has)
{
//
Copy(
rsiCrossedUnderOBPivots,
tmp //
);
Clean(rsiCrossedUnderOBPivots);
while (HasChild(tmp))
{
//
XCAPivot iPivot = tmp[0];
ArrayRemove(
tmp,
0,
1 //
);
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
{
//
AddRef(
iPivot,
rsiCrossedUnderOBPivots //
);
}
}
Clean(tmp);
}
//
has = HasCCICrossedOverOSPivots();
if (has)
{
//
Copy(
cciCrossedOverOSPivots,
tmp //
);
Clean(cciCrossedOverOSPivots);
while (HasChild(tmp))
{
//
XCAPivot iPivot = tmp[0];
ArrayRemove(
tmp,
0,
1 //
);
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
{
//
AddRef(
iPivot,
cciCrossedOverOSPivots //
);
}
}
Clean(tmp);
}
//
has = HasCCICrossedUnderOBPivots();
if (has)
{
//
Copy(
cciCrossedUnderOBPivots,
tmp //
);
Clean(cciCrossedUnderOBPivots);
while (HasChild(tmp))
{
//
XCAPivot iPivot = tmp[0];
ArrayRemove(
tmp,
0,
1 //
);
//
has = IsPivotBreaked(
iPivot,
unAvailableBoxes,
barIndex //
);
if (!has)
{
//
AddRef(
iPivot,
cciCrossedUnderOBPivots //
);
}
}
Clean(tmp);
}
//
}
//
@@ -4508,7 +4686,8 @@ class XCXCAEAPOIDetector : public XCBase
//
has = HasRSICrossedOverOSPivots();
if (has) {
if (has)
{
//
count = CountRSICrossedOverOSPivots();
for (int i = 0; i < count; i++)
@@ -4532,7 +4711,8 @@ class XCXCAEAPOIDetector : public XCBase
//
has = HasCCICrossedOverOSPivots();
if (has) {
if (has)
{
//
count = CountCCICrossedOverOSPivots();
for (int i = 0; i < count; i++)
@@ -4853,7 +5033,8 @@ class XCXCAEAPOIDetector : public XCBase
//
has = HasRSICrossedUnderOBPivots();
if (has) {
if (has)
{
//
count = CountRSICrossedUnderOBPivots();
for (int i = 0; i < count; i++)
@@ -4877,7 +5058,8 @@ class XCXCAEAPOIDetector : public XCBase
//
has = HasCCICrossedUnderOBPivots();
if (has) {
if (has)
{
//
count = CountCCICrossedUnderOBPivots();
for (int i = 0; i < count; i++)
@@ -5346,6 +5528,7 @@ class XCXCAEAPOIDetector : public XCBase
bool CheckPivotCommons(
XCAPivot &pivot,
XBoxZone &box,
XBoxZone &unAvailableBoxes[],
int barIndex = 0 //
)
{
@@ -5384,6 +5567,47 @@ class XCXCAEAPOIDetector : public XCBase
return result;
}
//
result = CheckPivotIsAvailable(
box,
unAvailableBoxes //
);
if (!result)
{
//
box.Clean();
return result;
}
//
return result;
}
//
bool CheckPivotIsAvailable(
XBoxZone &pivotBox,
XBoxZone &unAvailableBoxes[] //
)
{
//
bool result = false;
//
result = pivotBox.IsValid();
if (!result)
{
return result;
}
//
int idx = -1;
bool isExists = FindBoxIndex(
idx,
pivotBox,
unAvailableBoxes //
);
result = !isExists;
//
return result;
}
@@ -5391,6 +5615,7 @@ class XCXCAEAPOIDetector : public XCBase
//
bool IsPivotBreaked(
XCAPivot &pivot,
XBoxZone &unAvailableBoxes[],
int barIndex = 0 //
)
{
@@ -5402,6 +5627,7 @@ class XCXCAEAPOIDetector : public XCBase
result = CheckPivotCommons(
pivot,
iBox,
unAvailableBoxes,
barIndex //
);
if (!result)