// XTPChartLineStyle.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(__XTPCHARTLINESTYLE_H__)
#define __XTPCHARTLINESTYLE_H__
//}}AFX_CODEJOCK_PRIVATE

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

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

class CXTPChartElement;
class CXTPChartDeviceCommand;
//===========================================================================
// Summary:
//     This class represents a chart line style, which is a kind of CXTPCmdTarget.
// Remarks:
//===========================================================================
class _XTP_EXT_CLASS CXTPChartLineStyle : public CXTPCmdTarget
{
public:
	//-----------------------------------------------------------------------
	// Summary:
	//     Constructs a CXTPChartLineStyle object.
	// Parameters:
	//     pOwner - The owner element.
	// Remarks:
	//-----------------------------------------------------------------------
	CXTPChartLineStyle(CXTPChartElement* pOwner);

public:
	//-----------------------------------------------------------------------
	// Summary:
	//     Call this function to release the object once the object is no more
	//     relevant
	// Remarks:
	//-----------------------------------------------------------------------
	void Release();

public:
	//-----------------------------------------------------------------------
	// Summary:
	//     Call this function to set the thickness of the line.
	// Parameters:
	//     nThickness - The integer value denoting the line thickness.
	// Remarks:
	//-----------------------------------------------------------------------
	void SetThickness(int nThickness);
	//-----------------------------------------------------------------------
	// Summary:
	//     Call this function to get the thickness of the line.
	// Returns:
	//     An integer value denoting the line thickness.
	// Remarks:
	//-----------------------------------------------------------------------
	int GetThickness() const;

	//-----------------------------------------------------------------------
	// Summary:
	//     Call this function to set dash line style.
	// Parameters:
	//     nDashStyle - An enumerated value specifying the line style of choice.
	// Remarks:
	//-----------------------------------------------------------------------
	void SetDashStyle(XTPChartDashStyle nDashStyle);

	//-----------------------------------------------------------------------
	// Summary:
	//     Call this function to get the dash line style.
	// Returns:
	//     An enumerated value specifying the line style.
	// Remarks:
	//-----------------------------------------------------------------------
	XTPChartDashStyle GetDashStyle() const;

public:
	//-------------------------------------------------------------------------
	// Summary:
	//     This function create a CXTPChartDeviceCommand object, this object
	//     represents the rendering of a line.
	// Parameters:
	//     point1     - The start point of the line.
	//     point2     - The end point of the line.
	//     color      - The color of the line.
	// Returns:
	//     Returns CXTPChartDeviceCommand object, this object handles
	//     the rendering of an element in the chart.Here it handles
	//     the drawing of a line.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartDeviceCommand* CreateDeviceCommand(const CXTPChartPointF& point1, const CXTPChartPointF& point2, const CXTPChartColor& color);
	CXTPChartDeviceCommand* CreateDeviceCommand(const CXTPChartPoints& points, const CXTPChartColor& color);

	//-------------------------------------------------------------------------
	// Summary:
	//     This function create a CXTPChartDeviceCommand object, this object
	//     represents the rendering of a spline.
	// Parameters:
	//     points     - The points which form the spline.
	//     color      - The color of the line.
	// Returns:
	//     Returns CXTPChartDeviceCommand object, this object handles
	//     the rendering of an element in the chart.Here it handles
	//     the drawing of a spline.
	// Remarks:
	// See Also:
	//-------------------------------------------------------------------------
	CXTPChartDeviceCommand* CreateSplineDeviceCommand(const CXTPChartPoints& points, const CXTPChartColor& color);

public:
	virtual void DoPropExchange(CXTPPropExchange* pPX);


#ifdef _XTP_ACTIVEX
public:
	//{{AFX_CODEJOCK_PRIVATE
	DECLARE_DISPATCH_MAP()
	DECLARE_INTERFACE_MAP()
	DECLARE_OLETYPELIB_EX(CXTPChartLineStyle);
//}}AFX_CODEJOCK_PRIVATE
#endif

protected:
	int m_nThickness;               //The line thickness.
	XTPChartDashStyle m_nDashStyle;  //The dash style.
	CXTPChartElement* m_pOwner;      //The owner element.
};

AFX_INLINE void CXTPChartLineStyle::Release() {
	InternalRelease();
}
AFX_INLINE int CXTPChartLineStyle::GetThickness() const {
	return m_nThickness;
}
AFX_INLINE XTPChartDashStyle CXTPChartLineStyle::GetDashStyle() const {
	return m_nDashStyle;
}


#endif //#if !defined(__XTPCHARTLINESTYLE_H__)
