-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChartTitle.h
136 lines (121 loc) · 3.9 KB
/
ChartTitle.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*
*
* ChartTitle.h
*
* Written by Cédric Moonen ([email protected])
*
*
*
* 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_)