| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | #include "..\..\easy2d.h"
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ImageButton::ImageButton() : | 
					
						
							|  |  |  |  | 	m_pNormalImage(nullptr), | 
					
						
							|  |  |  |  | 	m_pMouseInImage(nullptr), | 
					
						
							|  |  |  |  | 	m_pSelectedImage(nullptr), | 
					
						
							|  |  |  |  | 	m_pUnableImage(nullptr) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-18 23:59:08 +08:00
										 |  |  |  | ImageButton::ImageButton(LPCTSTR image) : | 
					
						
							|  |  |  |  | 	ImageButton() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	setNormal(new Image(image));	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ʱ<CCAC><CAB1>ͼƬ
 | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | ImageButton::ImageButton(Image * image) : | 
					
						
							|  |  |  |  | 	ImageButton() | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-09-12 12:53:34 +08:00
										 |  |  |  | 	setNormal(image);	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ʱ<CCAC><CAB1>ͼƬ
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ImageButton::~ImageButton() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 	SafeRelease(m_pNormalImage); | 
					
						
							|  |  |  |  | 	SafeRelease(m_pMouseInImage); | 
					
						
							|  |  |  |  | 	SafeRelease(m_pSelectedImage); | 
					
						
							|  |  |  |  | 	SafeRelease(m_pUnableImage); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | void ImageButton::_setStatus(Status status) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_eStatus != status) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		if (status == MOUSEIN) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			if (m_pMouseInImage) setRect(m_pMouseInImage->getRect()); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else if (status == SELECTED) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			if (m_pSelectedImage) setRect(m_pSelectedImage->getRect()); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 		else | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			setRect(m_pNormalImage->getRect()); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	MouseNode::_setStatus(status); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | void ImageButton::_onNormal() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_pNormalImage) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pNormalImage->_onDraw(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void ImageButton::_onMouseIn() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_pMouseInImage) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pMouseInImage->_onDraw(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		_onNormal(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void ImageButton::_onSelected() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_pSelectedImage) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pSelectedImage->_onDraw(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		_onNormal(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | void ImageButton::_onDisable() | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_pUnableImage) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pUnableImage->_onDraw(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | 	else | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		_onNormal(); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-12 12:53:34 +08:00
										 |  |  |  | void ImageButton::setNormal(Image * image) | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	if (image) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// ԭͼƬ<CDBC><C6AC><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
 | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 		SafeRelease(m_pNormalImage); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 		// <20><EFBFBD>ͼƬ
 | 
					
						
							|  |  |  |  | 		m_pNormalImage = image; | 
					
						
							|  |  |  |  | 		// <20><>ͼƬ<CDBC><C6AC><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
 | 
					
						
							|  |  |  |  | 		m_pNormalImage->retain(); | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD>趨<EFBFBD><E8B6A8>ť<EFBFBD><C5A5>С
 | 
					
						
							|  |  |  |  | 		setSize(m_pNormalImage->getSize()); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 		// <20><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ͼƬλ<C6AC><CEBB>
 | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 		_resetPosition(); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-12 12:53:34 +08:00
										 |  |  |  | void ImageButton::setMouseIn(Image * image) | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	if (image) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 		SafeRelease(m_pMouseInImage); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 		m_pMouseInImage = image; | 
					
						
							|  |  |  |  | 		m_pMouseInImage->retain(); | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 		_resetPosition(); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-12 12:53:34 +08:00
										 |  |  |  | void ImageButton::setSelected(Image * image) | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	if (image) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 		SafeRelease(m_pSelectedImage); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 		m_pSelectedImage = image; | 
					
						
							|  |  |  |  | 		m_pSelectedImage->retain(); | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 		_resetPosition(); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-12 12:53:34 +08:00
										 |  |  |  | void ImageButton::setUnable(Image * image) | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	if (image) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2017-10-05 00:53:03 +08:00
										 |  |  |  | 		SafeRelease(m_pUnableImage); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 		m_pUnableImage = image; | 
					
						
							|  |  |  |  | 		m_pUnableImage->retain(); | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 		_resetPosition(); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | void ImageButton::_resetPosition() | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | 	if (m_pNormalImage) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		// <20><><EFBFBD>ݰ<EFBFBD>ťλ<C5A5>ú<EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬλ<C6AC>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD>ʾ
 | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 		m_pNormalImage->setPos(getX(), getY()); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 	if (m_pMouseInImage) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pMouseInImage->setPos( | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 			getX() + (getWidth() - m_pMouseInImage->getWidth()) / 2, | 
					
						
							|  |  |  |  | 			getY() + (getHeight() - m_pMouseInImage->getHeight()) / 2); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 	if (m_pSelectedImage) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pSelectedImage->setPos( | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 			getX() + (getWidth() - m_pSelectedImage->getWidth()) / 2, | 
					
						
							|  |  |  |  | 			getY() + (getHeight() - m_pSelectedImage->getHeight()) / 2); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 	if (m_pUnableImage) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		m_pUnableImage->setPos( | 
					
						
							| 
									
										
										
										
											2017-09-27 17:56:28 +08:00
										 |  |  |  | 			getX() + (getWidth() - m_pUnableImage->getWidth()) / 2, | 
					
						
							|  |  |  |  | 			getY() + (getHeight() - m_pUnableImage->getHeight()) / 2); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:56:52 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | } |