137 lines
4.0 KiB
C++
137 lines
4.0 KiB
C++
/*
|
|
*
|
|
* 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 <vector>
|
|
#include <map>
|
|
#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<TChartString> m_StringArray;
|
|
//! Map containing all the fonts used for the title lines.
|
|
std::map<int, CChartFont> 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_)
|