| 
									
										
										
										
											2017-10-12 02:44:44 +08:00
										 |  |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2018-04-21 21:24:46 +08:00
										 |  |  |  | #include "e2dmacros.h"
 | 
					
						
							| 
									
										
										
										
											2018-04-21 23:09:59 +08:00
										 |  |  |  | #include "e2dcustom.h"
 | 
					
						
							| 
									
										
										
										
											2018-03-31 18:12:01 +08:00
										 |  |  |  | #include <set>
 | 
					
						
							| 
									
										
										
										
											2018-03-11 23:56:40 +08:00
										 |  |  |  | #include <stack>
 | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | #include <vector>
 | 
					
						
							|  |  |  |  | #include <functional>
 | 
					
						
							|  |  |  |  | #include <sstream>
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace e2d | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-12 02:44:44 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | class Size; | 
					
						
							| 
									
										
										
										
											2018-03-01 00:19:09 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9>
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | class Point | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	double x;	// X <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double y;	// Y <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-03-01 00:19:09 +08:00
										 |  |  |  | 	Point(); | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-01 00:19:09 +08:00
										 |  |  |  | 	Point(double x, double y); | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 13:26:50 +08:00
										 |  |  |  | 	Point operator + (Point const & p) const; | 
					
						
							|  |  |  |  | 	Point operator - (Point const & p) const; | 
					
						
							|  |  |  |  | 	Point operator * (double const & value) const; | 
					
						
							|  |  |  |  | 	Point operator / (double const & value) const; | 
					
						
							|  |  |  |  | 	Point operator - () const; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-01 19:28:22 +08:00
										 |  |  |  | 	operator e2d::Size() const; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-11 23:56:40 +08:00
										 |  |  |  | // <20><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | typedef Point Vector; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | // <20><>ʾ<EFBFBD><CABE>С<EFBFBD>Ľṹ<C4BD><E1B9B9>
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | class Size | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	double width;	// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double height;	// <20>߶<EFBFBD>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-03-01 00:19:09 +08:00
										 |  |  |  | 	Size(); | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-01 00:19:09 +08:00
										 |  |  |  | 	Size(double width, double height); | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 13:26:50 +08:00
										 |  |  |  | 	Size operator + (Size const & size) const; | 
					
						
							|  |  |  |  | 	Size operator - (Size const & size) const; | 
					
						
							|  |  |  |  | 	Size operator * (double const & value) const; | 
					
						
							|  |  |  |  | 	Size operator / (double const & value) const; | 
					
						
							|  |  |  |  | 	Size operator - () const; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-01 19:28:22 +08:00
										 |  |  |  | 	operator e2d::Point() const; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | // <20>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-04-02 23:40:08 +08:00
										 |  |  |  | class String | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	String(); | 
					
						
							|  |  |  |  | 	String(const String &); | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	String(const char *); | 
					
						
							|  |  |  |  | 	String(const wchar_t *); | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	String(String &&); | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	~String(); | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>ж<EFBFBD><D0B6>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
 | 
					
						
							| 
									
										
										
										
											2018-02-27 16:32:17 +08:00
										 |  |  |  | 	bool isEmpty() const; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-27 16:32:17 +08:00
										 |  |  |  | 	int getLength() const; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 16:32:17 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><C9A2>ֵ
 | 
					
						
							| 
									
										
										
										
											2018-03-01 23:47:42 +08:00
										 |  |  |  | 	unsigned int getHashCode() const; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	// <20><>ȡ Unicode <20>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	std::wstring getWString() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ ANSI <20>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	std::string getCString() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-01 17:19:55 +08:00
										 |  |  |  | 	// <20>Ƚ<EFBFBD><C8BD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	int compare( | 
					
						
							|  |  |  |  | 		const String & str | 
					
						
							|  |  |  |  | 	) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	e2d::String subtract( | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 		int offset,		/* ƫ<><C6AB><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		int count = -1	/* <20><>ȡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	) const; | 
					
						
							| 
									
										
										
										
											2018-02-27 16:32:17 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-01 17:19:55 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void insert( | 
					
						
							|  |  |  |  | 		const String & str, | 
					
						
							|  |  |  |  | 		int pos | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20>滻<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>е<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void replace( | 
					
						
							|  |  |  |  | 		const String & from,	/* <20><><EFBFBD>滻<EFBFBD><E6BBBB><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		const String & to		/* <20>滻<EFBFBD><E6BBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2018-02-27 16:32:17 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-01 17:19:55 +08:00
										 |  |  |  | 	// ɾ<><C9BE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>е<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void erase( | 
					
						
							|  |  |  |  | 		int offset,		/* ƫ<><C6AB><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		int count		/* ɾ<><C9BE><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	int find( | 
					
						
							|  |  |  |  | 		const String & str,	/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		int offset = 0		/* ƫ<><C6AB><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 	) const; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-11 23:56:40 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void clear(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 16:32:17 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>д<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	String toUpper() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡСд<D0A1>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	String toLower() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ int <20><>
 | 
					
						
							|  |  |  |  | 	int toInt() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ double <20><>
 | 
					
						
							|  |  |  |  | 	double toDouble() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ bool <20><>
 | 
					
						
							|  |  |  |  | 	bool toBool() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-01 23:08:11 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static String parse(int value); | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  |  | 	static String parse(unsigned int value); | 
					
						
							| 
									
										
										
										
											2018-04-01 23:08:11 +08:00
										 |  |  |  | 	static String parse(float value); | 
					
						
							|  |  |  |  | 	static String parse(double value); | 
					
						
							| 
									
										
										
										
											2018-03-22 18:25:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-01 23:08:11 +08:00
										 |  |  |  | 	// <20><>ʽ<EFBFBD><CABD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-04-17 11:41:33 +08:00
										 |  |  |  | 	static String format(const char * format, ...); | 
					
						
							|  |  |  |  | 	static String format(const wchar_t * format, ...); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-01 17:19:55 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void swap(String &str1, String &str2); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	// <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 	String& operator= (const String &); | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	String& operator= (const char *); | 
					
						
							|  |  |  |  | 	String& operator= (const wchar_t *); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	String& operator+= (const String &); | 
					
						
							|  |  |  |  | 	String& operator+= (const char *); | 
					
						
							|  |  |  |  | 	String& operator+= (const wchar_t *); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 	String operator+ (const String &); | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	String operator+ (const char *); | 
					
						
							|  |  |  |  | 	String operator+ (const wchar_t *); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	// <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	friend String operator+ (const char *, const String &); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 	friend String operator+ (const wchar_t*, const String &); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	operator const wchar_t* () const; | 
					
						
							|  |  |  |  | 	operator wchar_t* () const; | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	// <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	bool operator== (const String &); | 
					
						
							|  |  |  |  | 	bool operator== (const char *); | 
					
						
							|  |  |  |  | 	bool operator== (const wchar_t *); | 
					
						
							|  |  |  |  | 	bool operator!= (const String &); | 
					
						
							|  |  |  |  | 	bool operator!= (const char *); | 
					
						
							|  |  |  |  | 	bool operator!= (const wchar_t *); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 	bool operator> (const String &) const; | 
					
						
							|  |  |  |  | 	bool operator>= (const String &) const; | 
					
						
							|  |  |  |  | 	bool operator< (const String &) const; | 
					
						
							|  |  |  |  | 	bool operator<= (const String &) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 15:55:41 +08:00
										 |  |  |  | 	// << <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-03-11 23:56:40 +08:00
										 |  |  |  | 	String& operator<< (const String &); | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	String& operator<< (const char *); | 
					
						
							|  |  |  |  | 	String& operator<< (char *); | 
					
						
							| 
									
										
										
										
											2018-03-11 23:56:40 +08:00
										 |  |  |  | 	String& operator<< (const wchar_t *); | 
					
						
							|  |  |  |  | 	String& operator<< (wchar_t *); | 
					
						
							| 
									
										
										
										
											2018-03-12 15:55:41 +08:00
										 |  |  |  | 	String& operator<< (int value); | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  |  | 	String& operator<< (unsigned int value); | 
					
						
							| 
									
										
										
										
											2018-03-12 15:55:41 +08:00
										 |  |  |  | 	String& operator<< (float value); | 
					
						
							|  |  |  |  | 	String& operator<< (double value); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-03-12 15:55:41 +08:00
										 |  |  |  | 	wchar_t& operator[] (int); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	friend std::ostream& operator<< (std::ostream &, const String &); | 
					
						
							|  |  |  |  | 	friend std::wostream& operator<< (std::wostream &, const String &); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	friend std::istream& operator>> (std::istream &, String &); | 
					
						
							| 
									
										
										
										
											2018-03-12 13:42:49 +08:00
										 |  |  |  | 	friend std::wistream& operator>> (std::wistream &, String &); | 
					
						
							| 
									
										
										
										
											2018-02-28 19:17:15 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | private: | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  |  | 	std::wstring _str; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | // <20><>ɫ
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Color | 
					
						
							| 
									
										
										
										
											2017-10-17 21:22:25 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-04-22 14:08:29 +08:00
										 |  |  |  | 	Color(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	Color( | 
					
						
							|  |  |  |  | 		double r, | 
					
						
							|  |  |  |  | 		double g, | 
					
						
							|  |  |  |  | 		double b | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	Color( | 
					
						
							|  |  |  |  | 		double r, | 
					
						
							|  |  |  |  | 		double g, | 
					
						
							|  |  |  |  | 		double b, | 
					
						
							|  |  |  |  | 		double alpha | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	Color( | 
					
						
							|  |  |  |  | 		UINT32 rgb | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	Color( | 
					
						
							|  |  |  |  | 		UINT32 rgb, | 
					
						
							|  |  |  |  | 		double alpha | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	D2D1_COLOR_F toColorF() const; | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	enum RGB_VALUE : UINT32 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		ALICE_BLUE = 0xF0F8FF, | 
					
						
							|  |  |  |  | 		AQUA = 0x00FFFF, | 
					
						
							|  |  |  |  | 		AZURE = 0xF0FFFF, | 
					
						
							|  |  |  |  | 		BEIGE = 0xF5F5DC, | 
					
						
							|  |  |  |  | 		BLACK = 0x000000, | 
					
						
							|  |  |  |  | 		BLUE = 0x0000FF, | 
					
						
							|  |  |  |  | 		BLUE_VIOLET = 0x8A2BE2, | 
					
						
							|  |  |  |  | 		BROWN = 0xA52A2A, | 
					
						
							|  |  |  |  | 		CHOCOLATE = 0xD2691E, | 
					
						
							|  |  |  |  | 		CYAN = 0x00FFFF, | 
					
						
							|  |  |  |  | 		DARK_BLUE = 0x00008B, | 
					
						
							|  |  |  |  | 		DARK_CYAN = 0x008B8B, | 
					
						
							|  |  |  |  | 		DARK_GOLDENROD = 0xB8860B, | 
					
						
							|  |  |  |  | 		DARK_GRAY = 0xA9A9A9, | 
					
						
							|  |  |  |  | 		DARK_GREEN = 0x006400, | 
					
						
							|  |  |  |  | 		DARK_ORANGE = 0xFF8C00, | 
					
						
							|  |  |  |  | 		DARK_RED = 0x8B0000, | 
					
						
							|  |  |  |  | 		DARK_SEA_GREEN = 0x8FBC8F, | 
					
						
							|  |  |  |  | 		DARK_VIOLET = 0x9400D3, | 
					
						
							|  |  |  |  | 		DEEP_PINK = 0xFF1493, | 
					
						
							|  |  |  |  | 		DEEP_SKY_BLUE = 0x00BFFF, | 
					
						
							|  |  |  |  | 		FOREST_GREEN = 0x228B22, | 
					
						
							|  |  |  |  | 		GOLD = 0xFFD700, | 
					
						
							|  |  |  |  | 		GOLDENROD = 0xDAA520, | 
					
						
							|  |  |  |  | 		GRAY = 0x808080, | 
					
						
							|  |  |  |  | 		GREEN = 0x008000, | 
					
						
							|  |  |  |  | 		GREEN_YELLOW = 0xADFF2F, | 
					
						
							|  |  |  |  | 		LIGHT_BLUE = 0xADD8E6, | 
					
						
							|  |  |  |  | 		LIGHT_CYAN = 0xE0FFFF, | 
					
						
							|  |  |  |  | 		LIGHT_GOLDENROD_YELLOW = 0xFAFAD2, | 
					
						
							|  |  |  |  | 		LIGHT_GREEN = 0x90EE90, | 
					
						
							|  |  |  |  | 		LIGHT_GRAY = 0xD3D3D3, | 
					
						
							|  |  |  |  | 		LIGHT_PINK = 0xFFB6C1, | 
					
						
							|  |  |  |  | 		LIGHT_SEA_GREEN = 0x20B2AA, | 
					
						
							|  |  |  |  | 		LIGHT_SKY_BLUE = 0x87CEFA, | 
					
						
							|  |  |  |  | 		LIGHT_SLATE_GRAY = 0x778899, | 
					
						
							|  |  |  |  | 		LIGHT_YELLOW = 0xFFFFE0, | 
					
						
							|  |  |  |  | 		MEDIUM_BLUE = 0x0000CD, | 
					
						
							|  |  |  |  | 		MEDIUM_PURPLE = 0x9370DB, | 
					
						
							|  |  |  |  | 		MEDIUM_SEA_GREEN = 0x3CB371, | 
					
						
							|  |  |  |  | 		MEDIUM_SPRING_GREEN = 0x00FA9A, | 
					
						
							|  |  |  |  | 		MEDUIM_VIOLET_RED = 0xC71585, | 
					
						
							|  |  |  |  | 		MIDNIGHT_BLUE = 0x191970, | 
					
						
							|  |  |  |  | 		ORANGE = 0xFFA500, | 
					
						
							|  |  |  |  | 		ORANGE_RED = 0xFF4500, | 
					
						
							|  |  |  |  | 		PINK = 0xFFC0CB, | 
					
						
							|  |  |  |  | 		PURPLE = 0x800080, | 
					
						
							|  |  |  |  | 		RED = 0xFF0000, | 
					
						
							|  |  |  |  | 		SEA_GREEN = 0x2E8B57, | 
					
						
							|  |  |  |  | 		SEA_SHELL = 0xFFF5EE, | 
					
						
							|  |  |  |  | 		SILVER = 0xC0C0C0, | 
					
						
							|  |  |  |  | 		SKY_BLUE = 0x87CEEB, | 
					
						
							|  |  |  |  | 		SNOW = 0xFFFAFA, | 
					
						
							|  |  |  |  | 		SPRING_GREEN = 0x00FF7F, | 
					
						
							|  |  |  |  | 		TOMATO = 0xFF6347, | 
					
						
							|  |  |  |  | 		VIOLET = 0xEE82EE, | 
					
						
							|  |  |  |  | 		WHEAT = 0xF5DEB3, | 
					
						
							|  |  |  |  | 		WHITE = 0xFFFFFF, | 
					
						
							|  |  |  |  | 		WHITE_SMOKE = 0xF5F5F5, | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 		WOOD = 0xDEB887, | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 		YELLOW = 0xFFFF00, | 
					
						
							|  |  |  |  | 		YELLOW_GREEN = 0x9ACD32 | 
					
						
							|  |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 14:08:29 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	void _init( | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  |  | 		UINT32 rgb, | 
					
						
							|  |  |  |  | 		double alpha | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-04-22 14:08:29 +08:00
										 |  |  |  | 	float r; | 
					
						
							|  |  |  |  | 	float g; | 
					
						
							|  |  |  |  | 	float b; | 
					
						
							|  |  |  |  | 	float a; | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-31 22:34:18 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸֵ
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class FontWeight | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-03-31 22:34:18 +08:00
										 |  |  |  | 	enum : UINT32 | 
					
						
							| 
									
										
										
										
											2017-10-18 22:13:20 +08:00
										 |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		THIN = 100, | 
					
						
							|  |  |  |  | 		EXTRA_LIGHT = 200, | 
					
						
							|  |  |  |  | 		ULTRA_LIGHT = 200, | 
					
						
							|  |  |  |  | 		LIGHT = 300, | 
					
						
							|  |  |  |  | 		SEMI_LIGHT = 350, | 
					
						
							|  |  |  |  | 		NORMAL = 400, | 
					
						
							|  |  |  |  | 		REGULAR = 400, | 
					
						
							|  |  |  |  | 		MEDIUM = 500, | 
					
						
							|  |  |  |  | 		DEMI_BOLD = 600, | 
					
						
							|  |  |  |  | 		SEMI_BOLD = 600, | 
					
						
							|  |  |  |  | 		BOLD = 700, | 
					
						
							|  |  |  |  | 		EXTRA_BOLD = 800, | 
					
						
							|  |  |  |  | 		ULTRA_BOLD = 800, | 
					
						
							|  |  |  |  | 		BLACK = 900, | 
					
						
							|  |  |  |  | 		HEAVY = 900, | 
					
						
							|  |  |  |  | 		EXTRA_BLACK = 950, | 
					
						
							|  |  |  |  | 		ULTRA_BLACK = 950 | 
					
						
							|  |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 01:41:29 +08:00
										 |  |  |  | // <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>뷽ʽ
 | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | enum class TextAlign : int | 
					
						
							| 
									
										
										
										
											2018-03-30 01:41:29 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	LEFT,		/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	RIGHT,		/* <20>Ҷ<EFBFBD><D2B6><EFBFBD> */ | 
					
						
							|  |  |  |  | 	CENTER		/* <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-03-30 01:41:29 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | // <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | enum class KeyCode : int | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	UP = 0xC8, | 
					
						
							|  |  |  |  | 	LEFT = 0xCB, | 
					
						
							|  |  |  |  | 	RIGHT = 0xCD, | 
					
						
							|  |  |  |  | 	DOWN = 0xD0, | 
					
						
							|  |  |  |  | 	ENTER = 0x1C, | 
					
						
							|  |  |  |  | 	SPACE = 0x39, | 
					
						
							|  |  |  |  | 	ESC = 0x01, | 
					
						
							|  |  |  |  | 	BACK = 0x0E, | 
					
						
							|  |  |  |  | 	TAB = 0x0F, | 
					
						
							|  |  |  |  | 	PAUSE = 0xC5, | 
					
						
							|  |  |  |  | 	Q = 0x10, | 
					
						
							|  |  |  |  | 	W = 0x11, | 
					
						
							|  |  |  |  | 	E = 0x12, | 
					
						
							|  |  |  |  | 	R = 0x13, | 
					
						
							|  |  |  |  | 	T = 0x14, | 
					
						
							|  |  |  |  | 	Y = 0x15, | 
					
						
							|  |  |  |  | 	U = 0x16, | 
					
						
							|  |  |  |  | 	I = 0x17, | 
					
						
							|  |  |  |  | 	O = 0x18, | 
					
						
							|  |  |  |  | 	P = 0x19, | 
					
						
							|  |  |  |  | 	A = 0x1E, | 
					
						
							|  |  |  |  | 	S = 0x1F, | 
					
						
							|  |  |  |  | 	D = 0x20, | 
					
						
							|  |  |  |  | 	F = 0x21, | 
					
						
							|  |  |  |  | 	G = 0x22, | 
					
						
							|  |  |  |  | 	H = 0x23, | 
					
						
							|  |  |  |  | 	J = 0x24, | 
					
						
							|  |  |  |  | 	K = 0x25, | 
					
						
							|  |  |  |  | 	L = 0x26, | 
					
						
							|  |  |  |  | 	Z = 0x2C, | 
					
						
							|  |  |  |  | 	X = 0x2D, | 
					
						
							|  |  |  |  | 	C = 0x2E, | 
					
						
							|  |  |  |  | 	V = 0x2F, | 
					
						
							|  |  |  |  | 	B = 0x30, | 
					
						
							|  |  |  |  | 	N = 0x31, | 
					
						
							|  |  |  |  | 	M = 0x32, | 
					
						
							|  |  |  |  | 	NUM1 = 0x02, | 
					
						
							|  |  |  |  | 	NUM2 = 0x03, | 
					
						
							|  |  |  |  | 	NUM3 = 0x04, | 
					
						
							|  |  |  |  | 	NUM4 = 0x05, | 
					
						
							|  |  |  |  | 	NUM5 = 0x06, | 
					
						
							|  |  |  |  | 	NUM6 = 0x07, | 
					
						
							|  |  |  |  | 	NUM7 = 0x08, | 
					
						
							|  |  |  |  | 	NUM8 = 0x09, | 
					
						
							|  |  |  |  | 	NUM9 = 0x0A, | 
					
						
							|  |  |  |  | 	NUM0 = 0x0B, | 
					
						
							|  |  |  |  | 	NUMPAD7 = 0x47, | 
					
						
							|  |  |  |  | 	NUMPAD8 = 0x48, | 
					
						
							|  |  |  |  | 	NUMPAD9 = 0x49, | 
					
						
							|  |  |  |  | 	NUMPAD4 = 0x4B, | 
					
						
							|  |  |  |  | 	NUMPAD5 = 0x4C, | 
					
						
							|  |  |  |  | 	NUMPAD6 = 0x4D, | 
					
						
							|  |  |  |  | 	NUMPAD1 = 0x4F, | 
					
						
							|  |  |  |  | 	NUMPAD2 = 0x50, | 
					
						
							|  |  |  |  | 	NUMPAD3 = 0x51, | 
					
						
							|  |  |  |  | 	NUMPAD0 = 0x52 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-07 17:03:59 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ
 | 
					
						
							|  |  |  |  | enum class Cursor : int | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	NORMAL,		/* Ĭ<><C4AC>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ */ | 
					
						
							|  |  |  |  | 	HAND,		/* <20><>״ָ<D7B4><D6B8> */ | 
					
						
							|  |  |  |  | 	NO,			/* <20><>ָֹ<D6B9><D6B8> */ | 
					
						
							|  |  |  |  | 	WAIT,		/* ɳ©ָ<C2A9><D6B8> */ | 
					
						
							|  |  |  |  | 	ARROW_WAIT	/* Ĭ<><C4AC>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Сɳ© */ | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 01:11:56 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | enum class Direction : int | 
					
						
							| 
									
										
										
										
											2018-04-17 01:11:56 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	UP,			/* <20><> */ | 
					
						
							|  |  |  |  | 	DOWN,		/* <20><> */ | 
					
						
							|  |  |  |  | 	LEFT,		/* <20><> */ | 
					
						
							|  |  |  |  | 	RIGHT		/* <20><> */ | 
					
						
							| 
									
										
										
										
											2018-04-17 01:11:56 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | // <20><><EFBFBD>彻<EFBFBD><E5BDBB><EFBFBD><EFBFBD>ϵ
 | 
					
						
							|  |  |  |  | enum class Relation : int | 
					
						
							| 
									
										
										
										
											2017-11-07 23:04:33 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	UNKNOWN = 0,		/* <20><>ϵ<EFBFBD><CFB5>ȷ<EFBFBD><C8B7> */ | 
					
						
							|  |  |  |  | 	DISJOINT = 1,		/* û<>н<EFBFBD><D0BD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	IS_CONTAINED = 2,	/* <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	CONTAINS = 3,		/* <20><>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	OVERLAP = 4			/* <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-11-07 23:04:33 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | enum class LineJoin : int | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	MITER = 0, | 
					
						
							|  |  |  |  | 	BEVEL = 1, | 
					
						
							|  |  |  |  | 	ROUND = 2 | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  |  | // <20><>״<EFBFBD><D7B4>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | enum class ShapeStyle : int | 
					
						
							| 
									
										
										
										
											2018-04-01 00:04:33 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	SOLID,		/* <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	ROUND,		/* <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	FILL,		/* <20><><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20><>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | enum class ColliderType : int | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	RECT,		/* <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	CIRCLE,		/* Բ<><D4B2> */ | 
					
						
							|  |  |  |  | 	ELLIPSE		/* <20><>Բ<EFBFBD><D4B2> */ | 
					
						
							| 
									
										
										
										
											2018-04-01 00:04:33 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | // <20>ı<EFBFBD><C4B1><EFBFBD>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | class TextStyle | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 	String		fontFamily;			// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double		fontSize;			// <20>ֺ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	Color		color;				// <20><>ɫ
 | 
					
						
							|  |  |  |  | 	UINT32		fontWeight;			// <20><>ϸֵ
 | 
					
						
							|  |  |  |  | 	bool		italic;				// б<><D0B1>
 | 
					
						
							|  |  |  |  | 	TextAlign	alignment;			// <20><><EFBFBD>뷽ʽ
 | 
					
						
							|  |  |  |  | 	bool		wrapping;			// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double		wrappingWidth;		// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double		lineSpacing;		// <20>м<EFBFBD><D0BC><EFBFBD>
 | 
					
						
							|  |  |  |  | 	bool		hasUnderline;		// <20>»<EFBFBD><C2BB><EFBFBD>
 | 
					
						
							|  |  |  |  | 	bool		hasStrikethrough;	// ɾ<><C9BE><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	bool		hasOutline;			// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	Color		outlineColor;		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	double		outlineWidth;		// <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD>
 | 
					
						
							|  |  |  |  | 	LineJoin	outlineJoin;		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB>ʽ
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	TextStyle(); | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 	TextStyle( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& fontFamily, | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 		double fontSize = 22, | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  |  | 		Color color = Color::WHITE, | 
					
						
							|  |  |  |  | 		UINT32 fontWeight = FontWeight::NORMAL, | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 		bool italic = false, | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 		TextAlign alignment = TextAlign::LEFT, | 
					
						
							|  |  |  |  | 		bool wrapping = false, | 
					
						
							|  |  |  |  | 		double wrappingWidth = 0.0, | 
					
						
							|  |  |  |  | 		double lineSpacing = 0.0, | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 		bool hasUnderline = false, | 
					
						
							| 
									
										
										
										
											2018-04-22 00:33:20 +08:00
										 |  |  |  | 		bool hasStrikethrough = false, | 
					
						
							| 
									
										
										
										
											2018-04-22 14:08:29 +08:00
										 |  |  |  | 		bool hasOutline = true, | 
					
						
							| 
									
										
										
										
											2018-04-22 16:14:04 +08:00
										 |  |  |  | 		Color outlineColor = Color(Color::BLACK, 0.5), | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  |  | 		double outlineWidth = 1.0, | 
					
						
							| 
									
										
										
										
											2018-04-24 21:22:34 +08:00
										 |  |  |  | 		LineJoin outlineJoin = LineJoin::ROUND | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-21 18:42:07 +08:00
										 |  |  |  | // <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | struct NodeProperty | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	bool visable;		// <20>ɼ<EFBFBD><C9BC><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double posX;		// X <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double posY;		// Y <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double width;		// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double height;		// <20>߶<EFBFBD>
 | 
					
						
							|  |  |  |  | 	double opacity;		// <><CDB8><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double pivotX;		// <20><><EFBFBD>ĵ<EFBFBD> X <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double pivotY;		// <20><><EFBFBD>ĵ<EFBFBD> Y <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double scaleX;		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double scaleY;		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double rotation;	// <20><>ת<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	double skewAngleX;	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	double skewAngleY;	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ƕ<EFBFBD>
 | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 15:52:46 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | class Function | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Function(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	Function( | 
					
						
							|  |  |  |  | 		std::nullptr_t | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	Function( | 
					
						
							|  |  |  |  | 		std::function<void()> func | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	template<typename Func> | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  |  | 	Function(Func func) : _func(func) {} | 
					
						
							| 
									
										
										
										
											2018-04-22 15:52:46 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	template<typename Func, typename Object> | 
					
						
							|  |  |  |  | 	Function( | 
					
						
							| 
									
										
										
										
											2018-05-10 17:02:18 +08:00
										 |  |  |  | 		Func&& func,	/* <20><><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		Object&& obj	/* <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */ | 
					
						
							| 
									
										
										
										
											2018-04-22 15:52:46 +08:00
										 |  |  |  | 	) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  |  | 		_func = std::bind(func, obj); | 
					
						
							| 
									
										
										
										
											2018-04-22 15:52:46 +08:00
										 |  |  |  | 	} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	void operator() (void) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	operator bool() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-05-08 17:40:36 +08:00
										 |  |  |  | 	std::function<void()> _func; | 
					
						
							| 
									
										
										
										
											2018-04-22 15:52:46 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-03-03 11:46:57 +08:00
										 |  |  |  | class Object | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-03-03 11:46:57 +08:00
										 |  |  |  | 	Object(); | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-03 11:46:57 +08:00
										 |  |  |  | 	virtual ~Object(); | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
 | 
					
						
							|  |  |  |  | 	void retain(); | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
 | 
					
						
							|  |  |  |  | 	void release(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-03 17:02:08 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ü<EFBFBD><C3BC><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-04-21 18:22:01 +08:00
										 |  |  |  | 	int getRefCount() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  |  | 	virtual void onDestroy() {} | 
					
						
							| 
									
										
										
										
											2018-03-03 17:02:08 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | private: | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | 	int _refCount; | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | }; | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | // ͼƬ
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Image : | 
					
						
							| 
									
										
										
										
											2018-03-03 11:46:57 +08:00
										 |  |  |  | 	public Object | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>յ<EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Image(); | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC>ļ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Image( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& filePath	/* ͼƬ<CDBC>ļ<EFBFBD>·<EFBFBD><C2B7> */ | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC>Դ
 | 
					
						
							|  |  |  |  | 	Image( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		int resNameId,			/* ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		const String& resType	/* ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ü<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Image( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& filePath,	/* ͼƬ<CDBC>ļ<EFBFBD>·<EFBFBD><C2B7> */ | 
					
						
							|  |  |  |  | 		double cropX,			/* <20>ü<EFBFBD>λ<EFBFBD><CEBB> X <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropY,			/* <20>ü<EFBFBD>λ<EFBFBD><CEBB> Y <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropWidth,		/* <20>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropHeight		/* <20>ü<EFBFBD><C3BC>߶<EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD>ü<EFBFBD>
 | 
					
						
							|  |  |  |  | 	Image( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		int resNameId,			/* ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		const String& resType,	/* ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropX,			/* <20>ü<EFBFBD>λ<EFBFBD><CEBB> X <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropY,			/* <20>ü<EFBFBD>λ<EFBFBD><CEBB> Y <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropWidth,		/* <20>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropHeight		/* <20>ü<EFBFBD><C3BC>߶<EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	virtual ~Image(); | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC>ļ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	bool open( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& filePath | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC>Դ
 | 
					
						
							|  |  |  |  | 	bool open( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		int resNameId,			/* ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		const String& resType	/* ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-06 11:31:24 +08:00
										 |  |  |  | 	// <20><>ͼƬ<CDBC>ü<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void crop( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		double cropX,			/* <20>ü<EFBFBD>λ<EFBFBD><CEBB> X <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropY,			/* <20>ü<EFBFBD>λ<EFBFBD><CEBB> Y <20><><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropWidth,		/* <20>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		double cropHeight		/* <20>ü<EFBFBD><C3BC>߶<EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-03-02 23:49:57 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:07:43 +08:00
										 |  |  |  | 	virtual double getWidth() const; | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>߶<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:07:43 +08:00
										 |  |  |  | 	virtual double getHeight() const; | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>С
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	virtual Size getSize() const; | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 	// <20><>ȡԴͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:07:43 +08:00
										 |  |  |  | 	virtual double getSourceWidth() const; | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡԴͼƬ<CDBC>߶<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-27 21:07:43 +08:00
										 |  |  |  | 	virtual double getSourceHeight() const; | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡԴͼƬ<CDBC><C6AC>С
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	virtual Size getSourceSize() const; | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 	 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ü<EFBFBD>λ<EFBFBD><CEBB> X <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-04-06 11:31:24 +08:00
										 |  |  |  | 	virtual double getCropX() const; | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD>ü<EFBFBD>λ<EFBFBD><CEBB> Y <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-04-06 11:31:24 +08:00
										 |  |  |  | 	virtual double getCropY() const; | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ü<EFBFBD>λ<EFBFBD><CEBB>
 | 
					
						
							| 
									
										
										
										
											2018-04-06 11:31:24 +08:00
										 |  |  |  | 	virtual Point getCropPos() const; | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ ID2D1Bitmap <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	ID2D1Bitmap * getBitmap(); | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// Ԥ<><D4A4><EFBFBD><EFBFBD>ͼƬ<CDBC>ļ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 	static bool preload( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& filePath	/* ͼƬ<CDBC>ļ<EFBFBD>·<EFBFBD><C2B7> */ | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	// Ԥ<><D4A4><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC>Դ
 | 
					
						
							|  |  |  |  | 	static bool preload( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		int resNameId,			/* ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		const String& resType	/* ͼƬ<CDBC><C6AC>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-04-27 00:16:14 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 15:38:41 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>
 | 
					
						
							|  |  |  |  | 	static void clearCache(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-07 23:04:33 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | 	double	_cropX; | 
					
						
							|  |  |  |  | 	double	_cropY; | 
					
						
							|  |  |  |  | 	double	_cropWidth; | 
					
						
							|  |  |  |  | 	double	_cropHeight; | 
					
						
							|  |  |  |  | 	ID2D1Bitmap * _bitmap; | 
					
						
							| 
									
										
										
										
											2017-11-07 23:04:33 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | // ֡<><D6A1><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | class Animation : | 
					
						
							|  |  |  |  | 	public Object | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	Animation(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	Animation( | 
					
						
							|  |  |  |  | 		double interval		/* ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룩 */ | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	Animation( | 
					
						
							|  |  |  |  | 		double interval,					/* ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룩 */ | 
					
						
							|  |  |  |  | 		const std::vector<Image*>& frames	/* <20>ؼ<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	Animation( | 
					
						
							| 
									
										
										
										
											2018-05-10 17:02:18 +08:00
										 |  |  |  | 		const std::vector<Image*>& frames	/* <20>ؼ<EFBFBD>֡<EFBFBD>б<EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual ~Animation(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ӹؼ<D3B9>֡
 | 
					
						
							|  |  |  |  | 	void add( | 
					
						
							|  |  |  |  | 		Image * frame		/* <20>ؼ<EFBFBD>֡ */ | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ؼ<EFBFBD>֡
 | 
					
						
							|  |  |  |  | 	void add( | 
					
						
							| 
									
										
										
										
											2018-05-10 17:02:18 +08:00
										 |  |  |  | 		const std::vector<Image*>& frames	/* <20>ؼ<EFBFBD>֡<EFBFBD>б<EFBFBD> */ | 
					
						
							| 
									
										
										
										
											2018-05-10 00:58:43 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ֡<C8A1><D6A1><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	double getInterval() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD>ؼ<EFBFBD>֡
 | 
					
						
							|  |  |  |  | 	const std::vector<Image*>& getFrames() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>ÿһ֡<D2BB><D6A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setInterval( | 
					
						
							|  |  |  |  | 		double interval	/* ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룩 */ | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual Animation * clone() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>
 | 
					
						
							|  |  |  |  | 	virtual void onDestroy() override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	double	_interval; | 
					
						
							|  |  |  |  | 	std::vector<Image*> _frames; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Node; | 
					
						
							| 
									
										
										
										
											2018-03-13 13:13:26 +08:00
										 |  |  |  | class SceneManager; | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | class Transition; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | // <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | class Scene : | 
					
						
							| 
									
										
										
										
											2018-03-03 11:46:57 +08:00
										 |  |  |  | 	public Object | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	friend SceneManager; | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | 	friend Transition; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Scene(); | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	virtual ~Scene(); | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD>ִ<EFBFBD><D6B4>
 | 
					
						
							|  |  |  |  | 	virtual void onEnter() {} | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뿪<EFBFBD><EBBFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD>ִ<EFBFBD><D6B4>
 | 
					
						
							|  |  |  |  | 	virtual void onExit() {} | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD>ִ<EFBFBD><D6B4>
 | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  |  | 	virtual void onCollide( | 
					
						
							|  |  |  |  | 		Node* pActiveNode,	/* <20><>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		Node* pPassiveNode	/* <20><>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>ʱ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 	) {} | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-31 22:34:18 +08:00
										 |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹرմ<D8B1><D5B4><EFBFBD>ʱִ<CAB1>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD> false <20><><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>ڹرգ<D8B1>
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	virtual bool onCloseWindow() { return true; } | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿһ֡<D2BB><D6A1><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2>ʱִ<CAB1><D6B4>
 | 
					
						
							|  |  |  |  | 	virtual void onUpdate() {} | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> onUpdate <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-04 21:24:27 +08:00
										 |  |  |  | 	void setAutoUpdate( | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 		bool bAutoUpdate | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ӽڵ㵽<DAB5><E3B5BD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-03-03 11:46:57 +08:00
										 |  |  |  | 	void add( | 
					
						
							| 
									
										
										
										
											2018-04-01 00:04:33 +08:00
										 |  |  |  | 		Node * child,	/* Ҫ<><D2AA><EFBFBD>ӵĽڵ<C4BD> */ | 
					
						
							|  |  |  |  | 		int zOrder = 0	/* <20><>Ⱦ˳<C8BE><CBB3> */ | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-01 13:16:07 +08:00
										 |  |  |  | 	// <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ڵ㵽<DAB5><E3B5BD><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-04-01 00:04:33 +08:00
										 |  |  |  | 	virtual void add( | 
					
						
							| 
									
										
										
										
											2018-05-10 17:02:18 +08:00
										 |  |  |  | 		const std::vector<Node*>& nodes,	/* <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		int order = 0						/* <20><>Ⱦ˳<C8BE><CBB3> */ | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// ɾ<><C9BE><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							|  |  |  |  | 	bool remove( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 		Node * child | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-24 13:28:21 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							|  |  |  |  | 	std::vector<Node*> get( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& name | 
					
						
							| 
									
										
										
										
											2018-04-24 13:28:21 +08:00
										 |  |  |  | 	) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							|  |  |  |  | 	Node* getOne( | 
					
						
							| 
									
										
										
										
											2018-05-07 15:48:06 +08:00
										 |  |  |  | 		const String& name | 
					
						
							| 
									
										
										
										
											2018-04-24 13:28:21 +08:00
										 |  |  |  | 	) const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
 | 
					
						
							| 
									
										
										
										
											2018-05-10 14:16:36 +08:00
										 |  |  |  | 	const std::vector<Node*>& getAll() const; | 
					
						
							| 
									
										
										
										
											2018-04-24 13:28:21 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڵ<EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  |  | 	Node * getRoot() const; | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-01 13:16:07 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>رսڵ<D5BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ
 | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  |  | 	void showCollider( | 
					
						
							| 
									
										
										
										
											2018-04-01 13:16:07 +08:00
										 |  |  |  | 		bool visiable = true | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-21 18:22:01 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-05-08 20:03:29 +08:00
										 |  |  |  | 	virtual void onDestroy() override; | 
					
						
							| 
									
										
										
										
											2018-04-21 18:22:01 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	// <20><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void _render(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void _update(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  |  | 	bool _autoUpdate; | 
					
						
							|  |  |  |  | 	bool _colliderVisiable; | 
					
						
							|  |  |  |  | 	Node * _root; | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  |  | }; | 
					
						
							| 
									
										
										
										
											2017-12-11 18:17:24 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-03 22:04:43 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | template<typename Object> | 
					
						
							| 
									
										
										
										
											2018-04-24 13:28:21 +08:00
										 |  |  |  | inline void SafeRelease(Object** p)  | 
					
						
							|  |  |  |  | {  | 
					
						
							|  |  |  |  | 	if (*p)  | 
					
						
							|  |  |  |  | 	{  | 
					
						
							|  |  |  |  | 		(*p)->release();  | 
					
						
							|  |  |  |  | 		(*p) = nullptr;  | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-03-30 23:37:42 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-12 23:34:13 +08:00
										 |  |  |  | } |