/* * * ChartLineSerie.h * * Written by Cédric Moonen (cedric_moonen@hotmail.com) * * * * This code may be used for any non-commercial and commercial purposes in a compiled form. * The code may be redistributed as long as it remains unmodified and providing that the * author name and this disclaimer remain intact. The sources can be modified WITH the author * consent only. * * This code is provided without any garanties. I cannot be held responsible for the damage or * the loss of time it causes. Use it at your own risks * * An e-mail to notify me that you are using this code is appreciated also. * * */ #if !defined(AFX_CHARTLINESERIE_H__792C2F20_9650_42FA_B13D_E63911C98CE5__INCLUDED_) #define AFX_CHARTLINESERIE_H__792C2F20_9650_42FA_B13D_E63911C98CE5__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "ChartXYSerie.h" //! Specialization of a CChartSerie to display a line series. /** The data points are connected by line segments. The curve can also be smoothed. **/ class CChartLineSerie : public CChartXYSerie { public: //! Returns the pen style (plain, dashed, dotted, ...) /** For a list of pen styles available, see the CreatePen function in MSDN. **/ int GetPenStyle() const { return m_iPenStyle; } //! Sets the pen style (plain, dashed, dotted, ...) /** For a list of pen styles available, see the CreatePen function in MSDN. **/ void SetPenStyle(int NewStyle); //! Returns the pen width int GetWidth() const { return m_iLineWidth; } //! Sets the pen width void SetWidth(int PenWidth); //! Enables the smoothing of the curve (slower). void SetSmooth(bool bSmooth); //! Constructor CChartLineSerie(CChartCtrl* pParent); //! Destructor virtual ~CChartLineSerie(); //! Check whether a screen point is on the series. /** This function returns true if the screen point is close to a line segment. If the screen point is also close to a specific point of the series, the index of the point is stored in the uIndex parameter. Otherwise, this parameter contains INVALID_POINT. @param screenPoint The screen point to test @param uIndex If the point is close to a specific point of the series, its index is stored here. @return true if the point is on the series **/ bool IsPointOnSerie(const CPoint& screenPoint, unsigned& uIndex) const; private: //! Draws the legend icon for the series. /** @param pDC The device context used to draw @param rectBitmap The rectangle in which to draw the legend icon **/ void DrawLegend(CDC* pDC, const CRect& rectBitmap) const; //! Draws the most recent points of the series. /** This function should only draw the points that were not previously drawn. @param pDC The device context used to draw **/ void Draw(CDC* pDC); //! Redraws the full series. /** @param pDC The device context used to draw **/ void DrawAll(CDC *pDC); //! Checks whether a point is close to a line segment bool IsNearLine(long Axl, long Ayl,long Bxl, long Byl, long Cxl, long Cyl) const; //! The pen width int m_iLineWidth; //! The pen style int m_iPenStyle; //! Specifies if the curve is smoothed bool m_bSmooth; }; #endif // !defined(AFX_CHARTLINESERIE_H__792C2F20_9650_42FA_B13D_E63911C98CE5__INCLUDED_)