FH98ViewOnPlaneSoftware/Src/XtremeToolKitPro/Chart/Styles/Pyramid/XTPChartPyramidSeriesStyle.h

302 lines
11 KiB
C++

// XTPChartPyramidSeriesStyle.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(__XTPCHARTPYRAMIDSERIESSTYLE_H__)
#define __XTPCHARTPYRAMIDSERIESSTYLE_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
class CXTPChartSeriesView;
class CXTPChartBorder;
class CXTPChartFillStyle;
//===========================================================================
// Summary:
// This class abstracts the basic style of a pie serie.This class is a kind of
// CXTPChartSeriesStyle.
// Remarks:
// A pie chart (or a circle graph) is a circular chart divided into sectors,
// illustrating percents. In a pie chart, the arc length of each sector (and
// consequently its central angle and area), is proportional to the quantity
// it represents. Together, the sectors create a full disk.
//===========================================================================
class _XTP_EXT_CLASS CXTPChartPyramidSeriesStyle : public CXTPChartSeriesStyle
{
DECLARE_SERIAL(CXTPChartPyramidSeriesStyle)
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPChartPyramidSeriesStyleBase object.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartPyramidSeriesStyle();
//-------------------------------------------------------------------------
// Summary:
// Destroys a CXTPChartPyramidSeriesStyleBase object, handle cleanup.
//-------------------------------------------------------------------------
virtual ~CXTPChartPyramidSeriesStyle();
public:
int GetPointDistance() const;
void SetPointDistance(int nPointDistance);
double GetHeightToWidthRatio() const;
void SetHeightToWidthRatio(double dRatio);
public:
//-------------------------------------------------------------------------
// Summary:
// Call this function to get the background fill style.
// Returns:
// Returns the pointer to CXTPChartFillStyle object, which abstracts
// various fill styles.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
CXTPChartFillStyle* GetFillStyle() const;
CXTPChartBorder* GetBorder() const;
public:
void DoPropExchange(CXTPPropExchange* pPX);
protected:
CXTPChartDiagram* CreateDiagram();
CXTPChartSeriesView* CreateView(CXTPChartSeries* pSeries, CXTPChartDiagramView* pDiagramView);
BOOL IsStyleDiagram(CXTPChartDiagram* pDiagram) const;
#ifdef _XTP_ACTIVEX
public:
//{{AFX_CODEJOCK_PRIVATE
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
DECLARE_OLETYPELIB_EX(CXTPChartPyramidSeriesStyle);
DECLARE_OLECREATE_EX(CXTPChartPyramidSeriesStyle)
//}}AFX_CODEJOCK_PRIVATE
#endif
protected:
double m_dHeightToWidthRatio;
int m_nPointDistance;
CXTPChartBorder* m_pBorder;
CXTPChartFillStyle* m_pFillStyle;
};
//===========================================================================
// Summary:
// This class abstracts the view of a pie series.This class is a kind of
// CXTPChartSeriesView.
// Remarks:
// A pie chart (or a circle graph) is a circular chart divided into sectors,
// illustrating percents. In a pie chart, the arc length of each sector (and
// consequently its central angle and area), is proportional to the quantity
// it represents. Together, the sectors create a full disk.
//===========================================================================
class _XTP_EXT_CLASS CXTPChartPyramidSeriesView : public CXTPChartSeriesView
{
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPChartPyramidSeriesView object.
// Parameters:
// pSeries - Pointer to pie series object.
// pDiagramView - Pointer to the pie diagram view.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartPyramidSeriesView(CXTPChartSeries* pSeries, CXTPChartDiagramView* pDiagramView);
//-------------------------------------------------------------------------
// Summary:
// Destroys a CXTPChartPyramidSeriesView object, handle cleanup.
//-------------------------------------------------------------------------
virtual ~CXTPChartPyramidSeriesView();
public:
//-------------------------------------------------------------------------
// Summary:
// Call this function to calculate the pie series point layout.
// Parameters:
// pDC - Pointer to the chart device context.
// rcBounds - The rectangular boundary.
//-------------------------------------------------------------------------
virtual void CalculatePointLayout(CXTPChartDeviceContext* pDC, CRect rcBounds);
//-------------------------------------------------------------------------
// Summary:
// Call this function to calculate the pie series label layout.
// Parameters:
// pDC - Pointer to the chart device context.
// rcBounds - The rectangular boundary.
//-------------------------------------------------------------------------
void CalculateLabelLayout(CXTPChartDeviceContext* pDC);
//-------------------------------------------------------------------------
// Summary:
// Call this function to get the inner bounds of the diagram.
// Returns:
// A chart rect object denoting the rectangular boundary.
//-------------------------------------------------------------------------
virtual CXTPChartRectF GetInnerBounds() const;
protected:
//-------------------------------------------------------------------------
// Summary:
// Use this function to create the pie series point view object.
// Parameters:
// pDC - Pointer to chart device context.
// pPoint - Pointer to chart series point.
// Returns:
// A pointer to the chart series point view.
//-------------------------------------------------------------------------
virtual CXTPChartSeriesPointView* CreateSeriesPointView(CXTPChartDeviceContext* pDC, CXTPChartSeriesPoint* pPoint, CXTPChartElementView* pParentView);
//-------------------------------------------------------------------------
// Summary:
// This function create a CXTPChartDeviceCommand object, this object
// represents the rendering of the pie series.
// Parameters:
// pDC - Pointer to a CXTPChartDeviceContext object.
// rcBounds - The rectangular boundary of the legend.
// Returns:
// Returns CXTPChartDeviceCommand object, this object handles
// the rendering of an element in the chart.Here it handles
// the drawing of the pie series.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
CXTPChartDeviceCommand* CreateDeviceCommand(CXTPChartDeviceContext* pDC);
CXTPChartDeviceCommand* CreateLegendDeviceCommand(CXTPChartDeviceContext* pDC, CRect rcBounds);
void CalculateValues();
public:
CXTPChartDeviceCommand* CreateLegendDeviceCommand(CXTPChartDeviceContext* pDC, CRect rcBounds,
CXTPChartColor color1, CXTPChartColor color2, CXTPChartColor clrBorder);
protected:
CXTPChartRectF m_rcInnterBounds;
};
//===========================================================================
// Summary:
// This class abstracts the view of a pie series point.This class is a kind of
// CXTPChartSeriesPointView.
// Remarks:
// A pie chart (or a circle graph) is a circular chart divided into sectors,
// illustrating percents. In a pie chart, the arc length of each sector (and
// consequently its central angle and area), is proportional to the quantity
// it represents. Together, the sectors create a full disk.
//===========================================================================
class _XTP_EXT_CLASS CXTPChartPyramidSeriesPointView : public CXTPChartSeriesPointView
{
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPChartPyramidSeriesPointView object.
// Parameters:
// pPoint - Pointer to chart series point.
// Remarks:
//-----------------------------------------------------------------------
CXTPChartPyramidSeriesPointView(CXTPChartSeriesPoint* pPoint, CXTPChartElementView* pParentView);
//-------------------------------------------------------------------------
// Summary:
// Destroys a CXTPChartPyramidSeriesPointView object, handle cleanup.
//-------------------------------------------------------------------------
virtual ~CXTPChartPyramidSeriesPointView();
public:
//-------------------------------------------------------------------------
// Summary:
// Use this function to calculate the layout of the pie series point.
// Parameters:
// dAngle - The swipe angle of the sector(pie).
//-------------------------------------------------------------------------
void CalculateLayout(int nIndex, int nCount, double dFrom, double dTo);
CXTPChartColor GetBorderActualColor() const;
protected:
//-------------------------------------------------------------------------
// Summary:
// This function create a CXTPChartDeviceCommand object, this object
// represents the rendering of the pie series point.
// Parameters:
// pDC - Pointer to a CXTPChartDeviceContext object.
// Returns:
// Returns CXTPChartDeviceCommand object, this object handles
// the rendering of an element in the chart.Here it handles
// the drawing of the pie series point.
// Remarks:
// See Also:
//-------------------------------------------------------------------------
virtual CXTPChartDeviceCommand* CreateDeviceCommand(CXTPChartDeviceContext* pDC);
CXTPChartDeviceCommand* CreateLegendDeviceCommand(CXTPChartDeviceContext* pDC, CRect rcBounds);
protected:
double m_dValue; //The value of the point.
public:
CXTPChartRectF m_rc;
double m_dFrom;
double m_dTo;
friend class CXTPChartPyramidSeriesView;
};
AFX_INLINE int CXTPChartPyramidSeriesStyle::GetPointDistance() const {
return m_nPointDistance;
}
AFX_INLINE void CXTPChartPyramidSeriesStyle::SetPointDistance(int nPointDistance) {
m_nPointDistance = nPointDistance;
OnChartChanged();
}
AFX_INLINE CXTPChartFillStyle* CXTPChartPyramidSeriesStyle::GetFillStyle() const {
return m_pFillStyle;
}
AFX_INLINE CXTPChartBorder* CXTPChartPyramidSeriesStyle::GetBorder() const {
return m_pBorder;
}
AFX_INLINE CXTPChartRectF CXTPChartPyramidSeriesView::GetInnerBounds() const {
return m_rcInnterBounds;
}
AFX_INLINE void CXTPChartPyramidSeriesStyle::SetHeightToWidthRatio(double dRatio) {
m_dHeightToWidthRatio = dRatio;
OnChartChanged();
}
AFX_INLINE double CXTPChartPyramidSeriesStyle::GetHeightToWidthRatio() const {
return m_dHeightToWidthRatio;
}
#endif //#if !defined(__XTPCHARTPYRAMIDSERIESSTYLE_H__)