146 lines
3.3 KiB
C++
146 lines
3.3 KiB
C++
/*
|
|
*
|
|
* ChartFont.cpp
|
|
*
|
|
* 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.
|
|
*
|
|
*/
|
|
|
|
#include "stdafx.h"
|
|
#include "ChartFont.h"
|
|
|
|
CChartFont::CChartFont(const TChartString& strFaceName, int iPointSize)
|
|
: m_strFaceName(strFaceName), m_iPointSize(iPointSize), m_bItalic(false),
|
|
m_bBold(false), m_bUnderline(false), m_bVertical(false), m_Font(), m_bDirty(true),
|
|
m_pOldFont(NULL)
|
|
{
|
|
}
|
|
|
|
CChartFont::CChartFont(const CChartFont& copy)
|
|
{
|
|
*this = copy;
|
|
}
|
|
|
|
CChartFont::CChartFont()
|
|
: m_strFaceName(_T("Microsoft Sans Serif")), m_iPointSize(100), m_bItalic(false),
|
|
m_bBold(false), m_bUnderline(false), m_bVertical(false), m_Font(), m_bDirty(true),
|
|
m_pOldFont(NULL)
|
|
{
|
|
}
|
|
|
|
CChartFont::~CChartFont()
|
|
{
|
|
m_Font.DeleteObject();
|
|
}
|
|
|
|
/*CFont* CChartFont::GetFont(CDC* pDC)
|
|
{
|
|
if (!m_pFont)
|
|
m_pFont = new CFont();
|
|
|
|
if (m_bDirty)
|
|
{
|
|
LOGFONT lf;
|
|
memset(&lf, 0, sizeof(LOGFONT));
|
|
lf.lfHeight = m_iPointSize;
|
|
_tcscpy_s(lf.lfFaceName,LF_FACESIZE-1 , m_strFaceName.c_str());
|
|
lf.lfItalic = m_bItalic;
|
|
lf.lfUnderline = m_bUnderline;
|
|
if (m_bBold)
|
|
lf.lfWeight = FW_BOLD;
|
|
else
|
|
lf.lfWeight = FW_NORMAL;
|
|
|
|
m_pFont->CreatePointFontIndirect(&lf, pDC);
|
|
}
|
|
|
|
return m_pFont;
|
|
}*/
|
|
|
|
void CChartFont::operator=(const CChartFont& objectSrc)
|
|
{
|
|
m_strFaceName = objectSrc.m_strFaceName;
|
|
m_iPointSize = objectSrc.m_iPointSize;
|
|
|
|
m_bItalic = objectSrc.m_bItalic;
|
|
m_bBold = objectSrc.m_bBold;
|
|
m_bUnderline = objectSrc.m_bUnderline;
|
|
m_bVertical = objectSrc.m_bVertical;
|
|
|
|
m_bDirty = true;
|
|
}
|
|
|
|
void CChartFont::SelectFont(CDC* pDC) const
|
|
{
|
|
if (m_bDirty)
|
|
{
|
|
LOGFONT lf;
|
|
memset(&lf, 0, sizeof(LOGFONT));
|
|
lf.lfHeight = m_iPointSize;
|
|
#ifdef _CRT_INSECURE_DEPRECATE
|
|
_tcscpy_s(lf.lfFaceName,LF_FACESIZE-1 , m_strFaceName.c_str());
|
|
#else
|
|
_tcscpy(lf.lfFaceName, m_strFaceName.c_str());
|
|
#endif
|
|
lf.lfItalic = m_bItalic;
|
|
lf.lfUnderline = m_bUnderline;
|
|
if (m_bBold)
|
|
lf.lfWeight = FW_BOLD;
|
|
else
|
|
lf.lfWeight = FW_NORMAL;
|
|
|
|
if (m_bVertical)
|
|
{
|
|
lf.lfOrientation = 900;
|
|
lf.lfEscapement = 900;
|
|
}
|
|
|
|
m_Font.DeleteObject();
|
|
m_Font.CreatePointFontIndirect(&lf, pDC);
|
|
m_bDirty = false;
|
|
}
|
|
|
|
m_pOldFont = pDC->SelectObject(&m_Font);
|
|
}
|
|
|
|
void CChartFont::UnselectFont(CDC* pDC) const
|
|
{
|
|
ASSERT(m_pOldFont);
|
|
pDC->SelectObject(m_pOldFont);
|
|
m_pOldFont = NULL;
|
|
}
|
|
|
|
void CChartFont::SetFont(const TChartString& strFaceName,
|
|
int iPointSize,
|
|
bool bItalic,
|
|
bool bBold,
|
|
bool bUnderline)
|
|
{
|
|
m_strFaceName = strFaceName;
|
|
m_iPointSize = iPointSize;
|
|
|
|
m_bItalic = bItalic;
|
|
m_bBold = bBold;
|
|
m_bUnderline = bUnderline;
|
|
|
|
m_bDirty = true;
|
|
}
|
|
|
|
void CChartFont::SetVertical(bool bVertical)
|
|
{
|
|
m_bVertical = bVertical;
|
|
m_bDirty = true;
|
|
}
|