| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | #include "..\enodes.h"
 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  | #include "..\Win\winbase.h"
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e2d::ESprite::ESprite() | 
					
						
							| 
									
										
										
										
											2017-10-20 00:59:26 +08:00
										 |  |  | 	: m_fSourceClipX(0) | 
					
						
							|  |  |  | 	, m_fSourceClipY(0) | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  | 	, m_pTexture(nullptr) | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | e2d::ESprite::ESprite(ETexture * texture) | 
					
						
							|  |  |  | 	: ESprite() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	loadFrom(texture); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e2d::ESprite::ESprite(ESpriteFrame * spriteFrame) | 
					
						
							|  |  |  | 	: ESprite() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	loadFrom(spriteFrame); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  | e2d::ESprite::ESprite(const EString & imageFileName) | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | 	: ESprite() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	loadFrom(new ETexture(imageFileName)); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | e2d::ESprite::ESprite(const EString & imageFileName, float x, float y, float width, float height) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	loadFrom(new ETexture(imageFileName)); | 
					
						
							|  |  |  | 	clip(x, y, width, height); | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  | e2d::ESprite::ESprite(const EString & resourceName, const EString & resourceType) | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | 	: ESprite() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	loadFrom(new ETexture(resourceName, resourceType)); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | e2d::ESprite::ESprite(const EString & resourceName, const EString & resourceType, float x, float y, float width, float height) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	loadFrom(new ETexture(resourceName, resourceType)); | 
					
						
							|  |  |  | 	clip(x, y, width, height); | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  | e2d::ESprite::~ESprite() | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	SafeReleaseAndClear(&m_pTexture); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | void e2d::ESprite::loadFrom(ETexture * texture) | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	if (texture) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		SafeReleaseAndClear(&m_pTexture); | 
					
						
							|  |  |  | 		m_pTexture = texture; | 
					
						
							|  |  |  | 		m_pTexture->retain(); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 		m_fSourceClipX = m_fSourceClipY = 0; | 
					
						
							|  |  |  | 		ENode::_setWidth(m_pTexture->getSourceWidth()); | 
					
						
							|  |  |  | 		ENode::_setHeight(m_pTexture->getSourceHeight()); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | void e2d::ESprite::loadFrom(ETexture * texture, float x, float y, float width, float height) | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	loadFrom(texture); | 
					
						
							|  |  |  | 	clip(x, y, width, height); | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | void e2d::ESprite::loadFrom(ESpriteFrame * frame) | 
					
						
							| 
									
										
										
										
											2017-10-20 00:59:26 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	if (frame) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		loadFrom(frame->m_pTexture); | 
					
						
							|  |  |  | 		clip(frame->m_fSourceClipX, frame->m_fSourceClipY, frame->m_fSourceClipWidth, frame->m_fSourceClipHeight); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-10-20 00:59:26 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | void e2d::ESprite::clip(float x, float y, float width, float height) | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-20 00:59:26 +08:00
										 |  |  | 	m_fSourceClipX = min(max(x, 0), m_pTexture->getSourceWidth()); | 
					
						
							|  |  |  | 	m_fSourceClipY = min(max(y, 0), m_pTexture->getSourceHeight()); | 
					
						
							|  |  |  | 	ENode::_setWidth(min(max(width, 0), m_pTexture->getSourceWidth() - m_fSourceClipX)); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  | 	ENode::_setHeight(min(max(height, 0), m_pTexture->getSourceHeight() - m_fSourceClipY)); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void e2d::ESprite::_onRender() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  | 	if (m_pTexture && m_pTexture->_getBitmap()) | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | 	{ | 
					
						
							|  |  |  | 		// Draw bitmap
 | 
					
						
							|  |  |  | 		GetRenderTarget()->DrawBitmap( | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  | 			m_pTexture->_getBitmap(), | 
					
						
							|  |  |  | 			D2D1::RectF(0, 0, getRealWidth(), getRealHeight()), | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  | 			m_fDisplayOpacity, | 
					
						
							|  |  |  | 			D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, | 
					
						
							| 
									
										
										
										
											2017-10-20 00:59:26 +08:00
										 |  |  | 			D2D1::RectF( | 
					
						
							|  |  |  | 				m_fSourceClipX,  | 
					
						
							|  |  |  | 				m_fSourceClipY,  | 
					
						
							|  |  |  | 				m_fSourceClipX + getRealWidth(),  | 
					
						
							|  |  |  | 				m_fSourceClipY + getRealHeight() | 
					
						
							|  |  |  | 			) | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  | 		); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |