/* * * ChartTitle.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_CHARTTITLE_H__49972787_6D28_4F81_A12F_420947456913__INCLUDED_) #define AFX_CHARTTITLE_H__49972787_6D28_4F81_A12F_420947456913__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include #include #include "ChartString.h" #include "ChartFont.h" class CChartCtrl; //! This class is responsible for the titles displayed on the control. /** Several lines can be displayed in the title, each one possibly with its own font. It is retrieved by calling the GetTitle() function from the CChartCtrl class. **/ class CChartTitle { friend CChartCtrl; public: //! Returns the number of lines in the title. size_t GetStringCount() const; //! Returns a specific line, specified by its index. TChartString GetString(size_t Index) const; //! Adds a new line to the title. void AddString(const TChartString& NewString); //! Removes all the lines displayed in the title. void RemoveAll(); //! Sets the default font. /** @param iPointSize The font point size. @param strFaceName The font face name ("Times New Roman", "Arial", ...) **/ void SetFont(int iPointSize, const TChartString& strFaceName); //! Sets the default font. /** This function allows to set extended font style by passing a CChartFont object. @param newFont The new font. **/ void SetFont(const CChartFont& newFont); //! Sets the font for a specific line. /** @param iLineIndex The index of the line to set the font. @param iPointSize The font point size. @param strFaceName The font face name ("Times New Roman", "Arial", ...) **/ void SetLineFont(int iLineIndex, int iPointSize, const TChartString& strFaceName); //! Sets the font for a specific line. /** This function allows to set extended font style by passing a CChartFont object. @param iLineIndex The index of the line to set the font. @param newFont The new font. **/ void SetLineFont(int iLineIndex, const CChartFont& newFont); //! Shows/hides the title. void SetVisible(bool bVisible) { m_bIsVisible = bVisible; } //! Returns true if the title is visible. bool IsVisible() const { return m_bIsVisible; } //! Returns the text color. COLORREF GetColor() const { return m_TextColor; } //! Sets the text color. void SetColor(COLORREF NewColor); //! Returns true if a screen point is in the region of the title. BOOL IsPointInside(const CPoint& screenPoint) const; private: //! Constructor CChartTitle(CChartCtrl* pParent); //! Destructor virtual ~CChartTitle(); //! Sets the rectangle in which to display the title. void SetTitleRect(const CRect& newRect) { m_TitleRect = newRect; } //! Returns the size of the title lines. CSize GetSize(CDC* pDC); //! Draw the title. void Draw(CDC *pDC); //! The parent charting control. CChartCtrl* m_pParentCtrl; //! Vector containing all strings to display. std::vector m_StringArray; //! Map containing all the fonts used for the title lines. std::map m_mapLineFonts; //! Specifies if the title is visible. bool m_bIsVisible; //! The default font used to draw the titles. CChartFont m_DefaultFont; //! The text color. COLORREF m_TextColor; //! The rectangle in which to draw the titles. CRect m_TitleRect; }; #endif // !defined(AFX_CHARTTITLE_H__49972787_6D28_4F81_A12F_420947456913__INCLUDED_)