| 
									
										
										
										
											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-03-30 01:41:29 +08:00
										 |  |  | void e2d::Font::setFamily(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, | 
					
						
							| 
									
										
										
										
											2018-03-30 01:41:29 +08:00
										 |  |  | 		L"zh-cn", | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  | 		&m_pTextFormat | 
					
						
							|  |  |  | 	); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ASSERT(SUCCEEDED(hr), "Create IDWriteTextFormat Failed!"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 01:41:29 +08:00
										 |  |  | IDWriteTextFormat * e2d::Font::getDWriteTextFormat() | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  | { | 
					
						
							|  |  |  | 	if (m_bRecreateNeeded) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		_initTextFormat(); | 
					
						
							|  |  |  | 		m_bRecreateNeeded = false; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return m_pTextFormat; | 
					
						
							|  |  |  | } |