2017-10-18 22:13:20 +08:00
|
|
|
#include "..\enodes.h"
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
e2d::Font::Font()
|
2017-10-18 22:13:20 +08:00
|
|
|
: m_pTextFormat(nullptr)
|
2018-02-07 16:37:12 +08:00
|
|
|
, m_Color(Color::WHITE)
|
2017-10-18 22:13:20 +08:00
|
|
|
, m_fFontSize(22)
|
2018-02-07 16:37:12 +08:00
|
|
|
, m_FontWeight(FontWeight::REGULAR)
|
2017-10-18 22:13:20 +08:00
|
|
|
, m_bItalic(false)
|
|
|
|
|
, m_bRecreateNeeded(true)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-27 21:07:43 +08:00
|
|
|
e2d::Font::Font(String fontFamily, double fontSize /* = 22 */, UINT32 color /* = EColor::WHITE */, UINT32 fontWeight, bool italic /* = false */)
|
2017-12-15 21:51:07 +08:00
|
|
|
: m_pTextFormat(nullptr)
|
2018-02-07 16:37:12 +08:00
|
|
|
, m_Color(Color::WHITE)
|
2017-12-15 21:51:07 +08:00
|
|
|
, m_fFontSize(22)
|
2018-02-07 16:37:12 +08:00
|
|
|
, m_FontWeight(FontWeight::REGULAR)
|
2017-12-15 21:51:07 +08:00
|
|
|
, m_bItalic(false)
|
|
|
|
|
, m_bRecreateNeeded(true)
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
this->setFamily(fontFamily);
|
|
|
|
|
this->setSize(fontSize);
|
2017-10-26 17:17:30 +08:00
|
|
|
this->setColor(color);
|
2017-10-18 22:13:20 +08:00
|
|
|
this->setWeight(fontWeight);
|
|
|
|
|
this->setItalic(italic);
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
e2d::Font::~Font()
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
SafeReleaseInterface(&m_pTextFormat);
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-27 21:07:43 +08:00
|
|
|
double e2d::Font::getFontSize() const
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
return m_fFontSize;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
UINT32 e2d::Font::getFontWeight() const
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
return m_FontWeight;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
UINT32 e2d::Font::getColor() const
|
2017-10-26 17:17:30 +08:00
|
|
|
{
|
|
|
|
|
return m_Color;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
bool e2d::Font::isItalic() const
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
return m_bItalic;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::Font::setFamily(const String & fontFamily)
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
m_sFontFamily = fontFamily;
|
|
|
|
|
m_bRecreateNeeded = true;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-27 21:07:43 +08:00
|
|
|
void e2d::Font::setSize(double fontSize)
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
2018-02-27 21:07:43 +08:00
|
|
|
m_fFontSize = static_cast<float>(fontSize);
|
2017-10-18 22:13:20 +08:00
|
|
|
m_bRecreateNeeded = true;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::Font::setWeight(UINT32 fontWeight)
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
m_FontWeight = fontWeight;
|
|
|
|
|
m_bRecreateNeeded = true;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::Font::setColor(UINT32 color)
|
2017-10-26 17:17:30 +08:00
|
|
|
{
|
|
|
|
|
m_Color = color;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::Font::setItalic(bool value)
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
m_bItalic = value;
|
|
|
|
|
m_bRecreateNeeded = true;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
void e2d::Font::_initTextFormat()
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
SafeReleaseInterface(&m_pTextFormat);
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
HRESULT hr = Renderer::getIDWriteFactory()->CreateTextFormat(
|
2017-12-11 18:17:24 +08:00
|
|
|
m_sFontFamily,
|
|
|
|
|
NULL,
|
2017-10-26 17:17:30 +08:00
|
|
|
DWRITE_FONT_WEIGHT(m_FontWeight),
|
2017-10-18 22:13:20 +08:00
|
|
|
m_bItalic ? DWRITE_FONT_STYLE_ITALIC : DWRITE_FONT_STYLE_NORMAL,
|
|
|
|
|
DWRITE_FONT_STRETCH_NORMAL,
|
|
|
|
|
m_fFontSize,
|
2017-12-11 18:17:24 +08:00
|
|
|
L"en-us",
|
2017-10-18 22:13:20 +08:00
|
|
|
&m_pTextFormat
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
ASSERT(SUCCEEDED(hr), "Create IDWriteTextFormat Failed!");
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-07 16:37:12 +08:00
|
|
|
IDWriteTextFormat * e2d::Font::_getTextFormat()
|
2017-10-18 22:13:20 +08:00
|
|
|
{
|
|
|
|
|
if (m_bRecreateNeeded)
|
|
|
|
|
{
|
|
|
|
|
_initTextFormat();
|
|
|
|
|
m_bRecreateNeeded = false;
|
|
|
|
|
}
|
|
|
|
|
return m_pTextFormat;
|
|
|
|
|
}
|