// XTPChartAxis.h
//
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
// (c)1998-2011 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(__XTPCHARTAXIS_H__)
#define __XTPCHARTAXIS_H__
//}}AFX_CODEJOCK_PRIVATE

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

class CXTPChartDiagram2D;
class CXTPChartAxisGridLines;
class CXTPChartAxisLabel;
class CXTPChartAxisTitle;
class CXTPChartAxisTickMarks;
class CXTPChartScaleTypeMap;
class CXTPChartAxisRange;
class CXTPChartAxisView;
class CXTPChartDiagramView;
class CXTPChartDeviceContext;
class CXTPChartAxisAppearance;
class CXTPChartFillStyle;
class CXTPChartAxisConstantLines;
class CXTPChartAxisCustomLabels;
class CXTPChartAxisStrips;
class CXTPChartElementView;

#include "../XTPChartElement.h"
#include "../XTPChartDefines.h"
#include "../Types/XTPChartTypes.h"

//===========================================================================
// Summary:
//     Enumerates the axis alignment.
// Remarks:
//===========================================================================
enum XTPChartAxisAlignment
{
	xtpChartAxisNear,    //For Y axis, near means left side of the chart. For X axis it is the bottom side of the chart.
	xtpChartAxisFar      //For Y axis, near means right side of the chart. For X axis it is the top side of the chart.
};

//===========================================================================
// Summary:
//     This abstract base class represents a chart axis as a kind of chart element.
//     It abstarcts all the features of a chart axis.
// Remarks:
//     This is an abstract base class, act as the parent for the classes
//     CXTPChartAxisX and CXTPChartAxisY.
//===========================================================================
class _XTP_EXT_CLASS CXTPChartAxis : public CXTPChartElement
{
	DECLARE_DYNAMIC(CXTPChartAxis)
public:
	//-----------------------------------------------------------------------
	// Summary:
	//     Constructs a CXTPChartAxis object.
	// Parameters:
	//     pDiagram     - Pointer to a CXTPChartDiagram2D object.
	// Remarks:
	//-----------------------------------------------------------------------
	CXTPChartAxis(CXTPChartDiagram2D* pDiagram);

	//-------------------------------------------------------------------------
	// Summary:
	//     Destroys a CXTPChartLegend object, handles cleanup
	//-------------------------------------------------------------------------
	virtual ~CXTPChartAxis();

public:

	//-------------------------------------------------------------------------
	// Summary:
	//     This function creates the view (CXTPChartAxisView)of the axis.
	// Parameters:
	//     pDC - The chart device context object pointer.
	//     pParentView - The parent view of the axis.
	// Returns:
	//     Returns an pointer to CXTPChartAxisView object newly created.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	virtual CXTPChartAxisView* CreateView(CXTPChartDeviceContext* pDC, CXTPChartElementView* pParentView);

	//-------------------------------------------------------------------------
	// Summary:
	//     This function updates the axis, with respect to the series values.
	// Remarks:Call this function whenever there is a change in series values.
	// See Also:
	//-------------------------------------------------------------------------
	void UpdateRange(CXTPChartDeviceContext* pDC, CXTPChartAxisView* pView);

	//-------------------------------------------------------------------------
	// Summary:
	//     Override this method to tell that whether the axis is vertical.
	// Returns:
	//     Returns TRUE if the axis is vertical, FALSE if the axis is not vertical.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	virtual BOOL IsVertical() const = 0;

	//-------------------------------------------------------------------------
	// Summary:
	//     Override this method to tell that whether the axis is value type.
	// Returns:
	//     Returns TRUE if the axis is value type, FALSE if the axis is not value type.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	virtual BOOL IsValuesAxis() const = 0;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the pointer to chart diagram 2D object associated
	//     with the chart axis object.
	// Returns:
	//     Returns apointer to CXTPChartDiagram2D object.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartDiagram2D* GetDiagram() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to get the scale type used for the axis.
	// Returns:
	//     Returns an enumerated value specifying the scale type used.
	// Remarks:
	//     The main scale types are - Qualitative, Numerical, Date time.
	// See Also:
	//-------------------------------------------------------------------------
	XTPChartScaleType GetScaleType() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the scale type map object associated with the axis.
	// Returns:
	//     Returns the pointer to a scale type map object.
	// Remarks:CXTPChartScaleTypeMap object keep track of the apparent and internal(actual)
	//         value of a point in the axis.
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartScaleTypeMap* GetScaleTypeMap() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Override this function to return the side margin value of the chart axis.
	// Parameters:
	//     nMinValue - The minimum value of the chart axis.
	//     nMaxValue - The maximum value of the chart axis.
	// Returns:
	//     Returns a double value, represents the margin.
	// See Also:
	//-------------------------------------------------------------------------
	virtual double CalcSideMarginsValue(double nMinValue, double nMaxValue) const = 0;

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to get object which represents the range of the axis.
	// Returns:
	//     Returns the pointer to the chart axis range object.
	// Remarks:
	//     CXTPChartAxisRange object handles the range related things of an axis.
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartAxisRange* GetRange() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get object which represents the label of the axis.
	// Returns:
	//     Returns the pointer to the axis label object.
	// Remarks:CXTPChartAxisLabel object handles the chart label and its appearance.
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartAxisLabel* GetLabel() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to get object which represents the axis gridlines.
	// Returns:
	//     Returns the pointer to the axis gridlines object.
	// Remarks:
	//     CXTPChartAxisGridLines object handles the axis gridlines and its appearance.
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartAxisGridLines* GetGridLines() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the associated object which abstracts the axis
	//     tick marks.
	// Returns:
	//     Returns the pointer to the axis tick marks object.
	// Remarks:
	//     CXTPChartAxisTickMarks object handles the axis tick marks and its appearance.
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartAxisTickMarks* GetTickMarks() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to get the associated object which deals with constant lines
	//     parallel to the axis.
	// Returns:
	//     Returns the pointer to the axis constant lines object.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartAxisConstantLines* GetConstantLines() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to get the associated object which deals with custom labels of aixs
	// Returns:
	//     Returns the pointer to the axis custom labels object.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartAxisCustomLabels* GetCustomLabels() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the associated object which deals with strips
	//     parallel to the axis.
	// Returns:
	//     Returns the pointer to the axis strips object.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartAxisStrips* GetStrips() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to get the associated object which deals the axis title
	// Returns:
	//     Returns the pointer to the axis title object.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartAxisTitle* GetTitle() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the color of the axis.
	// Returns:
	//     Returns the pointer to CXTPChartColor object, which give ARGB color value.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartColor GetActualColor() const;
	CXTPChartColor GetColor() const;
	void SetColor(const CXTPChartColor& color);

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the first interlaced strips color of the axis.
	// Returns:
	//     Returns the pointer to CXTPChartColor object, which give ARGB color value.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartColor GetInterlacedColor() const;
	CXTPChartColor GetActualInterlacedColor() const;
	void SetInterlacedColor(const CXTPChartColor& color);

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to get the second interlaced strips color of the axis.
	// Returns:
	//     Returns the pointer to CXTPChartColor object, which give ARGB color value.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartColor GetInterlacedColor2() const;
	CXTPChartColor GetActualInterlacedColor2() const;
	void SetInterlacedColor2(const CXTPChartColor& color);

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the second interlaced strips background
	//     fill style.
	// Returns:
	//     Returns the pointer to CXTPChartFillStyle object, which abstracts
	//     various fill styles.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartFillStyle* GetInterlacedFillStyle() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the alignment of the axis.
	// Returns:
	//     Returns an enumerated value XTPChartAxisAlignment,corresponding
	//     to the alignment selected.
	// Remarks:
	///     Usage
	//      xtpChartAxisNear - for Y axis, near means left side of the chart
	//                        for X axis it is the bottom side of the chart.
	//      xtpChartAxisFar -  for Y axis, near means right side of the chart
	//                        for X axis it is the top side of the chart.
	//-------------------------------------------------------------------------
	XTPChartAxisAlignment GetAlignment() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to set the alignment of the axis.
	// Parameters:
	//     nAlignment - enumerated value XTPChartAxisAlignment,corresponding
	//     to the alignment to be selected.
	// Remarks:
	///     Usage
	//      xtpChartAxisNear - for Y axis, near means left side of the chart
	//                        for X axis it is the bottom side of the chart.
	//      xtpChartAxisFar -  for Y axis, near means right side of the chart
	//                        for X axis it is the top side of the chart.
	//-------------------------------------------------------------------------
	void SetAlignment(XTPChartAxisAlignment nAlignment);

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get whether the interlaced strips are used.
	// Returns:
	//     Returns TRUE if the interlaced strips are enabled, FALSE if it is
	//     not enabled.
	// Remarks:
	//-------------------------------------------------------------------------
	BOOL IsInterlaced() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to enable/disable the interlaced strips.
	// Parameters:
	//     bInterlaced - TRUE if the interlaced strips are to be enabled, FALSE
	//                  to remove the interlaced strips.
	// Remarks:
	//-------------------------------------------------------------------------
	void SetInterlaced(BOOL bInterlaced);

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to get whether the axis is visible.
	// Returns:
	//     Returns TRUE if the axis is visible, FALSE if the axis is
	//     not visible.
	// Remarks:
	//-------------------------------------------------------------------------
	BOOL IsVisible() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to show/hide the axis.
	// Parameters:
	//     bVisible -TRUE to make the axis visible, FALSE to hide the axis.
	// Remarks:
	//-------------------------------------------------------------------------
	void SetVisible(BOOL bVisible);

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to get the thickness of the axis line.
	// Returns:
	//     Returns an int value denoting the thickness of the axis line.
	// Remarks:
	//-------------------------------------------------------------------------
	int GetThickness() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to set the thickness of the axis line.
	// Parameters:
	//     nThicknes - The thickness of the axis line.
	// Remarks:
	//-------------------------------------------------------------------------
	void SetThickness(int nThicknes);

	//-------------------------------------------------------------------------
	// Summary:
	//     Call this function to set the minor count of the axis  grid lines.
	// Parameters:
	//     nMinorCount - The number of minor grid lines.
	// Remarks:
	//-------------------------------------------------------------------------
	void SetMinorCount(int nMinorCount);

	//-------------------------------------------------------------------------
	// Summary:
	//     This function gives the minor count of the axis  grid lines.
	// Returns:
	//     The number of minor grid lines.
	// Remarks:
	//-------------------------------------------------------------------------
	int GetMinorCount() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     Use this function to reverse order the axis values.
	// Parameters:
	//     bRevered - TRUE for normal order, FALSE for reverse order.
	// Remarks:
	//-------------------------------------------------------------------------
	void SetReversed(BOOL bRevered);

	//-------------------------------------------------------------------------
	// Summary:
	//     This function gives whether the axis points are reverse ordered or not.
	// Returns:
	//     TRUE for normal order, FALSE for reverse order.
	// Remarks:
	//-------------------------------------------------------------------------
	BOOL IsReversed() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     This function returns the chart axis appeance object.
	// Returns:
	//     The pointer to chart axis appeance object.
	// Remarks:
	//-------------------------------------------------------------------------
	CXTPChartAxisAppearance* GetAppearance() const;

	BOOL GetGridSpacingAuto() const;
	void SetGridSpacingAuto(BOOL bGridSpacingAuto);

	double GetGridSpacing() const;
	void SetGridSpacing(double bGridSpacing);

	BOOL IsSecondary() const;

	BOOL IsAllowZoom() const;
	void SetAllowZoom(BOOL bAllowZoom);

public:
	void DoPropExchange(CXTPPropExchange* pPX);

#ifdef _XTP_ACTIVEX
public:
//{{AFX_CODEJOCK_PRIVATE
	DECLARE_DISPATCH_MAP()
	DECLARE_INTERFACE_MAP()
	DECLARE_OLETYPELIB_EX(CXTPChartAxis);

	LPDISPATCH OleGetConstantLines();
	LPDISPATCH OleGetCustomLabels();
	LPDISPATCH OleGetStrips();
	LPDISPATCH OleGetLabel();
	LPDISPATCH OleGetTickMarks();
	LPDISPATCH OleGetTitle();
	LPDISPATCH OleGetGridLines();
	LPDISPATCH OleGetRange();
	LPDISPATCH OleGetInterlacedFillStyle();

	OLE_COLOR OleGetColor();
	void OleSetColor(OLE_COLOR clr);
	OLE_COLOR OleGetInterlacedColor();
	void OleSetInterlacedColor(OLE_COLOR clr);
	OLE_COLOR OleGetInterlacedColor2();
	void OleSetInterlacedColor2(OLE_COLOR clr);


//}}AFX_CODEJOCK_PRIVATE
#endif

protected:
	CXTPChartDiagram2D* m_pDiagram;                  //The pointer to chart digram 2d object.
	BOOL m_bVisible;                                //TRUE if the axis is visible, FALSE if invisible.
	BOOL m_bReversed;                               //FALSE if the axis valus are in natural order, TRUE if it is in reverse order.
	int m_nThickness;                               //The thickness of axis line.
	int m_nMinorCount;                              //The number of minors present.
	BOOL m_bSecondary;
	XTPChartAxisAlignment m_nAlignment;              //The chart axis alignment, near or far.
	CXTPChartColor m_clrColor;                       //The chart color.
	CXTPChartColor m_clrInterlacedColor;             //The first interlaced color.
	CXTPChartColor m_clrInterlacedColor2;            //The second interlaced color.
	CXTPChartFillStyle* m_pInterlacedFillStyle;      //The fill style of interlaced strips.

	BOOL m_bInterlaced;                             //TRUE if the chart has interlaced strips parallel to the axis.

	double m_dGridSpacing;                          //The spacing of the grid lines.
	BOOL m_bGridSpacingAuto;                        //TURE if automatic spaceing of grid lines selected.FALSE for specific values.
	BOOL m_bAllowZoom;


	CXTPChartAxisGridLines* m_pGridLines;            //Pointer to axis gridlines object.
	CXTPChartAxisLabel* m_pLabel;                    //Pointer to axis lable object.
	CXTPChartAxisTitle* m_pTitle;                    //Pointer to axis title object.
	CXTPChartAxisTickMarks* m_pTickMarks;            //Pointer to axis tick marks object.
	CXTPChartScaleTypeMap* m_pScaleTypeMap;          //Pointer to axis scale type object.
	CXTPChartAxisRange* m_pRange;                    //Pointer to axis range object.
	CXTPChartAxisConstantLines* m_pConstantLines;    //Pointer to axis constant lines object.
	CXTPChartAxisCustomLabels* m_pCustomLabels;      //Pointer to axis custom labels object.
	CXTPChartAxisStrips* m_pStrips;                  //Pointer to axis strips object.

	XTPChartScaleType m_nScaleType;                  //Enumeated value denote the axis scale type.

	friend class CXTPChartAxisView;
	friend class CXTPChartDiagram2D;
};

//===========================================================================
// Summary:
//     CXTPChartAxisY specialized class from CXTPChartAxis class represents the X axis
//     of a chart.
// Remarks:It includes the features, specific to X axis.
//
//===========================================================================
class _XTP_EXT_CLASS CXTPChartAxisX : public CXTPChartAxis
{
public:
	//-----------------------------------------------------------------------
	// Summary:
	//     Constructs a CXTPChartAxisX object.
	// Parameters:
	//     pDiagram     - Pointer to a CXTPChartDiagram2D object.
	// Remarks:
	//-----------------------------------------------------------------------
	CXTPChartAxisX(CXTPChartDiagram2D* pDiagram);

public:

	//-------------------------------------------------------------------------
	// Summary:
	//     This is the override of base the class member, it tells that whether X axis is vertical.
	// Returns:
	//     Returns TRUE if the X axis is vertical, FALSE if the X axis is not vertical.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	virtual BOOL IsVertical() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     This is the override of base the class member,tells that whether the X axis is value type.
	// Returns:
	//     Returns TRUE if the X axis is value type, FALSE if the X axis is not value type.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	virtual BOOL IsValuesAxis() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     This override returns the side margin value of the chart X axis.
	// Parameters:
	//     nMinValue - The minimum value of the chart X axis.
	//     nMaxValue - The maximum value of the chart X axis.
	// Returns:
	//     Returns a double value, represents the margin.
	// See Also:
	//-------------------------------------------------------------------------
	virtual double CalcSideMarginsValue(double nMinValue, double nMaxValue) const;
};

//===========================================================================
// Summary:
//     CXTPChartAxisY specialized class from CXTPChartAxis class represents the Y axis
//     of a chart.
// Remarks:It includes the features, specific to Y axis.
//
//===========================================================================
class _XTP_EXT_CLASS CXTPChartAxisY : public CXTPChartAxis
{
public:
	CXTPChartAxisY(CXTPChartDiagram2D* pDiagram);

public:

	//-------------------------------------------------------------------------
	// Summary:
	//     This is the override of base the class member, it tells that whether Y axis is vertical.
	// Returns:
	//     Returns TRUE if the Y axis is vertical, FALSE if the Y axis is not vertical.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	virtual BOOL IsVertical() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     This is the override of base the class member,tells that whether the Y axis is value type.
	// Returns:
	//     Returns TRUE if the Y axis is value type, FALSE if the Y axis is not value type.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	virtual BOOL IsValuesAxis() const;

	//-------------------------------------------------------------------------
	// Summary:
	//     This override returns the side margin value of the chart Y axis.
	// Parameters:
	//     nMinValue - The minimum value of the chart Y axis.
	//     nMaxValue - The maximum value of the chart Y axis.
	// Returns:
	//     Returns a double value, represents the margin.
	// See Also:
	//-------------------------------------------------------------------------
	virtual double CalcSideMarginsValue(double nMinValue, double nMaxValue) const;
};

AFX_INLINE CXTPChartDiagram2D* CXTPChartAxis::GetDiagram() const {
	return m_pDiagram;
}
AFX_INLINE XTPChartScaleType CXTPChartAxis::GetScaleType() const {
	return m_nScaleType;
}
AFX_INLINE CXTPChartAxisRange* CXTPChartAxis::GetRange() const {
	return m_pRange;
}
AFX_INLINE CXTPChartAxisLabel* CXTPChartAxis::GetLabel() const {
	return m_pLabel;
}

AFX_INLINE CXTPChartAxisGridLines* CXTPChartAxis::GetGridLines() const {
	return m_pGridLines;
}
AFX_INLINE CXTPChartAxisConstantLines* CXTPChartAxis::GetConstantLines() const {
	return m_pConstantLines;
}
AFX_INLINE CXTPChartAxisCustomLabels* CXTPChartAxis::GetCustomLabels() const {
	return m_pCustomLabels;
}
AFX_INLINE CXTPChartAxisStrips* CXTPChartAxis::GetStrips() const {
	return m_pStrips;
}
AFX_INLINE CXTPChartAxisTickMarks* CXTPChartAxis::GetTickMarks() const {
	return m_pTickMarks;
}
AFX_INLINE BOOL CXTPChartAxis::IsInterlaced() const {
	return m_bInterlaced;
}
AFX_INLINE void CXTPChartAxis::SetInterlaced(BOOL bInterlaced) {
	m_bInterlaced = bInterlaced;
	OnChartChanged();
}
AFX_INLINE CXTPChartScaleTypeMap* CXTPChartAxis::GetScaleTypeMap() const {
	return m_pScaleTypeMap;
}
AFX_INLINE CXTPChartAxisTitle* CXTPChartAxis::GetTitle() const {
	return m_pTitle;
}
AFX_INLINE XTPChartAxisAlignment CXTPChartAxis::GetAlignment() const {
	return m_nAlignment;
}
AFX_INLINE void CXTPChartAxis::SetAlignment(XTPChartAxisAlignment nAlignment) {
	m_nAlignment = nAlignment;
	OnChartChanged();
}
AFX_INLINE BOOL CXTPChartAxis::IsVisible() const {
	return m_bVisible;
}
AFX_INLINE void CXTPChartAxis::SetVisible(BOOL bVisible) {
	m_bVisible = bVisible;
	OnChartChanged();
}
AFX_INLINE int CXTPChartAxis::GetThickness() const {
	return m_nThickness;
}
AFX_INLINE void CXTPChartAxis::SetThickness(int nThickness) {
	m_nThickness = nThickness;
	OnChartChanged();
}
AFX_INLINE int CXTPChartAxis::GetMinorCount() const {
	return m_nMinorCount;
}
AFX_INLINE void CXTPChartAxis::SetMinorCount(int nMinorCount) {
	m_nMinorCount = nMinorCount;
	OnChartChanged();
}

AFX_INLINE void CXTPChartAxis::SetReversed(BOOL bRevered) {
	m_bReversed = bRevered;
	OnChartChanged();
}
AFX_INLINE BOOL CXTPChartAxis::IsReversed() const {
	return m_bReversed;
}
AFX_INLINE BOOL CXTPChartAxis::GetGridSpacingAuto() const {
	return m_bGridSpacingAuto;
}
AFX_INLINE void CXTPChartAxis::SetGridSpacingAuto(BOOL bGridSpacingAuto) {
	m_bGridSpacingAuto = bGridSpacingAuto;
	OnChartChanged();
}
AFX_INLINE double CXTPChartAxis::GetGridSpacing() const {
	return m_dGridSpacing;
}
AFX_INLINE void CXTPChartAxis::SetGridSpacing(double dGridSpacing) {
	m_dGridSpacing = dGridSpacing;
	OnChartChanged();
}
AFX_INLINE BOOL CXTPChartAxis::IsSecondary() const {
	return m_bSecondary;
}
AFX_INLINE void CXTPChartAxis::SetColor(const CXTPChartColor& color) {
	m_clrColor = color;
	OnChartChanged();
}
AFX_INLINE void CXTPChartAxis::SetInterlacedColor(const CXTPChartColor& color) {
	m_clrInterlacedColor = color;
	OnChartChanged();
}
AFX_INLINE void CXTPChartAxis::SetInterlacedColor2(const CXTPChartColor& color) {
	m_clrInterlacedColor2 = color;
	OnChartChanged();
}
AFX_INLINE BOOL CXTPChartAxis::IsAllowZoom() const {
	return m_bAllowZoom;
}
AFX_INLINE void CXTPChartAxis::SetAllowZoom(BOOL bAllowZoom) {
	m_bAllowZoom = bAllowZoom;
}


#endif //#if !defined(__XTPCHARTAXIS_H__)
