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.
381 lines
14 KiB
C++
381 lines
14 KiB
C++
// XTPChartContent.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(__XTPCHARTCONTENT_H__)
|
|
#define __XTPCHARTCONTENT_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
class CXTPChartDeviceContext;
|
|
class CXTPChartDiagram;
|
|
class CXTPChartTitleCollection;
|
|
class CXTPChartElementView;
|
|
class CXTPChartSeriesCollection;
|
|
class CXTPChartLegend;
|
|
class CXTPChartPanelCollection;
|
|
class CXTPChartSeries;
|
|
class CXTPChartAppearance;
|
|
class CXTPChartLegendView;
|
|
class CXTPPropExchange;
|
|
class CXTPMarkupContext;
|
|
class CXTPChartContentView;
|
|
class CXTPChartDiagramView;
|
|
class CXTPChartBorder;
|
|
class CXTPChartDeviceCommand;
|
|
|
|
enum XTPChartPanelDirection
|
|
{
|
|
xtpChartPanelVertical,
|
|
xtpChartPanelHorizontal
|
|
};
|
|
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// This class represents the chart content, which is a kind of CXTPChartElement.
|
|
// This class has a panel collection, series collection, title collection
|
|
// and legend.
|
|
// Remarks:
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPChartContent : public CXTPChartElement
|
|
{
|
|
DECLARE_DYNAMIC(CXTPChartContent)
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPChartContent object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartContent();
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPChartContent object, handles cleanup
|
|
//-------------------------------------------------------------------------
|
|
virtual ~CXTPChartContent();
|
|
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the the title collection object.
|
|
// Returns:
|
|
// A pointer to CXTPChartTitleCollection object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartTitleCollection* GetTitles() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the the series collection object.
|
|
// Returns:
|
|
// A pointer to CXTPChartSeriesCollection object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartSeriesCollection* GetSeries() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the the chart legend object.
|
|
// Returns:
|
|
// A pointer to CXTPChartLegend object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartLegend* GetLegend() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the the primary diagram of the chart. Its the diagram of first Panel.
|
|
// Returns:
|
|
// A pointer to CXTPChartDiagram object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartDiagram* GetPrimaryDiagram() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the the panels of the chart.
|
|
// Returns:
|
|
// A pointer to CXTPChartPanelCollection object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartPanelCollection* GetPanels() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the the appearance of the chart.
|
|
// Returns:
|
|
// A pointer to CXTPChartAppearance object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartAppearance* GetAppearance() const;
|
|
|
|
CXTPChartBorder* GetBorder() const;
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to draw the content.
|
|
// Parameters:
|
|
// pDC - A pointer to the chart device context object.
|
|
// rcBounds - The bound of the chart content.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
void DrawContent(CXTPChartDeviceContext* pDC, CRect rcBounds);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to create the device command tree.
|
|
// Parameters:
|
|
// hDC - The GDI device context HANDLE.
|
|
// rcBounds - The rectangle of the device context.
|
|
// Returns:
|
|
// A pointer to CXTPChartDeviceCommand object - root of Command tree.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartDeviceCommand* CreateDeviceComand(CXTPChartDeviceContext* pDC, CRect rcBounds);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to create the device context for the drawing.
|
|
// Parameters:
|
|
// hDC - The GDI device context HANDLE.
|
|
// rcBounds - The rectangle of the device context.
|
|
// Returns:
|
|
// A pointer to CXTPChartDeviceContext object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartDeviceContext* CreateDeviceContext(CXTPChartContainer* pContainer, HDC hDC, CRect rcBounds, BOOL bWindowDC);
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the background color of the chart content.
|
|
// Returns:
|
|
// A CXTPChartColor object which describes an ARGB value.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartColor GetBackgroundColor() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to set the background color of the chart content.
|
|
// Parameters:
|
|
// clr - Color of the background
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
void SetBackgroundColor(const CXTPChartColor& clr);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get the appearance background color of the chart content.
|
|
// Returns:
|
|
// A CXTPChartColor object which describes an ARGB value.
|
|
// Remarks:
|
|
// Call SetBackgroundColor to set custom background color. If custom background not set - color from current appearance will be used.
|
|
//-----------------------------------------------------------------------
|
|
CXTPChartColor GetActualBackgroundColor() const;
|
|
CXTPChartColor GetActualBorderColor() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function whenever a change in the content of the chart.
|
|
// This call causes a redraw.
|
|
// Parameters:
|
|
// updateOptions - Options that indicated what kind of changes done.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
virtual void OnChartChanged(XTPChartUpdateOptions updateOptions = xtpChartUpdateView);
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to Store/Load the properties of content
|
|
// using the specified data object.
|
|
// Parameters:
|
|
// pPX - Source or destination CXTPPropExchange data object reference.
|
|
// Remarks:
|
|
// This member function is used to store or load property data to or
|
|
// from a storage.
|
|
//-----------------------------------------------------------------------
|
|
virtual void DoPropExchange(CXTPPropExchange* pPX);
|
|
|
|
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to calculate the view of the chart content.
|
|
// Parameters:
|
|
// pDC - Pointer to the chart device context object.
|
|
// rcBounds - The bounding rectangle.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
virtual CXTPChartContentView* CreateView(CXTPChartDeviceContext* pDC, CRect rcBounds);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to update the color of the points from the palette.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
void UpdateDiagram();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to update the content whenever there is a change
|
|
// in the series style.
|
|
// Parameters:
|
|
// pSeries - A pointer to chart series object.
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
virtual void OnSeriesStyleChanged(CXTPChartSeries* pSeries);
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get distance between 2 panels
|
|
// Returns:
|
|
// Distance between 2 panels.
|
|
//
|
|
// Remarks:
|
|
// 10 pixels is used by default
|
|
//-----------------------------------------------------------------------
|
|
int GetPanelDistance() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to set distance between 2 panels
|
|
// Parameters:
|
|
// nDistance - New distance to b set
|
|
// Remarks:
|
|
//-----------------------------------------------------------------------
|
|
void SetPanelDistance(int nDistance);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to get layout direction of panels - top-to-bottom or left-to-right.
|
|
// Returns:
|
|
// XTPChartPanelDirection value indicates direction of panels (xtpChartPanelVertical/xtpChartPanelHorizontal) //
|
|
//-----------------------------------------------------------------------
|
|
XTPChartPanelDirection GetPanelDirection() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to set layout direction of panels - top-to-bottom or left-to-right.
|
|
// Parameters:
|
|
// nDirection - XTPChartPanelDirection value indicates direction of panels (xtpChartPanelVertical/xtpChartPanelHorizontal) //
|
|
//-----------------------------------------------------------------------
|
|
void SetPanelDirection(XTPChartPanelDirection nDirection);
|
|
|
|
public:
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to enable markup for tab captions
|
|
// Parameters:
|
|
// bEnable - TRUE to enable markup
|
|
//-------------------------------------------------------------------------
|
|
void EnableMarkup(BOOL bEnable = TRUE);
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Summary:
|
|
// Returns markup context
|
|
//-------------------------------------------------------------------------
|
|
CXTPMarkupContext* GetMarkupContext() const;
|
|
|
|
protected:
|
|
void AddContainer(CXTPChartContainer* pContainer);
|
|
void RemoveContainer(CXTPChartContainer* pContainer);
|
|
|
|
|
|
|
|
protected:
|
|
CXTPChartPanelCollection* m_pPanels; //The panel collection.
|
|
CXTPChartTitleCollection* m_pTitles; //The title collection.
|
|
CXTPChartSeriesCollection* m_pSeries; //The series collection.
|
|
CXTPChartLegend* m_pLegend; //The legend object.
|
|
|
|
CXTPChartAppearance* m_pAppearance; //The chart appearance object.
|
|
|
|
CXTPChartBorder* m_pBorder; //The chart border.
|
|
|
|
CXTPChartColor m_clrBackground; //The chart background color.
|
|
|
|
CArray<CXTPChartContainer*, CXTPChartContainer*> m_arrContainers; //The chart containers
|
|
|
|
CXTPMarkupContext* m_pMarkupContext; // Markup context
|
|
|
|
int m_nPanelDistance; // Panel distance
|
|
XTPChartPanelDirection m_nPanelDirection; // Panel direction.
|
|
|
|
friend class CXTPChartSeriesCollection;
|
|
friend class CXTPChartSeries;
|
|
friend class CXTPChartControl;
|
|
};
|
|
|
|
|
|
AFX_INLINE CXTPChartTitleCollection* CXTPChartContent::GetTitles() const {
|
|
return m_pTitles;
|
|
}
|
|
|
|
AFX_INLINE CXTPChartSeriesCollection* CXTPChartContent::GetSeries() const {
|
|
return m_pSeries;
|
|
}
|
|
AFX_INLINE CXTPChartLegend* CXTPChartContent::GetLegend() const {
|
|
return m_pLegend;
|
|
}
|
|
AFX_INLINE CXTPChartPanelCollection* CXTPChartContent::GetPanels() const {
|
|
return m_pPanels;
|
|
}
|
|
AFX_INLINE CXTPChartAppearance* CXTPChartContent::GetAppearance() const {
|
|
return m_pAppearance;
|
|
}
|
|
AFX_INLINE CXTPMarkupContext* CXTPChartContent::GetMarkupContext() const {
|
|
return m_pMarkupContext;
|
|
}
|
|
AFX_INLINE int CXTPChartContent::GetPanelDistance() const {
|
|
return m_nPanelDistance;
|
|
}
|
|
AFX_INLINE void CXTPChartContent::SetPanelDistance(int nDistance) {
|
|
m_nPanelDistance = nDistance;
|
|
OnChartChanged();
|
|
}
|
|
AFX_INLINE XTPChartPanelDirection CXTPChartContent::GetPanelDirection() const {
|
|
return m_nPanelDirection;
|
|
}
|
|
AFX_INLINE void CXTPChartContent::SetPanelDirection(XTPChartPanelDirection nDirection) {
|
|
m_nPanelDirection = nDirection;
|
|
OnChartChanged();
|
|
}
|
|
AFX_INLINE void CXTPChartContent::SetBackgroundColor(const CXTPChartColor& clr) {
|
|
m_clrBackground = clr;
|
|
OnChartChanged();
|
|
}
|
|
AFX_INLINE CXTPChartBorder* CXTPChartContent::GetBorder() const {
|
|
return m_pBorder;
|
|
}
|
|
|
|
#endif //#if !defined(__XTPCHARTCONTENT_H__)
|