You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

428 lines
14 KiB
C

2 years ago
// XTPChartSeriesPoint.h
//
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPCHARTSERIESPOINT_H__)
#define __XTPCHARTSERIESPOINT_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
class CXTPChartSeries;
class CXTPChartSeriesView;
class CXTPChartSeriesPointCollection;
//===========================================================================
// Summary:
// CXTPChartSeriesPoint is a kind of CXTPChartElement, this class
// represents the a chart series point.
// Remarks:
//===========================================================================
class _XTP_EXT_CLASS CXTPChartSeriesPoint : public CXTPChartElement
{
DECLARE_DYNAMIC(CXTPChartSeriesPoint);
public:
//-----------------------------------------------------------------------
// Summary:
// Default constructor, makes a CXTPChartSeriesPoint object.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartSeriesPoint();
//-----------------------------------------------------------------------
// Summary:
// Overloaded constructor makes a CXTPChartSeriesPoint object.
// Parameters:
// strArgument - CXTPChartString denoting the argument.
// dValue -A double value for the point.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartSeriesPoint(const CXTPChartString& strArgument, double dValue);
//-----------------------------------------------------------------------
// Summary:
// Constructor makes a CXTPChartSeriesPoint object from the parameters.
// Parameters:
// dArgument - A double value denoting the argument.
// dValue - A double value for the point.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartSeriesPoint(double dArgument, double dValue);
//-----------------------------------------------------------------------
// Summary:
// Constructor overload which makes a CXTPChartSeriesPoint object from
// an argument and pair of values.
// Parameters:
// dArgument - Double value denoting the argument.
// dValue1 - First value for the point.
// dValue2 - Second value for the point.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartSeriesPoint(double dArgument, double dValue1, double dValue2);
//-----------------------------------------------------------------------
// Summary:
// Constructor overload which makes a CXTPChartSeriesPoint object from
// an argument and pair of values.
// Parameters:
// strArgumentt - CXTPChartString denoting the argument.
// dValue1 - First value for the point.
// dValue2 - Second value for the point.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartSeriesPoint(const CXTPChartString& strArgument, double dValue1, double dValue2);
//-----------------------------------------------------------------------
// Summary:
// Constructor overload which makes a CXTPChartSeriesPoint object from
// an argument and four values.
// Parameters:
// strArgument - String value denoting the argument.
// dValue1 - Double value for the point.
// dValue2 - Second value for the point.
// dValue3 - Third value for the point.
// dValue4 - Fourth value for the point.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartSeriesPoint(const CXTPChartString& strArgument, double dValue1, double dValue2, double dValue3, double dValue4);
CXTPChartSeriesPoint(double dArgument, double dValue1, double dValue2, double dValue3, double dValue4);
//-------------------------------------------------------------------------
// Summary:
// Destroys a CXTPChartSeriesPoint object, handles cleanup
//-------------------------------------------------------------------------
virtual ~CXTPChartSeriesPoint();
public:
//-------------------------------------------------------------------------
// Summary:
// This function returns the value at a particular index.
// Parameters:
// nIndex - Zero based index in which points are kept internally.
// Returns:
// A double value at the, nIndex position.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
double GetValue(int nIndex) const;
void SetValue(int nIndex, double dValue);
CXTPChartColor GetColor() const;
void SetColor(const CXTPChartColor& clr);
//-------------------------------------------------------------------------
// Summary:
// This function returns the string argument of a point.
// Returns:
// A CXTPChartString value argument of the point.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
CXTPChartString GetArgument() const;
//-------------------------------------------------------------------------
// Summary:
// This function returns the double value of the argument of a point.
// Returns:
// A double value argument of the point.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
double GetArgumentValue() const;
void SetArgumentValue(double dArgument);
//-------------------------------------------------------------------------
// Summary:
// This function returns the double value of the string argument of a point.
// Returns:
// A double value corresponding to the string argument of the point.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
double GetInternalArgumentValue() const;
//-------------------------------------------------------------------------
// Summary:
// This function returns the palette index used.
// Returns:
// An int value corresponding to the chosen palette index.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
int GetPaletteIndex() const;
//-------------------------------------------------------------------------
// Summary:
// This function returns the previous point in the series.
// Returns:
// A CXTPChartSeriesPoint pointer corresponding to the previous point .
// Remarks:
// See Also:
//-------------------------------------------------------------------------
CXTPChartSeriesPoint* GetPreviousPoint() const;
//-------------------------------------------------------------------------
// Summary:
// This function returns the next point in the series.
// Returns:
// A CXTPChartSeriesPoint pointer corresponding to the next point.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
CXTPChartSeriesPoint* GetNextPoint() const;
void SetLegentText(LPCTSTR lpszLegendText);
CXTPChartString GetLegendText() const;
int GetValueLength() const;
CXTPChartSeries* GetSeries() const;
void SetInternalArgument(double dInternalArgument);
//-----------------------------------------------------------------------
// Summary:
// Call this member to set the tooltip of the action.
// Parameters:
// lpszTooltip - Tooltip to be set.
// See Also: SetCaption, SetDescription, SetPrompt
//-----------------------------------------------------------------------
void SetTooltipText(LPCTSTR lpszTooltip);
//-----------------------------------------------------------------------
// Summary:
// Call this member to get the action's tooltip.
// Returns:
// Tooltip of the control.
//-----------------------------------------------------------------------
CXTPChartString GetTooltipText() const;
void SetLabelText(LPCTSTR lpszLegendText);
CXTPChartString GetLabelText() const;
public:
virtual void DoPropExchange(CXTPPropExchange* pPX);
protected:
//-------------------------------------------------------------------------
// Summary:
// This function handles so internal, argument type conversions.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
void CommonConstruct();
protected:
CXTPChartString m_strArgument; //String argument.
double m_dArgument; //Double value of argument.
double m_dValues[4]; //The array of values.
int m_nLength; //The size of the array, m_dValues.
double m_dInternalArgument; //The double value of the string argument.
int m_nPaletteIndex; //The chosen palette index.
int m_nIndex; //Number of elements present in the array m_dValues.
CXTPChartString m_strLegentText; // Text to show in legend
CXTPChartString m_strTooltipText;
CXTPChartString m_strLabelText;
CXTPChartColor m_clrPoint;
public:
BOOL m_bSpecial;
protected:
friend class CXTPChartSeriesPointCollection;
friend class CXTPChartContent;
friend class CXTPChartSeriesVirtualPointCollection;
};
//===========================================================================
// Summary:
// CXTPChartSeriesPointCollection class represents a collection of chart
// series points.
// Remarks:
//
//===========================================================================
class _XTP_EXT_CLASS CXTPChartSeriesPointCollection : public CXTPChartElementCollection
{
DECLARE_DYNAMIC(CXTPChartSeriesPointCollection)
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs CXTPChartSeriesPointCollection object.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartSeriesPointCollection();
//-------------------------------------------------------------------------
// Summary:
// Destroys a CXTPChartSeriesPointCollection object, handles cleanup
//-------------------------------------------------------------------------
virtual ~CXTPChartSeriesPointCollection();
public:
//-------------------------------------------------------------------------
// Summary:
// This function add a point represented by the class CXTPChartSeriesPoint
// to the internal array of points.
// Parameters:
// pPoint - The pointer to a CXTPChartSeriesPoint object.
// Returns:
// The pointer to CXTPChartSeriesPoint object, which is added to the object array.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
CXTPChartSeriesPoint* Add(CXTPChartSeriesPoint* pPoint);
//-------------------------------------------------------------------------
// Summary:
// Call this function to get the pointer to the CXTPChartSeriesPoint object
// at a particular index.
// Parameters:
// nIndex - The zero based index.
// Returns:
// The pointer to CXTPChartSeriesPoint object, which stays at the index nIndex.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
virtual CXTPChartSeriesPoint* GetAt(int nIndex) const;
//-------------------------------------------------------------------------
// Summary:
// Call this method to add batch of points.
// Parameters:
// nCount - Number of points to add
// Remarks:
// Its optimized way to add big number of points - Memory will be allocated once for all of them.
// See Also:
//-------------------------------------------------------------------------
void AddPoints(int nCount);
public:
virtual void DoPropExchange(CXTPPropExchange* pPX);
protected:
friend class CXTPChartSeries;
};
//////////////////////////////////////////////////////////////////////////
// CXTPChartSeriesVirtualPointCollection
class _XTP_EXT_CLASS CXTPChartSeriesVirtualPointCollection : public CXTPChartSeriesPointCollection
{
typedef double (*GETPOINTVALUEPTR)(CXTPChartSeries* pSeries, double x);
public:
CXTPChartSeriesVirtualPointCollection(double dMinRange, double dMaxRange, double dStep, GETPOINTVALUEPTR pCallbackPtr);
~CXTPChartSeriesVirtualPointCollection();
public:
virtual CXTPChartSeriesPoint* GetAt(int nIndex) const;
int GetCount() const;
protected:
double m_dMinRange;
double m_dMaxRange;
double m_dStep;
int m_nCount;
CXTPChartSeriesPoint* m_pVirtualPoint;
GETPOINTVALUEPTR m_pCallbackPtr;
};
AFX_INLINE CXTPChartSeriesPoint* CXTPChartSeriesPointCollection::GetAt(int nIndex) const {
return nIndex >= 0 && nIndex < m_arrElements.GetSize() ? (CXTPChartSeriesPoint*)m_arrElements.GetAt(nIndex) : NULL;
}
AFX_INLINE CXTPChartString CXTPChartSeriesPoint::GetArgument() const {
return m_strArgument;
}
AFX_INLINE double CXTPChartSeriesPoint::GetArgumentValue() const {
return m_dArgument;
}
AFX_INLINE double CXTPChartSeriesPoint::GetInternalArgumentValue() const {
return m_dInternalArgument;
}
AFX_INLINE int CXTPChartSeriesPoint::GetPaletteIndex() const {
return m_nPaletteIndex;
}
AFX_INLINE void CXTPChartSeriesPoint::SetLegentText(LPCTSTR lpszLegendText) {
m_strLegentText = lpszLegendText;
OnChartChanged();
}
AFX_INLINE CXTPChartString CXTPChartSeriesPoint::GetLegendText() const {
return m_strLegentText;
}
AFX_INLINE int CXTPChartSeriesPoint::GetValueLength() const {
return m_nLength;
}
AFX_INLINE CXTPChartColor CXTPChartSeriesPoint::GetColor() const {
return m_clrPoint;
}
AFX_INLINE void CXTPChartSeriesPoint::SetColor(const CXTPChartColor& clr) {
m_clrPoint = clr;
OnChartChanged();
}
AFX_INLINE CXTPChartString CXTPChartSeriesPoint::GetTooltipText() const {
return m_strTooltipText;
}
AFX_INLINE void CXTPChartSeriesPoint::SetTooltipText(LPCTSTR lpszTooltip) {
m_strTooltipText = lpszTooltip;
}
AFX_INLINE CXTPChartString CXTPChartSeriesPoint::GetLabelText() const {
return m_strLabelText;
}
AFX_INLINE void CXTPChartSeriesPoint::SetLabelText(LPCTSTR lpszLabelText) {
m_strLabelText = lpszLabelText;
OnChartChanged();
}
AFX_INLINE void CXTPChartSeriesPoint::SetArgumentValue(double dArgument) {
m_dArgument = dArgument;
OnChartChanged();
}
#endif //#if !defined(__XTPCHARTSERIESPOINT_H__)