| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2018-04-21 21:24:46 +08:00
										 |  |  |  | #include "e2dbase.h"
 | 
					
						
							| 
									
										
										
										
											2018-08-14 00:41:59 +08:00
										 |  |  |  | #include "e2devent.h"
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace e2d  | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  |  | class Action; | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><>ͼ<EFBFBD>ӿ<EFBFBD>
 | 
					
						
							|  |  |  |  | class Drawable | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><>Ⱦͼ<C8BE><CDBC>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Draw() const = 0; | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD>½ӿ<C2BD>
 | 
					
						
							|  |  |  |  | class Updatable | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><>Ⱦͼ<C8BE><CDBC>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Update() = 0; | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
 | 
					
						
							|  |  |  |  | class KeyEventHandler | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Handle(KeyEvent e) = 0; | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
 | 
					
						
							|  |  |  |  | class MouseEventHandler | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Handle(MouseEvent e) = 0; | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><>ײ<EFBFBD><D7B2>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
 | 
					
						
							|  |  |  |  | class CollisionHandler | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2>Ϣ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Handle(Collision collision) = 0; | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20>ڵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Node : | 
					
						
							| 
									
										
										
										
											2018-07-07 01:43:41 +08:00
										 |  |  |  | 	public Ref | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-24 00:58:16 +08:00
										 |  |  |  | 	friend class Collider; | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	struct Property | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		Point pos;			// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		Size size;			// <20><>С
 | 
					
						
							|  |  |  |  | 		Point anchor;		// ê<><C3AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		Point scale;		// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		Point skew;			// <20><>б<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | 		float rotation;		// <20><>ת<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-07-10 00:30:17 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 		Property operator+ (Property const & prop) const; | 
					
						
							|  |  |  |  | 		Property operator- (Property const & prop) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		static const Property Origin; | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	typedef std::vector<Node*> Nodes; | 
					
						
							| 
									
										
										
										
											2018-09-05 00:08:03 +08:00
										 |  |  |  | 	typedef std::vector<Action*> Actions; | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Node(); | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	virtual ~Node(); | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ʾ״̬
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool IsVisible() const; | 
					
						
							| 
									
										
										
										
											2018-03-06 09:56:17 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const String& GetName() const; | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-31 18:12:01 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>Ƶ<EFBFBD> Hash ֵ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	size_t GetHashName() const; | 
					
						
							| 
									
										
										
										
											2018-03-31 18:12:01 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ͼ˳<CDBC><CBB3>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	int GetOrder() const; | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetPosX() const; | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetPosY() const; | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Point GetPos() const; | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetWidth() const; | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5>߶<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetHeight() const; | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:37:51 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetRealWidth() const; | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:37:51 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5>߶ȣ<DFB6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetRealHeight() const; | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:37:51 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Size GetRealSize() const; | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ê<EFBFBD><C3AA>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetAnchorX() const; | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ê<EFBFBD><C3AA>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetAnchorY() const; | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:37:51 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>С
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Size GetSize() const; | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetScaleX() const; | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetScaleY() const; | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetSkewX() const; | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetSkewY() const; | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetRotation() const; | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetOpacity() const; | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-21 18:42:07 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Property GetProperty() const; | 
					
						
							| 
									
										
										
										
											2018-04-21 18:42:07 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-13 00:45:39 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Property GetExtrapolate() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 16:37:51 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ײ<EFBFBD><D7B2>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Collider * GetCollider(); | 
					
						
							| 
									
										
										
										
											2018-08-23 16:37:51 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Node * GetParent() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 16:37:51 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Scene * GetParentScene() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 16:37:51 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetVisible( | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 		bool value | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 11:40:47 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetName( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& name | 
					
						
							| 
									
										
										
										
											2017-10-14 18:43:32 +08:00
										 |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2017-10-14 11:40:47 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetPosX( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float x | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetPosY( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float y | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetPos( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		const Point & point | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetPos( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float x, | 
					
						
							|  |  |  |  | 		float y | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-07 17:15:57 +08:00
										 |  |  |  | 	// <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetPosFixed( | 
					
						
							| 
									
										
										
										
											2018-05-07 17:15:57 +08:00
										 |  |  |  | 		bool fixed | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	// <20>ƶ<EFBFBD><C6B6>ڵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Move( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float x, | 
					
						
							|  |  |  |  | 		float y | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	// <20>ƶ<EFBFBD><C6B6>ڵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Move( | 
					
						
							|  |  |  |  | 		const Point & v | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD>ͼ˳<CDBC><CBB3>
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 0
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetOrder( | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 		int order | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-07-28 18:44:37 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 1.0
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetScaleX( | 
					
						
							|  |  |  |  | 		float scale_x | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-07-28 18:44:37 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 1.0
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetScaleY( | 
					
						
							|  |  |  |  | 		float scale_y | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-07-28 18:44:37 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ (1.0, 1.0)
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetScale( | 
					
						
							|  |  |  |  | 		float scale_x, | 
					
						
							|  |  |  |  | 		float scale_y | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-07-28 18:44:37 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 1.0
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetScale( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float scale | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 0
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetSkewX( | 
					
						
							|  |  |  |  | 		float skew_x | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 0
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetSkewY( | 
					
						
							|  |  |  |  | 		float skew_y | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ (0, 0)
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetSkew( | 
					
						
							|  |  |  |  | 		float skew_x, | 
					
						
							|  |  |  |  | 		float skew_y | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 0
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetRotation( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float rotation | 
					
						
							| 
									
										
										
										
											2017-10-15 02:46:24 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-07-28 18:44:37 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 1.0, <20><>Χ [0, 1]
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetOpacity( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float opacity | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ê<EFBFBD><C3AA><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>λ<EFBFBD><CEBB>
 | 
					
						
							| 
									
										
										
										
											2017-11-09 18:22:41 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 0, <20><>Χ [0, 1]
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetAnchorX( | 
					
						
							|  |  |  |  | 		float anchor_x | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ê<EFBFBD><C3AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
 | 
					
						
							| 
									
										
										
										
											2017-11-09 18:22:41 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ 0, <20><>Χ [0, 1]
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetAnchorY( | 
					
						
							|  |  |  |  | 		float anchor_y | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ê<EFBFBD><C3AA>λ<EFBFBD><CEBB>
 | 
					
						
							| 
									
										
										
										
											2017-11-09 18:22:41 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ (0, 0), <20><>Χ [0, 1]
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetAnchor( | 
					
						
							|  |  |  |  | 		float anchor_x, | 
					
						
							|  |  |  |  | 		float anchor_y | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-01 19:28:22 +08:00
										 |  |  |  | 	// <20>Ľڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetWidth( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float width | 
					
						
							| 
									
										
										
										
											2018-03-01 19:28:22 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ľڵ<C4BD><DAB5>߶<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetHeight( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float height | 
					
						
							| 
									
										
										
										
											2018-03-01 19:28:22 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ľڵ<C4BD><DAB5><EFBFBD>С
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetSize( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float width, | 
					
						
							|  |  |  |  | 		float height | 
					
						
							| 
									
										
										
										
											2018-03-01 19:28:22 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ľڵ<C4BD><DAB5><EFBFBD>С
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetSize( | 
					
						
							| 
									
										
										
										
											2018-03-01 19:28:22 +08:00
										 |  |  |  | 		Size size | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-21 18:42:07 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetProperty( | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 		Property prop | 
					
						
							| 
									
										
										
										
											2018-04-21 18:42:07 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-28 18:44:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD>û<EFBFBD><C3BB>ر<EFBFBD><D8B1><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetClipEnabled( | 
					
						
							| 
									
										
										
										
											2018-07-28 18:44:37 +08:00
										 |  |  |  | 		bool enabled | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-01 23:00:08 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD>Ե<EFBFBD><D4B5>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetBorderColor( | 
					
						
							| 
									
										
										
										
											2018-09-01 23:00:08 +08:00
										 |  |  |  | 		const Color& color | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20>жϵ<D0B6><CFB5>Ƿ<EFBFBD><C7B7>ڽڵ<DABD><DAB5><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool ContainsPoint( | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 		const Point& point | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ཻ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool Intersects( | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 		Node * node | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 11:40:47 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void AddChild( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * child, | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		int order = 0		/* <20><>Ⱦ˳<C8BE><CBB3> */ | 
					
						
							| 
									
										
										
										
											2018-03-31 18:12:01 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void AddChild( | 
					
						
							|  |  |  |  | 		const Nodes& nodes,	/* <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		int order = 0		/* <20><>Ⱦ˳<C8BE><CBB3> */ | 
					
						
							| 
									
										
										
										
											2017-10-14 18:43:32 +08:00
										 |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2017-10-14 11:40:47 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Nodes GetChildren( | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 		const String& name | 
					
						
							|  |  |  |  | 	) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Node* GetChild( | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 		const String& name | 
					
						
							|  |  |  |  | 	) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const Nodes& GetAllChildren() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	int GetChildrenCount() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ƴ<EFBFBD><C6B3>ӽڵ<D3BD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool RemoveChild( | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 		Node * child | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void RemoveChildren( | 
					
						
							|  |  |  |  | 		const String& child_name | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>нڵ<D0BD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void RemoveAllChildren(); | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ӹ<EFBFBD><D3B8>ڵ<EFBFBD><DAB5>Ƴ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void RemoveFromParent(); | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	// ִ<>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void RunAction( | 
					
						
							| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  |  | 		Action * action | 
					
						
							| 
									
										
										
										
											2017-10-19 00:50:04 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void ResumeAction( | 
					
						
							| 
									
										
										
										
											2018-05-22 00:11:57 +08:00
										 |  |  |  | 		const String& name | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void PauseAction( | 
					
						
							| 
									
										
										
										
											2018-05-22 00:11:57 +08:00
										 |  |  |  | 		const String& name | 
					
						
							| 
									
										
										
										
											2017-10-19 12:47:36 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void StopAction( | 
					
						
							| 
									
										
										
										
											2018-05-22 00:11:57 +08:00
										 |  |  |  | 		const String& name | 
					
						
							| 
									
										
										
										
											2018-03-06 09:56:17 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void ResumeAllActions(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	// <20><>ͣ<EFBFBD><CDA3><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void PauseAllActions(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	// ֹͣ<CDA3><D6B9><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void StopAllActions(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 00:08:03 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	const Actions& GetAllActions() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// ˢ<>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void UpdateActionsTime(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-16 22:11:27 +08:00
										 |  |  |  | 	// <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual bool Dispatch( | 
					
						
							| 
									
										
										
										
											2018-08-13 23:24:08 +08:00
										 |  |  |  | 		const MouseEvent& e, | 
					
						
							|  |  |  |  | 		bool handled | 
					
						
							| 
									
										
										
										
											2018-07-16 22:11:27 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual bool Dispatch( | 
					
						
							| 
									
										
										
										
											2018-08-13 23:24:08 +08:00
										 |  |  |  | 		const KeyEvent& e, | 
					
						
							|  |  |  |  | 		bool handled | 
					
						
							| 
									
										
										
										
											2018-07-16 22:11:27 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-13 23:47:10 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Visit(); | 
					
						
							| 
									
										
										
										
											2018-07-07 15:12:18 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-15 00:06:03 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	E2D_DISABLE_COPY(Node); | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-01 23:00:08 +08:00
										 |  |  |  | 	// <20><>Ⱦ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>Ե
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void DrawBorder(); | 
					
						
							| 
									
										
										
										
											2018-09-01 23:00:08 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>Ⱦ<EFBFBD><C8BE>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void DrawCollider(); | 
					
						
							| 
									
										
										
										
											2018-09-01 23:00:08 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetParentScene( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Scene * scene | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-01 17:53:56 +08:00
										 |  |  |  | 	// <20>ӽڵ<D3BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SortChildren(); | 
					
						
							| 
									
										
										
										
											2018-06-01 17:53:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void UpdateTransform(); | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 	// <20><><EFBFBD>½ڵ<C2BD><EFBFBD><CDB8><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void UpdateOpacity(); | 
					
						
							| 
									
										
										
										
											2018-05-19 00:00:12 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 00:08:03 +08:00
										 |  |  |  | 	// <20><><EFBFBD>¶<EFBFBD><C2B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void UpdateActions(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	String		name_; | 
					
						
							|  |  |  |  | 	size_t		hash_name_; | 
					
						
							|  |  |  |  | 	Point		pos_; | 
					
						
							|  |  |  |  | 	Size		size_; | 
					
						
							|  |  |  |  | 	Point		scale_; | 
					
						
							|  |  |  |  | 	Point		anchor_; | 
					
						
							|  |  |  |  | 	Point		skew_; | 
					
						
							|  |  |  |  | 	float		rotation_; | 
					
						
							|  |  |  |  | 	float		display_opacity_; | 
					
						
							|  |  |  |  | 	float		real_opacity_; | 
					
						
							|  |  |  |  | 	int			order_; | 
					
						
							|  |  |  |  | 	bool		visible_; | 
					
						
							|  |  |  |  | 	bool		clip_enabled_; | 
					
						
							|  |  |  |  | 	bool		need_sort_; | 
					
						
							|  |  |  |  | 	bool		need_transform_; | 
					
						
							|  |  |  |  | 	bool		fixed_position_; | 
					
						
							|  |  |  |  | 	Collider	collider_; | 
					
						
							|  |  |  |  | 	Scene *		parent_scene_; | 
					
						
							|  |  |  |  | 	Node *		parent_; | 
					
						
							|  |  |  |  | 	Property	extrapolate_; | 
					
						
							|  |  |  |  | 	Color		border_color_; | 
					
						
							| 
									
										
										
										
											2018-09-05 00:08:03 +08:00
										 |  |  |  | 	Actions		actions_; | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Nodes		children_; | 
					
						
							|  |  |  |  | 	ID2D1Geometry*		border_; | 
					
						
							|  |  |  |  | 	D2D1::Matrix3x2F	initial_matrix_; | 
					
						
							|  |  |  |  | 	D2D1::Matrix3x2F	final_matrix_; | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-14 18:43:32 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-13 23:47:10 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | class Scene : | 
					
						
							|  |  |  |  | 	public Node | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Scene(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual ~Scene(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>볡<EFBFBD><EBB3A1>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void OnEnter() {} | 
					
						
							| 
									
										
										
										
											2018-08-13 23:47:10 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void OnExit() {} | 
					
						
							| 
									
										
										
										
											2018-08-13 23:47:10 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>رմ<D8B1><D5B4><EFBFBD>
 | 
					
						
							|  |  |  |  | 	// ˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false <20><><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>ڹر<DAB9>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual bool OnCloseWindow() { return true; } | 
					
						
							| 
									
										
										
										
											2018-08-13 23:47:10 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-01 23:00:08 +08:00
										 |  |  |  | 	// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ؽڵ<D8BD><DAB5><EFBFBD>Ե
 | 
					
						
							| 
									
										
										
										
											2018-08-19 15:11:20 +08:00
										 |  |  |  | 	// Ĭ<>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void ShowBorder( | 
					
						
							| 
									
										
										
										
											2018-08-19 15:11:20 +08:00
										 |  |  |  | 		bool visible | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-01 23:00:08 +08:00
										 |  |  |  | 	// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2>
 | 
					
						
							|  |  |  |  | 	// Ĭ<>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void ShowCollider( | 
					
						
							| 
									
										
										
										
											2018-08-19 15:11:20 +08:00
										 |  |  |  | 		bool visible | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Visit() override; | 
					
						
							| 
									
										
										
										
											2018-08-19 15:11:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-13 23:47:10 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	E2D_DISABLE_COPY(Scene); | 
					
						
							| 
									
										
										
										
											2018-08-19 15:11:20 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool border_visible_; | 
					
						
							|  |  |  |  | 	bool collider_visible_; | 
					
						
							| 
									
										
										
										
											2018-08-13 23:47:10 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Sprite : | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | 	public Node, | 
					
						
							|  |  |  |  | 	public Drawable | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Sprite(); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Sprite( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Image * image | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Sprite( | 
					
						
							| 
									
										
										
										
											2018-07-08 02:41:44 +08:00
										 |  |  |  | 		const Resource& res | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Sprite( | 
					
						
							| 
									
										
										
										
											2018-07-08 02:41:44 +08:00
										 |  |  |  | 		const Resource& res, | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		const Rect& crop_rect	/* <20>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Sprite( | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		const String& file_name | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Sprite( | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		const String& file_name, | 
					
						
							|  |  |  |  | 		const Rect& crop_rect	/* <20>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	virtual ~Sprite(); | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC>ļ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool Open( | 
					
						
							| 
									
										
										
										
											2018-07-08 02:41:44 +08:00
										 |  |  |  | 		const Resource& res | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-08 02:41:44 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC>ļ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool Open( | 
					
						
							|  |  |  |  | 		const String& file_name | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2018-03-11 23:56:40 +08:00
										 |  |  |  | 	 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool Open( | 
					
						
							| 
									
										
										
										
											2018-03-11 23:56:40 +08:00
										 |  |  |  | 		Image * image | 
					
						
							|  |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-06 11:31:24 +08:00
										 |  |  |  | 	// <20><>ͼƬ<CDBC>ü<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void Crop( | 
					
						
							|  |  |  |  | 		const Rect& crop_rect	/* <20>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// <20><>ȡ Image <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Image * GetImage() const; | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	// <20><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Draw() const override; | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-07 15:12:18 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	E2D_DISABLE_COPY(Sprite); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Image * image_; | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | }; | 
					
						
							| 
									
										
										
										
											2017-10-18 01:15:25 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-14 00:36:01 +08:00
										 |  |  |  | // <20>ı<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Text : | 
					
						
							| 
									
										
										
										
											2018-08-19 17:46:37 +08:00
										 |  |  |  | 	public Node, | 
					
						
							|  |  |  |  | 	public Drawable | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 	// <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>뷽ʽ
 | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  |  | 	enum class Align | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  |  | 		Left,		/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		Right,		/* <20>Ҷ<EFBFBD><D2B6><EFBFBD> */ | 
					
						
							|  |  |  |  | 		Center		/* <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>ı<EFBFBD><C4B1><EFBFBD>ʽ
 | 
					
						
							|  |  |  |  | 	class Style | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		Color		color;				// <20><>ɫ
 | 
					
						
							|  |  |  |  | 		Align		alignment;			// <20><><EFBFBD>뷽ʽ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		bool		wrap;				// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		float		wrap_width;			// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD>
 | 
					
						
							|  |  |  |  | 		float		line_spacing;		// <20>м<EFBFBD><D0BC><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool		underline;			// <20>»<EFBFBD><C2BB><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool		strikethrough;		// ɾ<><C9BE><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool		outline;			// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		Color		outline_color;		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 		float		outline_width;		// <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD>
 | 
					
						
							|  |  |  |  | 		Stroke		outline_stroke;		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		Style(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		Style( | 
					
						
							|  |  |  |  | 			Color color, | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  |  | 			Align alignment = Align::Left, | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 			bool wrap = false, | 
					
						
							|  |  |  |  | 			float wrap_width = 0.f, | 
					
						
							|  |  |  |  | 			float line_spacing = 0.f, | 
					
						
							|  |  |  |  | 			bool underline = false, | 
					
						
							|  |  |  |  | 			bool strikethrough = false, | 
					
						
							|  |  |  |  | 			bool outline = true, | 
					
						
							|  |  |  |  | 			Color outline_color = Color(Color::Black, 0.5), | 
					
						
							|  |  |  |  | 			float outline_width = 1.f, | 
					
						
							|  |  |  |  | 			Stroke outline_stroke = Stroke::Round | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 		); | 
					
						
							|  |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	Text(); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Text( | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 		const String& text,						/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		const Font& font = Font(),				/* <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		const Style& style = Style()			/* <20>ı<EFBFBD><C4B1><EFBFBD>ʽ */ | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	virtual ~Text(); | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ı<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const String& GetText() const; | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const Font& GetFont() const; | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const Style& GetStyle() const; | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const String& GetFontFamily() const; | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD>ֺ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetFontSize() const; | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸֵ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	UINT GetFontWeight() const; | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const Color& GetColor() const; | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const Color& GetOutlineColor() const; | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetOutlineWidth() const; | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Stroke GetOutlineStroke() const; | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-09 01:07:49 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	int GetLineCount() const; | 
					
						
							| 
									
										
										
										
											2018-04-09 01:07:49 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	// <20>Ƿ<EFBFBD><C7B7><EFBFBD>б<EFBFBD><D0B1>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool IsItalic() const; | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 14:08:29 +08:00
										 |  |  |  | 	// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ʾɾ<CABE><C9BE><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool strikethrough() const; | 
					
						
							| 
									
										
										
										
											2018-04-22 14:08:29 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD>»<EFBFBD><C2BB><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool underline() const; | 
					
						
							| 
									
										
										
										
											2018-04-22 14:08:29 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool outline() const; | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetText( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& text | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetStyle( | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 		const Style& style | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetFont( | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 		const Font& font | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetFontFamily( | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 		const String& family | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ֺţ<D6BA>Ĭ<EFBFBD><C4AC>ֵΪ 22<32><32>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetFontSize( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  |  | 		float size | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸֵ<CFB8><D6B5>Ĭ<EFBFBD><C4AC>ֵΪ Text::Font::Weight::Normal<61><6C>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetFontWeight( | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 		UINT weight | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>Ĭ<EFBFBD><C4AC>ֵΪ Color::WHITE<54><45>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetColor( | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  |  | 		Color color | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>壨Ĭ<E5A3A8><C4AC>ֵΪ false<73><65>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetItalic( | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 		bool value | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	// <20><EFBFBD><F2BFAABB>ر<EFBFBD><D8B1>ı<EFBFBD><C4B1>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>У<EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ<EFBFBD>رգ<D8B1>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetWrapEnabled( | 
					
						
							|  |  |  |  | 		bool wrap | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>еĿ<D0B5><C4BF>ȣ<EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ 0<><30>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetWrapWidth( | 
					
						
							|  |  |  |  | 		float wrap_width | 
					
						
							| 
									
										
										
										
											2018-03-30 01:41:29 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC>ࣨĬ<E0A3A8><C4AC>Ϊ 0<><30>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetLineSpacing( | 
					
						
							|  |  |  |  | 		float line_spacing | 
					
						
							| 
									
										
										
										
											2018-03-30 01:41:29 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ö<EFBFBD><C3B6>뷽ʽ<EBB7BD><CABD>Ĭ<EFBFBD><C4AC>Ϊ Align::Left<66><74>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetAlignment( | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  |  | 		Align align | 
					
						
							| 
									
										
										
										
											2018-03-30 01:41:29 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><C2BB>ߣ<EFBFBD>Ĭ<EFBFBD><C4AC>ֵΪ false<73><65>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetUnderline( | 
					
						
							|  |  |  |  | 		bool underline | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ߣ<EFBFBD>Ĭ<EFBFBD><C4AC>ֵΪ false<73><65>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetStrikethrough( | 
					
						
							|  |  |  |  | 		bool strikethrough | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetOutline( | 
					
						
							|  |  |  |  | 		bool outline | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetOutlineColor( | 
					
						
							|  |  |  |  | 		Color outline_color | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetOutlineWidth( | 
					
						
							|  |  |  |  | 		float outline_width | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetOutlineStroke( | 
					
						
							|  |  |  |  | 		Stroke outline_stroke | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	// <20><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Draw() const override; | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-07-07 15:12:18 +08:00
										 |  |  |  | 	E2D_DISABLE_COPY(Text); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void Reset(); | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ʽ<EFBFBD><CABD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void CreateFormat(); | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void CreateLayout(); | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	String	text_; | 
					
						
							|  |  |  |  | 	Font	font_; | 
					
						
							|  |  |  |  | 	Style	style_; | 
					
						
							|  |  |  |  | 	IDWriteTextFormat * text_format_; | 
					
						
							|  |  |  |  | 	IDWriteTextLayout * text_layout_; | 
					
						
							| 
									
										
										
										
											2017-10-15 23:58:39 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Button : | 
					
						
							|  |  |  |  | 	public Node | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Button(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Button( | 
					
						
							| 
									
										
										
										
											2018-05-08 11:37:11 +08:00
										 |  |  |  | 		Node * normal,					/* <20><>ͨ״̬ */ | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		const Function& func = nullptr	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Button( | 
					
						
							| 
									
										
										
										
											2018-05-08 11:37:11 +08:00
										 |  |  |  | 		Node * normal,					/* <20><>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected,				/* <20><><EFBFBD>갴<EFBFBD><EAB0B4>״̬ */ | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		const Function& func = nullptr	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Button( | 
					
						
							| 
									
										
										
										
											2018-05-08 11:37:11 +08:00
										 |  |  |  | 		Node * normal,					/* <20><>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * mouseover,				/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected,				/* <20><><EFBFBD>갴<EFBFBD><EAB0B4>״̬ */ | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		const Function& func = nullptr	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Button( | 
					
						
							| 
									
										
										
										
											2018-05-08 11:37:11 +08:00
										 |  |  |  | 		Node * normal,					/* <20><>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * mouseover,				/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected,				/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		Node * disabled,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>״̬ */ | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		const Function& func = nullptr	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ť״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ǽ<EFBFBD><C7BD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool IsEnable() const; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetEnabled( | 
					
						
							| 
									
										
										
										
											2018-07-04 17:00:21 +08:00
										 |  |  |  | 		bool enabled | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetNormal( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * normal | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴ťʱ<C5A5><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetMouseOver( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * mouseover | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-28 17:56:04 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD>°<EFBFBD>ťʱ<C5A5><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetSelected( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * selected | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetDisabled( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * disabled | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void SetCallbackOnClick( | 
					
						
							| 
									
										
										
										
											2018-05-08 11:37:11 +08:00
										 |  |  |  | 		const Function& func | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ê<EFBFBD><C3AA>λ<EFBFBD><CEBB>
 | 
					
						
							| 
									
										
										
										
											2018-07-28 20:48:25 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ (0, 0), <20><>Χ [0, 1]
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetAnchor( | 
					
						
							|  |  |  |  | 		float anchor_x, | 
					
						
							|  |  |  |  | 		float anchor_y | 
					
						
							| 
									
										
										
										
											2018-07-28 20:48:25 +08:00
										 |  |  |  | 	) override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-28 22:22:58 +08:00
										 |  |  |  | 	// <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual bool Dispatch( | 
					
						
							| 
									
										
										
										
											2018-08-13 23:24:08 +08:00
										 |  |  |  | 		const MouseEvent& e, | 
					
						
							|  |  |  |  | 		bool handled | 
					
						
							| 
									
										
										
										
											2018-07-28 22:22:58 +08:00
										 |  |  |  | 	) override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-19 15:11:20 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void Visit() override; | 
					
						
							| 
									
										
										
										
											2018-08-13 23:47:10 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-07-07 15:12:18 +08:00
										 |  |  |  | 	E2D_DISABLE_COPY(Button); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-31 11:59:51 +08:00
										 |  |  |  | 	// <20><>ť״̬ö<CCAC><C3B6>
 | 
					
						
							| 
									
										
										
										
											2018-07-28 22:22:58 +08:00
										 |  |  |  | 	enum class Status { Normal, Mouseover, Selected }; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť״̬
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetStatus( | 
					
						
							|  |  |  |  | 		Status status | 
					
						
							|  |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// ˢ<>°<EFBFBD>ť<EFBFBD><C5A5>ʾ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void UpdateVisible(); | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void OnClick(); | 
					
						
							| 
									
										
										
										
											2018-06-01 17:53:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Node *		normal_; | 
					
						
							|  |  |  |  | 	Node *		mouseover_; | 
					
						
							|  |  |  |  | 	Node *		selected_; | 
					
						
							|  |  |  |  | 	Node *		disabled_; | 
					
						
							|  |  |  |  | 	bool		enabled_; | 
					
						
							|  |  |  |  | 	bool		is_selected_; | 
					
						
							|  |  |  |  | 	Status		status_; | 
					
						
							|  |  |  |  | 	Function	callback_; | 
					
						
							| 
									
										
										
										
											2017-10-21 19:09:31 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  |  | class ToggleButton : | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	public Button | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  |  | 	ToggleButton(); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit ToggleButton( | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		Node * normal_on,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * normal_off,				/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		const Function& func = nullptr	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit ToggleButton( | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		Node * normal_on,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * normal_off,				/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected_on,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4>״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected_off,			/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4>״̬ */ | 
					
						
							|  |  |  |  | 		const Function& func = nullptr	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit ToggleButton( | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		Node * normal_on,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * normal_off,				/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * mouseover_on,			/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		Node * mouseover_off,			/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected_on,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4>״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected_off,			/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4>״̬ */ | 
					
						
							|  |  |  |  | 		const Function& func = nullptr	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit ToggleButton( | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		Node * normal_on,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * normal_off,				/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ״̬ */ | 
					
						
							|  |  |  |  | 		Node * mouseover_on,			/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		Node * mouseover_off,			/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected_on,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4>״̬ */ | 
					
						
							|  |  |  |  | 		Node * selected_off,			/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4>״̬ */ | 
					
						
							|  |  |  |  | 		Node * disabled_on,				/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		Node * disabled_off,			/* <20><>ť<EFBFBD>ر<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ */ | 
					
						
							|  |  |  |  | 		const Function& func = nullptr	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-28 20:48:25 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool IsChecked() const; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-28 20:48:25 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ÿ<EFBFBD><C3BF>ذ<EFBFBD>ť<EFBFBD><C5A5>״̬
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetChecked( | 
					
						
							| 
									
										
										
										
											2018-07-28 20:48:25 +08:00
										 |  |  |  | 		bool checked | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetNormal( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * normal | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	) override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>״̬<D7B4>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴ťʱ<C5A5><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetMouseOver( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * mouseover | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	) override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-28 17:56:04 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>״̬<D7B4>£<EFBFBD><C2A3><EFBFBD><EFBFBD>갴<EFBFBD>°<EFBFBD>ťʱ<C5A5><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetSelected( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * selected | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	) override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>״̬<D7B4>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetDisabled( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * disabled | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	) override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetNormalOff( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * normal | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD>ر<EFBFBD>״̬<D7B4>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>밴ťʱ<C5A5><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetMouseOverOff( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * mouseover | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-28 17:56:04 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD>ر<EFBFBD>״̬<D7B4>£<EFBFBD><C2A3><EFBFBD><EFBFBD>갴<EFBFBD>°<EFBFBD>ťʱ<C5A5><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetSelectedOff( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * selected | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD>ر<EFBFBD>״̬<D7B4>£<EFBFBD><C2A3><EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʾ<EFBFBD>İ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetDisabledOff( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * disabled | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 16:58:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ê<EFBFBD><C3AA>λ<EFBFBD><CEBB>
 | 
					
						
							| 
									
										
										
										
											2018-07-28 20:48:25 +08:00
										 |  |  |  | 	// Ĭ<><C4AC>Ϊ (0, 0), <20><>Χ [0, 1]
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void SetAnchor( | 
					
						
							|  |  |  |  | 		float anchor_x, | 
					
						
							|  |  |  |  | 		float anchor_y | 
					
						
							| 
									
										
										
										
											2018-07-28 20:48:25 +08:00
										 |  |  |  | 	) override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-07-07 15:12:18 +08:00
										 |  |  |  | 	E2D_DISABLE_COPY(ToggleButton); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 	// ˢ<>°<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void UpdateStatus(); | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-28 17:56:04 +08:00
										 |  |  |  | 	// ִ<>а<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	virtual void OnClick() override; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Node*	normal_on_; | 
					
						
							|  |  |  |  | 	Node*	mouseover_on_; | 
					
						
							|  |  |  |  | 	Node*	selected_on_; | 
					
						
							|  |  |  |  | 	Node*	disabled_on_; | 
					
						
							|  |  |  |  | 	Node*	normal_off_; | 
					
						
							|  |  |  |  | 	Node*	mouseover_off_; | 
					
						
							|  |  |  |  | 	Node*	selected_off_; | 
					
						
							|  |  |  |  | 	Node*	disabled_off_; | 
					
						
							|  |  |  |  | 	bool	checked_; | 
					
						
							| 
									
										
										
										
											2017-11-07 22:20:46 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Menu : | 
					
						
							|  |  |  |  | 	public Node | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Menu(); | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 16:25:05 +08:00
										 |  |  |  | 	explicit Menu( | 
					
						
							| 
									
										
										
										
											2018-05-10 17:02:18 +08:00
										 |  |  |  | 		const std::vector<Button*>& buttons	/* <20><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>˵<EFBFBD><CBB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool IsEnable() const; | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>˵<EFBFBD><CBB5>еİ<D0B5>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	size_t GetButtonCount() const; | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ò˵<C3B2><CBB5><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetEnabled( | 
					
						
							| 
									
										
										
										
											2018-07-04 17:00:21 +08:00
										 |  |  |  | 		bool enabled | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӱ<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void AddButton( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Button * button | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>Ƴ<EFBFBD><C6B3><EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool RemoveButton( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Button * button | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 14:16:36 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>а<EFBFBD>ť
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	const std::vector<Button*>& GetAllButtons() const; | 
					
						
							| 
									
										
										
										
											2018-05-10 14:16:36 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-07 15:12:18 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	E2D_DISABLE_COPY(Menu); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	bool enabled_; | 
					
						
							|  |  |  |  | 	std::vector<Button*> buttons_; | 
					
						
							| 
									
										
										
										
											2017-11-07 23:32:44 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | class Canvas : | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 	public Node, | 
					
						
							|  |  |  |  | 	public Drawable | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 	Canvas( | 
					
						
							|  |  |  |  | 		float width, | 
					
						
							|  |  |  |  | 		float height | 
					
						
							|  |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual ~Canvas(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetLineColor( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		const Color& color | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetFillColor( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		const Color& color | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetStrokeWidth( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		float width | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void SetStrokeStyle( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		Stroke strokeStyle | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Color GetLineColor() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Color GetFillColor() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float GetStrokeWidth() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	Stroke GetStrokeStyle() const; | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 	// <20><>ֱ<EFBFBD><D6B1>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void DrawLine( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		const Point& begin, | 
					
						
							|  |  |  |  | 		const Point& end | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 	// <20><>Բ<EFBFBD>α߿<CEB1>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void DrawCircle( | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 		const Point& center, | 
					
						
							|  |  |  |  | 		float radius | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>Բ<EFBFBD>α߿<CEB1>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void DrawEllipse( | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 		const Point& center, | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		float radius_x, | 
					
						
							|  |  |  |  | 		float radius_y | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>α߿<CEB1>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void DrawRect( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		const Rect& rect | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>Բ<EFBFBD>Ǿ<EFBFBD><C7BE>α߿<CEB1>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void DrawRoundedRect( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		const Rect& rect, | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		float radius_x, | 
					
						
							|  |  |  |  | 		float radius_y | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void FillCircle( | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 		const Point& center, | 
					
						
							|  |  |  |  | 		float radius | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void FillEllipse( | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 		const Point& center, | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		float radius_x, | 
					
						
							|  |  |  |  | 		float radius_y | 
					
						
							| 
									
										
										
										
											2018-08-23 12:25:31 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void FillRect( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		const Rect& rect | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>Բ<EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	void FillRoundedRect( | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 		const Rect& rect, | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 		float radius_x, | 
					
						
							|  |  |  |  | 		float radius_y | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	E2D_DISABLE_COPY(Canvas); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  |  | 	float	stroke_width_; | 
					
						
							|  |  |  |  | 	Stroke	stroke_; | 
					
						
							|  |  |  |  | 	ID2D1RenderTarget * render_target_; | 
					
						
							|  |  |  |  | 	ID2D1SolidColorBrush * fill_brush_; | 
					
						
							|  |  |  |  | 	ID2D1SolidColorBrush * line_brush_; | 
					
						
							|  |  |  |  | 	ID2D1StrokeStyle * stroke_style_; | 
					
						
							| 
									
										
										
										
											2018-08-23 00:03:26 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | } |