last works ...

This commit is contained in:
2025-09-27 19:49:17 +03:30
parent 21ce1ebf4f
commit 0d32543974
9 changed files with 1307 additions and 153 deletions
+497 -49
View File
@@ -39,13 +39,13 @@ enum ENUM_XCHARTOBJECTS
{
//
// Global ...
X_BOX_OBJ = 7861,
X_BAR_ARROW_OBJ = 7862,
//
X_SIGNAL_OBJ = 8860,
X_OHCL_OBJ = 8863,
X_RR_OBJ = 8864,
X_PIVOT_OBJ = 8865,
X_EMPTY_OBJ = 7860, // Empty
X_BOX_OBJ = 7861, // XBox
X_BAR_ARROW_OBJ = 7862, // XBarArrow
X_SIGNAL_OBJ = 8860, // XSignal
X_OHCL_OBJ = 8863, // XBar
X_RR_OBJ = 8864, // XRR
X_PIVOT_OBJ = 8865, // XPivot
//
// 9860 Custom Object ...
};
@@ -78,6 +78,12 @@ string ToString(ENUM_X_CHART_IDS value)
return result;
}
string ToXString(ENUM_XCHARTOBJECTS value)
{
//
return EnumToString(value);
}
struct XPOIStyle
{
//
@@ -372,9 +378,26 @@ class XCBaseObject : public CChartObject
*/
void ObjName(string value)
{
//
Name(value);
mObjName = value;
}
virtual string TypeString()
{
return ToXString(X_EMPTY_OBJ);
}
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual int Type(void) const
{
return ((int)X_EMPTY_OBJ);
}
/**
* Destroy ...
*/
@@ -481,6 +504,38 @@ class XCBarArrowObject : public XCBaseObject
//
// Virtual ...
/**
* Destroy ...
*/
void virtual Destroy()
{
//
mArrow.Detach();
mArrow.Delete();
//
Detach();
Delete();
}
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual int Type(void)
{
return (int)X_BAR_ARROW_OBJ;
}
/**
* Type as String ...
**/
string TypeString() override
{
return ToXString(X_BAR_ARROW_OBJ);
}
//
// Setter(s) ...
@@ -687,6 +742,48 @@ class XCSignalObject : public XCBaseObject
return result;
}
//
// Virtual ...
/**
* Destroy ...
*/
void virtual Destroy()
{
//
mTPTrend.Detach();
mTPTrend.Delete();
mSLTrend.Detach();
mSLTrend.Delete();
mEntryTrend.Detach();
mEntryTrend.Delete();
//
mTargetTrends.Clear();
//
Detach();
Delete();
}
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual int Type(void)
{
return (int)X_SIGNAL_OBJ;
}
/**
* Type as String ...
**/
string TypeString() override
{
return ToXString(X_SIGNAL_OBJ);
}
//
// Setter(s) ...
@@ -867,16 +964,6 @@ class XCSignalObject : public XCBaseObject
mEntryTrend.Style(value);
}
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual ENUM_XCHARTOBJECTS Type()
{
return X_SIGNAL_OBJ;
}
//
private:
//
@@ -950,6 +1037,24 @@ class XCRRObject : public XCSignalObject
//
return result;
}
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual int Type(void)
{
return (int)X_RR_OBJ;
}
/**
* Type as String ...
**/
string TypeString() override
{
return ToXString(X_RR_OBJ);
}
};
//
@@ -1072,6 +1177,49 @@ class XCOHCLObject : public XCBaseObject
return result;
}
//
// Virtual ...
/**
* Destroy ...
*/
void virtual Destroy()
{
//
mBodyRect.Detach();
mBodyRect.Delete();
//
mLowShadowRect.Detach();
mLowShadowRect.Delete();
//
mHighShadowRect.Detach();
mHighShadowRect.Delete();
//
Detach();
Delete();
}
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual int Type(void)
{
return (int)X_OHCL_OBJ;
}
/**
* Type as String ...
**/
string TypeString() override
{
return ToXString(X_OHCL_OBJ);
}
//
// Getter(s) / Setter(s) ...
@@ -1244,19 +1392,6 @@ class XCOHCLObject : public XCBaseObject
HighShadowFill(fill);
}
//
// Virtual ...
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual ENUM_XCHARTOBJECTS Type()
{
return X_OHCL_OBJ;
}
//
private:
//
@@ -1375,6 +1510,45 @@ class XCBoxObject : public XCBaseObject
return result;
}
//
// Virtual ...
/**
* Destroy ...
*/
void virtual Destroy()
{
//
mAt.Detach();
mAt.Delete();
//
mRect.Detach();
mRect.Delete();
//
Detach();
Delete();
}
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual int Type(void)
{
return (int)X_BOX_OBJ;
}
/**
* Type as String ...
**/
string TypeString() override
{
return ToXString(X_BOX_OBJ);
}
//
// Getter(s) / Setter(s) ...
@@ -1430,19 +1604,6 @@ class XCBoxObject : public XCBaseObject
mRect.Fill(value);
}
//
// Virtual ...
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual ENUM_XCHARTOBJECTS Type()
{
return X_BOX_OBJ;
}
//
private:
//
@@ -1685,10 +1846,24 @@ class XCPivotAnalysisObject : public XCBaseObject
//
if (model.pivots[i].IsPeak())
{
//
if (mPeaks == NULL)
{
mPeaks = new CArrayObj();
}
//
mPeaks.Add(iObj);
}
else
{
//
if (mVales == NULL)
{
mVales = new CArrayObj();
}
//
mVales.Add(iObj);
}
}
@@ -1723,9 +1898,17 @@ class XCPivotAnalysisObject : public XCBaseObject
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual ENUM_XCHARTOBJECTS Type()
virtual int Type(void)
{
return X_PIVOT_OBJ;
return (int)X_PIVOT_OBJ;
}
/**
* Type as String ...
**/
string TypeString() override
{
return ToXString(X_PIVOT_OBJ);
}
/**
@@ -1734,14 +1917,34 @@ class XCPivotAnalysisObject : public XCBaseObject
void virtual Destroy()
{
//
Detach();
Delete();
DestroyObjects(mPeaks);
DestroyObjects(mVales);
//
DestroyObject(mUpper);
DestroyObject(mLower);
DestroyObject(mSupportBox);
DestroyObject(mResistanceBox);
//
delete mPeaks;
delete mVales;
delete mUpper;
delete mLower;
delete mSupportBox;
delete mResistanceBox;
//
ZeroMemory(mPeaks);
ZeroMemory(mVales);
ZeroMemory(mUpper);
ZeroMemory(mLower);
ZeroMemory(mSupportBox);
ZeroMemory(mResistanceBox);
//
Detach();
Delete();
}
//
@@ -2050,6 +2253,12 @@ class XCPivotAnalysisObject : public XCBaseObject
*/
void PeaksWidth(int value)
{
//
if (mPeaks == NULL)
{
return;
}
//
// Normalize ...
value = NormalizeInt(value, 1);
@@ -2081,6 +2290,12 @@ class XCPivotAnalysisObject : public XCBaseObject
*/
void PeaksColor(color value)
{
//
if (mPeaks == NULL)
{
return;
}
//
// Validate ...
int count = mPeaks.Total();
@@ -2108,6 +2323,12 @@ class XCPivotAnalysisObject : public XCBaseObject
*/
void PeaksAnchor(ENUM_ARROW_ANCHOR value)
{
//
if (mPeaks == NULL)
{
return;
}
//
// Validate ...
int count = mPeaks.Total();
@@ -2135,6 +2356,12 @@ class XCPivotAnalysisObject : public XCBaseObject
*/
void ValesWidth(int value)
{
//
if (mVales == NULL)
{
return;
}
//
// Normalize ...
value = NormalizeInt(value, 1);
@@ -2166,6 +2393,12 @@ class XCPivotAnalysisObject : public XCBaseObject
*/
void ValesColor(color value)
{
//
if (mVales == NULL)
{
return;
}
//
// Validate ...
int count = mVales.Total();
@@ -2193,6 +2426,12 @@ class XCPivotAnalysisObject : public XCBaseObject
*/
void ValesAnchor(ENUM_ARROW_ANCHOR value)
{
//
if (mVales == NULL)
{
return;
}
//
// Validate ...
int count = mVales.Total();
@@ -2216,8 +2455,8 @@ class XCPivotAnalysisObject : public XCBaseObject
//
private:
//
CArrayObj mPeaks;
CArrayObj mVales;
CArrayObj *mPeaks;
CArrayObj *mVales;
CChartObjectTrend *mUpper;
CChartObjectTrend *mLower;
XCBoxObject *mSupportBox;
@@ -2331,6 +2570,215 @@ void DestroyObject(CChartObjectTrend *&object)
ZeroMemory(object);
}
/**
* Completely Destroy all Chart Objects ...
*
* @param objects: CArrayObj, pointer refrence Specified Data Source ...
*/
void DestroyObjects(CArrayObj *&objects)
{
//
// Validate Exists ...
if (objects == NULL)
{
return;
}
//
// Count Childs ...
int count = objects.Total();
if (!IsValidSize(count))
{
return;
}
//
// Destroy all Childs ...
for (int i = 0; i < count; i++)
{
//
// Checking Types ...
int iType = ((CChartObject *)objects.At(i)).Type();
//
string iTypeStr = NULL;
if (iType == X_EMPTY_OBJ)
{
//
XCBaseObject *iObj = (XCBaseObject *)objects.At(i);
iTypeStr = iObj.TypeString();
//
if (iTypeStr == ToXString(X_BOX_OBJ))
{
iType = X_BOX_OBJ;
}
else if (iTypeStr == ToXString(X_BAR_ARROW_OBJ))
{
iType = X_BAR_ARROW_OBJ;
}
else if (iTypeStr == ToXString(X_SIGNAL_OBJ))
{
iType = X_SIGNAL_OBJ;
}
else if (iTypeStr == ToXString(X_OHCL_OBJ))
{
iType = X_OHCL_OBJ;
}
else if (iTypeStr == ToXString(X_RR_OBJ))
{
iType = X_RR_OBJ;
}
else if (iTypeStr == ToXString(X_PIVOT_OBJ))
{
iType = X_PIVOT_OBJ;
}
}
//
string iName = ((CChartObject *)objects.At(i)).Name();
if (!IsSpecifiedValid(iName))
{
iName = ((XCBaseObject *)objects.At(i)).ObjName();
}
//
switch (iType)
{
//
case X_RR_OBJ: {
//
XCRRObject *iObj = (XCRRObject *)objects.At(i);
iObj.Destroy();
//
delete iObj;
ZeroMemory(iObj);
}
break;
case X_BOX_OBJ: {
//
XCBoxObject *iObj = (XCBoxObject *)objects.At(i);
iObj.Destroy();
iObj.Detach();
iObj.Delete();
//
delete iObj;
ZeroMemory(iObj);
}
break;
case X_OHCL_OBJ: {
//
XCOHCLObject *iObj = (XCOHCLObject *)objects.At(i);
iObj.Destroy();
//
delete iObj;
ZeroMemory(iObj);
}
break;
case X_PIVOT_OBJ: {
//
XCPivotAnalysisObject *iObj = (XCPivotAnalysisObject *)objects.At(i);
iObj.Destroy();
//
delete iObj;
ZeroMemory(iObj);
}
break;
case X_SIGNAL_OBJ: {
//
XCSignalObject *iObj = (XCSignalObject *)objects.At(i);
iObj.Destroy();
//
delete iObj;
ZeroMemory(iObj);
}
break;
case X_BAR_ARROW_OBJ: {
//
XCBarArrowObject *iObj = (XCBarArrowObject *)objects.At(i);
iObj.Destroy();
//
delete iObj;
ZeroMemory(iObj);
}
break;
//
// Default Object Types ...
case OBJ_VLINE:
case OBJ_HLINE:
case OBJ_TREND:
case OBJ_TRENDBYANGLE:
case OBJ_CYCLES:
case OBJ_ARROWED_LINE:
case OBJ_CHANNEL:
case OBJ_STDDEVCHANNEL:
case OBJ_REGRESSION:
case OBJ_PITCHFORK:
case OBJ_GANNLINE:
case OBJ_GANNFAN:
case OBJ_GANNGRID:
case OBJ_FIBO:
case OBJ_FIBOTIMES:
case OBJ_FIBOFAN:
case OBJ_FIBOARC:
case OBJ_FIBOCHANNEL:
case OBJ_EXPANSION:
case OBJ_ELLIOTWAVE5:
case OBJ_ELLIOTWAVE3:
case OBJ_RECTANGLE:
case OBJ_TRIANGLE:
case OBJ_ELLIPSE:
case OBJ_ARROW_THUMB_UP:
case OBJ_ARROW_THUMB_DOWN:
case OBJ_ARROW_UP:
case OBJ_ARROW_DOWN:
case OBJ_ARROW_STOP:
case OBJ_ARROW_CHECK:
case OBJ_ARROW_LEFT_PRICE:
case OBJ_ARROW_RIGHT_PRICE:
case OBJ_ARROW_BUY:
case OBJ_ARROW_SELL:
case OBJ_ARROW:
case OBJ_TEXT:
case OBJ_LABEL:
case OBJ_BUTTON:
case OBJ_CHART:
case OBJ_BITMAP:
case OBJ_BITMAP_LABEL:
case OBJ_EDIT:
case OBJ_EVENT:
case OBJ_RECTANGLE_LABEL: {
//
CChartObject *iObj = (CChartObject *)objects.At(i);
//
iObj.Detach();
iObj.Delete();
//
delete iObj;
ZeroMemory(iObj);
}
break;
}
//
RemoveObjects(iName);
}
//
// Destroy itSelf ...
objects.Clear();
delete objects;
ZeroMemory(objects);
}
/**
* Remove Drawn Objects from Chart ...
*