update Shape
Now you can directly set the shape of nodes by Shape::TYPE. The subclasses of Shape are prefixed with 'Shape'.
This commit is contained in:
		
							parent
							
								
									4b677e727e
								
							
						
					
					
						commit
						e78f8795e7
					
				|  | @ -39,7 +39,7 @@ e2d::Node::Node() | ||||||
| { | { | ||||||
| 	if (s_fDefaultShapeEnabled) | 	if (s_fDefaultShapeEnabled) | ||||||
| 	{ | 	{ | ||||||
| 		auto rect = new Rect(this); | 		auto rect = new ShapeRectangle(this); | ||||||
| 		this->setShape(rect); | 		this->setShape(rect); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -542,6 +542,36 @@ void e2d::Node::setSize(Size size) | ||||||
| 	this->setSize(size.width, size.height); | 	this->setSize(size.width, size.height); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void e2d::Node::setShape(Shape::TYPE type) | ||||||
|  | { | ||||||
|  | 	switch (type) | ||||||
|  | 	{ | ||||||
|  | 	case Shape::TYPE::RECTANGLE: | ||||||
|  | 	{ | ||||||
|  | 		auto rect = new ShapeRectangle(this); | ||||||
|  | 		this->setShape(rect); | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	case Shape::TYPE::CIRCLE: | ||||||
|  | 	{ | ||||||
|  | 		auto rect = new ShapeCircle(this); | ||||||
|  | 		this->setShape(rect); | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	case Shape::TYPE::ELLIPSE: | ||||||
|  | 	{ | ||||||
|  | 		auto rect = new ShapeEllipse(this); | ||||||
|  | 		this->setShape(rect); | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	default: | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void e2d::Node::setShape(Shape * pShape) | void e2d::Node::setShape(Shape * pShape) | ||||||
| { | { | ||||||
| 	// 删除旧的形状
 | 	// 删除旧的形状
 | ||||||
|  |  | ||||||
|  | @ -1,22 +1,22 @@ | ||||||
| #include "..\eshape.h" | #include "..\eshape.h" | ||||||
| #include "..\enodes.h" | #include "..\enodes.h" | ||||||
| 
 | 
 | ||||||
| e2d::Circle::Circle() | e2d::ShapeCircle::ShapeCircle() | ||||||
| 	: m_pD2dCircle(nullptr) | 	: m_pD2dCircle(nullptr) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Circle::Circle(Point center, double radius) | e2d::ShapeCircle::ShapeCircle(Point center, double radius) | ||||||
| 	: m_pD2dCircle(nullptr) | 	: m_pD2dCircle(nullptr) | ||||||
| { | { | ||||||
| 	this->_setCircle(center, radius); | 	this->setCircle(center, radius); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Circle::Circle(Node * node) | e2d::ShapeCircle::ShapeCircle(Node * node) | ||||||
| 	: m_pD2dCircle(nullptr) | 	: m_pD2dCircle(nullptr) | ||||||
| { | { | ||||||
| 	double minSide = min(node->getRealWidth(), node->getRealHeight()); | 	double minSide = min(node->getRealWidth(), node->getRealHeight()); | ||||||
| 	this->_setCircle( | 	this->setCircle( | ||||||
| 		Point( | 		Point( | ||||||
| 			node->getRealWidth() / 2, | 			node->getRealWidth() / 2, | ||||||
| 			node->getRealHeight() / 2 | 			node->getRealHeight() / 2 | ||||||
|  | @ -25,12 +25,12 @@ e2d::Circle::Circle(Node * node) | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Circle::~Circle() | e2d::ShapeCircle::~ShapeCircle() | ||||||
| { | { | ||||||
| 	SafeReleaseInterface(&m_pD2dCircle); | 	SafeReleaseInterface(&m_pD2dCircle); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Circle::_setCircle(Point center, double radius) | void e2d::ShapeCircle::setCircle(Point center, double radius) | ||||||
| { | { | ||||||
| 	SafeReleaseInterface(&m_pD2dCircle); | 	SafeReleaseInterface(&m_pD2dCircle); | ||||||
| 
 | 
 | ||||||
|  | @ -45,12 +45,12 @@ void e2d::Circle::_setCircle(Point center, double radius) | ||||||
| 		); | 		); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Circle::_resize() | void e2d::ShapeCircle::_resize() | ||||||
| { | { | ||||||
| 	if (m_pParentNode && m_bEnable) | 	if (m_pParentNode && m_bEnable) | ||||||
| 	{ | 	{ | ||||||
| 		double minSide = min(m_pParentNode->getRealWidth(), m_pParentNode->getRealHeight()); | 		double minSide = min(m_pParentNode->getRealWidth(), m_pParentNode->getRealHeight()); | ||||||
| 		this->_setCircle( | 		this->setCircle( | ||||||
| 			Point( | 			Point( | ||||||
| 				m_pParentNode->getRealWidth() / 2, | 				m_pParentNode->getRealWidth() / 2, | ||||||
| 				m_pParentNode->getRealHeight() / 2 | 				m_pParentNode->getRealHeight() / 2 | ||||||
|  | @ -60,7 +60,7 @@ void e2d::Circle::_resize() | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ID2D1EllipseGeometry * e2d::Circle::getD2dGeometry() const | ID2D1EllipseGeometry * e2d::ShapeCircle::getD2dGeometry() const | ||||||
| { | { | ||||||
| 	return m_pD2dCircle; | 	return m_pD2dCircle; | ||||||
| } | } | ||||||
|  | @ -1,21 +1,21 @@ | ||||||
| #include "..\eshape.h" | #include "..\eshape.h" | ||||||
| #include "..\enodes.h" | #include "..\enodes.h" | ||||||
| 
 | 
 | ||||||
| e2d::Ellipse::Ellipse() | e2d::ShapeEllipse::ShapeEllipse() | ||||||
| 	: m_pD2dEllipse(nullptr) | 	: m_pD2dEllipse(nullptr) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Ellipse::Ellipse(Point center, double radiusX, double radiusY) | e2d::ShapeEllipse::ShapeEllipse(Point center, double radiusX, double radiusY) | ||||||
| 	: m_pD2dEllipse(nullptr) | 	: m_pD2dEllipse(nullptr) | ||||||
| { | { | ||||||
| 	this->_setEllipse(center, radiusX, radiusY); | 	this->setEllipse(center, radiusX, radiusY); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Ellipse::Ellipse(Node * node) | e2d::ShapeEllipse::ShapeEllipse(Node * node) | ||||||
| 	: m_pD2dEllipse(nullptr) | 	: m_pD2dEllipse(nullptr) | ||||||
| { | { | ||||||
| 	this->_setEllipse( | 	this->setEllipse( | ||||||
| 		Point( | 		Point( | ||||||
| 			node->getWidth() / 2, | 			node->getWidth() / 2, | ||||||
| 			node->getHeight() / 2 | 			node->getHeight() / 2 | ||||||
|  | @ -25,12 +25,12 @@ e2d::Ellipse::Ellipse(Node * node) | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Ellipse::~Ellipse() | e2d::ShapeEllipse::~ShapeEllipse() | ||||||
| { | { | ||||||
| 	SafeReleaseInterface(&m_pD2dEllipse); | 	SafeReleaseInterface(&m_pD2dEllipse); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Ellipse::_setEllipse(Point center, double radiusX, double radiusY) | void e2d::ShapeEllipse::setEllipse(Point center, double radiusX, double radiusY) | ||||||
| { | { | ||||||
| 	SafeReleaseInterface(&m_pD2dEllipse); | 	SafeReleaseInterface(&m_pD2dEllipse); | ||||||
| 
 | 
 | ||||||
|  | @ -45,11 +45,11 @@ void e2d::Ellipse::_setEllipse(Point center, double radiusX, double radiusY) | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Ellipse::_resize() | void e2d::ShapeEllipse::_resize() | ||||||
| { | { | ||||||
| 	if (m_pParentNode && m_bEnable) | 	if (m_pParentNode && m_bEnable) | ||||||
| 	{ | 	{ | ||||||
| 		this->_setEllipse( | 		this->setEllipse( | ||||||
| 			Point( | 			Point( | ||||||
| 				m_pParentNode->getWidth() / 2, | 				m_pParentNode->getWidth() / 2, | ||||||
| 				m_pParentNode->getHeight() / 2 | 				m_pParentNode->getHeight() / 2 | ||||||
|  | @ -60,7 +60,7 @@ void e2d::Ellipse::_resize() | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ID2D1EllipseGeometry * e2d::Ellipse::getD2dGeometry() const | ID2D1EllipseGeometry * e2d::ShapeEllipse::getD2dGeometry() const | ||||||
| { | { | ||||||
| 	return m_pD2dEllipse; | 	return m_pD2dEllipse; | ||||||
| } | } | ||||||
|  | @ -1,21 +1,21 @@ | ||||||
| #include "..\eshape.h" | #include "..\eshape.h" | ||||||
| #include "..\enodes.h" | #include "..\enodes.h" | ||||||
| 
 | 
 | ||||||
| e2d::Rect::Rect() | e2d::ShapeRectangle::ShapeRectangle() | ||||||
| 	: m_pD2dRectangle(nullptr) | 	: m_pD2dRectangle(nullptr) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Rect::Rect(double x, double y, double width, double height) | e2d::ShapeRectangle::ShapeRectangle(double x, double y, double width, double height) | ||||||
| 	: m_pD2dRectangle(nullptr) | 	: m_pD2dRectangle(nullptr) | ||||||
| { | { | ||||||
| 	this->_setRect(x, y, x + width, y + height); | 	this->setRect(x, y, x + width, y + height); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Rect::Rect(Node * node) | e2d::ShapeRectangle::ShapeRectangle(Node * node) | ||||||
| 	: m_pD2dRectangle(nullptr) | 	: m_pD2dRectangle(nullptr) | ||||||
| { | { | ||||||
| 	this->_setRect( | 	this->setRect( | ||||||
| 		0, | 		0, | ||||||
| 		0, | 		0, | ||||||
| 		node->getRealWidth(), | 		node->getRealWidth(), | ||||||
|  | @ -23,12 +23,12 @@ e2d::Rect::Rect(Node * node) | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| e2d::Rect::~Rect() | e2d::ShapeRectangle::~ShapeRectangle() | ||||||
| { | { | ||||||
| 	SafeReleaseInterface(&m_pD2dRectangle); | 	SafeReleaseInterface(&m_pD2dRectangle); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Rect::_setRect(double left, double top, double right, double bottom) | void e2d::ShapeRectangle::setRect(double left, double top, double right, double bottom) | ||||||
| { | { | ||||||
| 	SafeReleaseInterface(&m_pD2dRectangle); | 	SafeReleaseInterface(&m_pD2dRectangle); | ||||||
| 
 | 
 | ||||||
|  | @ -42,11 +42,11 @@ void e2d::Rect::_setRect(double left, double top, double right, double bottom) | ||||||
| 	); | 	); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void e2d::Rect::_resize() | void e2d::ShapeRectangle::_resize() | ||||||
| { | { | ||||||
| 	if (m_pParentNode && m_bEnable) | 	if (m_pParentNode && m_bEnable) | ||||||
| 	{ | 	{ | ||||||
| 		this->_setRect( | 		this->setRect( | ||||||
| 			0, | 			0, | ||||||
| 			0, | 			0, | ||||||
| 			m_pParentNode->getRealWidth(), | 			m_pParentNode->getRealWidth(), | ||||||
|  | @ -55,7 +55,7 @@ void e2d::Rect::_resize() | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ID2D1RectangleGeometry * e2d::Rect::getD2dGeometry() const | ID2D1RectangleGeometry * e2d::ShapeRectangle::getD2dGeometry() const | ||||||
| { | { | ||||||
| 	return m_pD2dRectangle; | 	return m_pD2dRectangle; | ||||||
| } | } | ||||||
|  | @ -648,6 +648,104 @@ protected: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | class ShapeManager; | ||||||
|  | 
 | ||||||
|  | // 形状
 | ||||||
|  | class Shape : | ||||||
|  | 	public Object | ||||||
|  | { | ||||||
|  | 	friend ShapeManager; | ||||||
|  | 	friend Node; | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  | 	// 形状类别
 | ||||||
|  | 	enum TYPE | ||||||
|  | 	{ | ||||||
|  | 		RECTANGLE,	/* 矩形 */ | ||||||
|  | 		CIRCLE,		/* 圆形 */ | ||||||
|  | 		ELLIPSE		/* 椭圆形 */ | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  | 	Shape(); | ||||||
|  | 
 | ||||||
|  | 	virtual ~Shape(); | ||||||
|  | 
 | ||||||
|  | 	// 判断两形状的交集关系
 | ||||||
|  | 	virtual int getRelationWith( | ||||||
|  | 		Shape * pShape | ||||||
|  | 	) const; | ||||||
|  | 
 | ||||||
|  | 	// 获取父节点
 | ||||||
|  | 	Node * getParentNode() const; | ||||||
|  | 
 | ||||||
|  | 	// 获取类别掩码
 | ||||||
|  | 	UINT32 getCategoryBitmask() const; | ||||||
|  | 
 | ||||||
|  | 	// 获取冲突掩码
 | ||||||
|  | 	UINT32 getCollisionBitmask() const; | ||||||
|  | 
 | ||||||
|  | 	// 设置类别掩码
 | ||||||
|  | 	void setCategoryBitmask( | ||||||
|  | 		UINT32 mask | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 设置冲突掩码
 | ||||||
|  | 	void setCollisionBitmask( | ||||||
|  | 		UINT32 mask | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 启用或关闭该形状
 | ||||||
|  | 	virtual void setEnable( | ||||||
|  | 		bool bEnable | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 设置形状的可见性
 | ||||||
|  | 	void setVisiable( | ||||||
|  | 		bool bVisiable | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 设置绘制颜色
 | ||||||
|  | 	void setColor( | ||||||
|  | 		UINT32 color | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 设置绘制透明度
 | ||||||
|  | 	void setOpacity( | ||||||
|  | 		double opacity | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 设置大小跟随
 | ||||||
|  | 	void setAutoResize( | ||||||
|  | 		bool bEnable | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
|  | 	// 获取 ID2D1Geometry 对象
 | ||||||
|  | 	virtual ID2D1Geometry * getD2dGeometry() const = 0; | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  | 	// 转换形状
 | ||||||
|  | 	virtual void _transform(); | ||||||
|  | 
 | ||||||
|  | 	// 重设大小
 | ||||||
|  | 	virtual void _resize() = 0; | ||||||
|  | 
 | ||||||
|  | 	// 渲染形状
 | ||||||
|  | 	virtual void _render(); | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
|  | 	bool	m_bEnable; | ||||||
|  | 	bool	m_bIsVisiable; | ||||||
|  | 	bool	m_bAutoResize; | ||||||
|  | 	UINT32	m_nCategoryBitmask; | ||||||
|  | 	UINT32	m_nCollisionBitmask; | ||||||
|  | 	UINT32	m_nColor; | ||||||
|  | 	float	m_fOpacity; | ||||||
|  | 	Node *	m_pParentNode; | ||||||
|  | 	ID2D1TransformedGeometry * m_pTransformedShape; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // String 类模板函数定义
 | // String 类模板函数定义
 | ||||||
| template<typename T> | template<typename T> | ||||||
| inline e2d::String e2d::String::toString(T value) | inline e2d::String e2d::String::toString(T value) | ||||||
|  |  | ||||||
|  | @ -6,7 +6,6 @@ namespace e2d | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Action; | class Action; | ||||||
| class Shape; |  | ||||||
| class Transition; | class Transition; | ||||||
| 
 | 
 | ||||||
| class Node : | class Node : | ||||||
|  | @ -307,6 +306,11 @@ public: | ||||||
| 		Size size | 		Size size | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | 	// 设置节点形状
 | ||||||
|  | 	virtual void setShape( | ||||||
|  | 		Shape::TYPE type | ||||||
|  | 	); | ||||||
|  | 
 | ||||||
| 	// 设置节点形状
 | 	// 设置节点形状
 | ||||||
| 	virtual void setShape( | 	virtual void setShape( | ||||||
| 		Shape * pShape | 		Shape * pShape | ||||||
|  | @ -704,6 +708,7 @@ public: | ||||||
| 	virtual void onFixedUpdate() override; | 	virtual void onFixedUpdate() override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|  | 	// 按钮状态枚举
 | ||||||
| 	enum BTN_STATE { NORMAL, MOUSEOVER, SELECTED }; | 	enum BTN_STATE { NORMAL, MOUSEOVER, SELECTED }; | ||||||
| 
 | 
 | ||||||
| 	// 设置按钮状态
 | 	// 设置按钮状态
 | ||||||
|  |  | ||||||
							
								
								
									
										161
									
								
								core/eshape.h
								
								
								
								
							
							
						
						
									
										161
									
								
								core/eshape.h
								
								
								
								
							|  | @ -5,105 +5,17 @@ | ||||||
| namespace e2d | namespace e2d | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
| class ShapeManager; |  | ||||||
| class Node; |  | ||||||
| 
 | 
 | ||||||
| 
 | // 矩形
 | ||||||
| class Shape : | class ShapeRectangle : | ||||||
| 	public Object |  | ||||||
| { |  | ||||||
| 	friend ShapeManager; |  | ||||||
| 	friend Node; |  | ||||||
| 
 |  | ||||||
| public: |  | ||||||
| 	Shape(); |  | ||||||
| 
 |  | ||||||
| 	virtual ~Shape(); |  | ||||||
| 
 |  | ||||||
| 	// 判断两形状的交集关系
 |  | ||||||
| 	virtual int getRelationWith( |  | ||||||
| 		Shape * pShape |  | ||||||
| 	) const; |  | ||||||
| 
 |  | ||||||
| 	// 获取父节点
 |  | ||||||
| 	Node * getParentNode() const; |  | ||||||
| 
 |  | ||||||
| 	// 获取类别掩码
 |  | ||||||
| 	UINT32 getCategoryBitmask() const; |  | ||||||
| 
 |  | ||||||
| 	// 获取冲突掩码
 |  | ||||||
| 	UINT32 getCollisionBitmask() const; |  | ||||||
| 
 |  | ||||||
| 	// 设置类别掩码
 |  | ||||||
| 	void setCategoryBitmask( |  | ||||||
| 		UINT32 mask |  | ||||||
| 	); |  | ||||||
| 
 |  | ||||||
| 	// 设置冲突掩码
 |  | ||||||
| 	void setCollisionBitmask( |  | ||||||
| 		UINT32 mask |  | ||||||
| 	); |  | ||||||
| 
 |  | ||||||
| 	// 启用或关闭该形状
 |  | ||||||
| 	virtual void setEnable( |  | ||||||
| 		bool bEnable |  | ||||||
| 	); |  | ||||||
| 
 |  | ||||||
| 	// 设置形状的可见性
 |  | ||||||
| 	void setVisiable( |  | ||||||
| 		bool bVisiable |  | ||||||
| 	); |  | ||||||
| 
 |  | ||||||
| 	// 设置绘制颜色
 |  | ||||||
| 	void setColor( |  | ||||||
| 		UINT32 color |  | ||||||
| 	); |  | ||||||
| 
 |  | ||||||
| 	// 设置绘制透明度
 |  | ||||||
| 	void setOpacity( |  | ||||||
| 		double opacity |  | ||||||
| 	); |  | ||||||
| 
 |  | ||||||
| 	// 设置大小跟随
 |  | ||||||
| 	void setAutoResize( |  | ||||||
| 		bool bEnable |  | ||||||
| 	); |  | ||||||
| 
 |  | ||||||
| 	// 获取 ID2D1Geometry 对象
 |  | ||||||
| 	virtual ID2D1Geometry * getD2dGeometry() const = 0; |  | ||||||
| 
 |  | ||||||
| protected: |  | ||||||
| 	// 转换形状
 |  | ||||||
| 	virtual void _transform(); |  | ||||||
| 
 |  | ||||||
| 	// 重设大小
 |  | ||||||
| 	virtual void _resize() = 0; |  | ||||||
| 
 |  | ||||||
| 	// 渲染形状
 |  | ||||||
| 	virtual void _render(); |  | ||||||
| 
 |  | ||||||
| protected: |  | ||||||
| 	bool	m_bEnable; |  | ||||||
| 	bool	m_bIsVisiable; |  | ||||||
| 	bool	m_bAutoResize; |  | ||||||
| 	UINT32	m_nCategoryBitmask; |  | ||||||
| 	UINT32	m_nCollisionBitmask; |  | ||||||
| 	UINT32	m_nColor; |  | ||||||
| 	float	m_fOpacity; |  | ||||||
| 	Node *	m_pParentNode; |  | ||||||
| 	ID2D1TransformedGeometry * m_pTransformedShape; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class Rect : |  | ||||||
| 	public Shape | 	public Shape | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	// 创建一个空矩形
 | 	// 创建一个默认矩形
 | ||||||
| 	Rect(); | 	ShapeRectangle(); | ||||||
| 
 | 
 | ||||||
| 	// 根据左上角坐标和宽高创建矩形
 | 	// 根据左上角坐标和宽高创建矩形
 | ||||||
| 	Rect( | 	ShapeRectangle( | ||||||
| 		double x, | 		double x, | ||||||
| 		double y, | 		double y, | ||||||
| 		double width, | 		double width, | ||||||
|  | @ -111,23 +23,24 @@ public: | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 创建一个和节点位置大小相同的矩形
 | 	// 创建一个和节点位置大小相同的矩形
 | ||||||
| 	Rect( | 	ShapeRectangle( | ||||||
| 		Node * node | 		Node * node | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	virtual ~Rect(); | 	virtual ~ShapeRectangle(); | ||||||
| 
 | 
 | ||||||
| 	// 获取 ID2D1Geometry 对象
 | 	// 修改矩形大小
 | ||||||
| 	virtual ID2D1RectangleGeometry * getD2dGeometry() const override; | 	void setRect( | ||||||
| 
 |  | ||||||
| protected: |  | ||||||
| 	void _setRect( |  | ||||||
| 		double left, | 		double left, | ||||||
| 		double top, | 		double top, | ||||||
| 		double right, | 		double right, | ||||||
| 		double bottom | 		double bottom | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | 	// 获取 ID2D1Geometry 对象
 | ||||||
|  | 	virtual ID2D1RectangleGeometry * getD2dGeometry() const override; | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
| 	// 重设大小
 | 	// 重设大小
 | ||||||
| 	virtual void _resize(); | 	virtual void _resize(); | ||||||
| 
 | 
 | ||||||
|  | @ -136,35 +49,37 @@ protected: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Circle : | // 圆形
 | ||||||
|  | class ShapeCircle : | ||||||
| 	public Shape | 	public Shape | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	// 创建一个空的圆形
 | 	// 创建一个默认圆形
 | ||||||
| 	Circle(); | 	ShapeCircle(); | ||||||
| 
 | 
 | ||||||
| 	// 根据圆心和半径创建圆形
 | 	// 根据圆心和半径创建圆形
 | ||||||
| 	Circle( | 	ShapeCircle( | ||||||
| 		Point center, | 		Point center, | ||||||
| 		double radius | 		double radius | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 创建一个和节点位置大小相同的圆形
 | 	// 创建一个和节点位置大小相同的圆形
 | ||||||
| 	Circle( | 	ShapeCircle( | ||||||
| 		Node * node | 		Node * node | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	virtual ~Circle(); | 	virtual ~ShapeCircle(); | ||||||
|  | 
 | ||||||
|  | 	// 修改圆形大小
 | ||||||
|  | 	void setCircle( | ||||||
|  | 		Point center, | ||||||
|  | 		double radius | ||||||
|  | 	); | ||||||
| 
 | 
 | ||||||
| 	// 获取 ID2D1Geometry 对象
 | 	// 获取 ID2D1Geometry 对象
 | ||||||
| 	virtual ID2D1EllipseGeometry * getD2dGeometry() const override; | 	virtual ID2D1EllipseGeometry * getD2dGeometry() const override; | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
| 	void _setCircle( |  | ||||||
| 		Point center, |  | ||||||
| 		double radius |  | ||||||
| 	); |  | ||||||
| 
 |  | ||||||
| 	// 重设大小
 | 	// 重设大小
 | ||||||
| 	virtual void _resize(); | 	virtual void _resize(); | ||||||
| 
 | 
 | ||||||
|  | @ -173,37 +88,39 @@ protected: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Ellipse : | // 椭圆形
 | ||||||
|  | class ShapeEllipse : | ||||||
| 	public Shape | 	public Shape | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	// 创建一个空的椭圆
 | 	// 创建一个默认椭圆
 | ||||||
| 	Ellipse(); | 	ShapeEllipse(); | ||||||
| 
 | 
 | ||||||
| 	// 根据圆心和半径创建椭圆
 | 	// 根据圆心和半径创建椭圆
 | ||||||
| 	Ellipse( | 	ShapeEllipse( | ||||||
| 		Point center, | 		Point center, | ||||||
| 		double radiusX, | 		double radiusX, | ||||||
| 		double radiusY | 		double radiusY | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	// 创建一个和节点位置大小相同的椭圆
 | 	// 创建一个和节点位置大小相同的椭圆
 | ||||||
| 	Ellipse( | 	ShapeEllipse( | ||||||
| 		Node * node | 		Node * node | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
| 	virtual ~Ellipse(); | 	virtual ~ShapeEllipse(); | ||||||
| 
 | 
 | ||||||
| 	// 获取 ID2D1Geometry 对象
 | 	// 修改椭圆大小
 | ||||||
| 	virtual ID2D1EllipseGeometry * getD2dGeometry() const override; | 	void setEllipse( | ||||||
| 
 |  | ||||||
| protected: |  | ||||||
| 	void _setEllipse( |  | ||||||
| 		Point center, | 		Point center, | ||||||
| 		double radiusX, | 		double radiusX, | ||||||
| 		double radiusY | 		double radiusY | ||||||
| 	); | 	); | ||||||
| 
 | 
 | ||||||
|  | 	// 获取 ID2D1Geometry 对象
 | ||||||
|  | 	virtual ID2D1EllipseGeometry * getD2dGeometry() const override; | ||||||
|  | 
 | ||||||
|  | protected: | ||||||
| 	// 重设大小
 | 	// 重设大小
 | ||||||
| 	virtual void _resize(); | 	virtual void _resize(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -231,9 +231,9 @@ | ||||||
|     <ClCompile Include="..\..\core\Node\Node.cpp" /> |     <ClCompile Include="..\..\core\Node\Node.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Node\Sprite.cpp" /> |     <ClCompile Include="..\..\core\Node\Sprite.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Node\Text.cpp" /> |     <ClCompile Include="..\..\core\Node\Text.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Shape\Circle.cpp" /> |     <ClCompile Include="..\..\core\Shape\ShapeCircle.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Shape\Ellipse.cpp" /> |     <ClCompile Include="..\..\core\Shape\ShapeEllipse.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Shape\Rect.cpp" /> |     <ClCompile Include="..\..\core\Shape\ShapeRectangle.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Shape\Shape.cpp" /> |     <ClCompile Include="..\..\core\Shape\Shape.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Tool\Data.cpp" /> |     <ClCompile Include="..\..\core\Tool\Data.cpp" /> | ||||||
|     <ClCompile Include="..\..\core\Tool\Path.cpp" /> |     <ClCompile Include="..\..\core\Tool\Path.cpp" /> | ||||||
|  |  | ||||||
|  | @ -150,18 +150,9 @@ | ||||||
|     <ClCompile Include="..\..\core\Manager\ShapeManager.cpp"> |     <ClCompile Include="..\..\core\Manager\ShapeManager.cpp"> | ||||||
|       <Filter>Manager</Filter> |       <Filter>Manager</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|     <ClCompile Include="..\..\core\Shape\Circle.cpp"> |  | ||||||
|       <Filter>Shape</Filter> |  | ||||||
|     </ClCompile> |  | ||||||
|     <ClCompile Include="..\..\core\Shape\Ellipse.cpp"> |  | ||||||
|       <Filter>Shape</Filter> |  | ||||||
|     </ClCompile> |  | ||||||
|     <ClCompile Include="..\..\core\Shape\Shape.cpp"> |     <ClCompile Include="..\..\core\Shape\Shape.cpp"> | ||||||
|       <Filter>Shape</Filter> |       <Filter>Shape</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|     <ClCompile Include="..\..\core\Shape\Rect.cpp"> |  | ||||||
|       <Filter>Shape</Filter> |  | ||||||
|     </ClCompile> |  | ||||||
|     <ClCompile Include="..\..\core\Common\Point.cpp"> |     <ClCompile Include="..\..\core\Common\Point.cpp"> | ||||||
|       <Filter>Common</Filter> |       <Filter>Common</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  | @ -189,6 +180,15 @@ | ||||||
|     <ClCompile Include="..\..\core\Tool\Path.cpp"> |     <ClCompile Include="..\..\core\Tool\Path.cpp"> | ||||||
|       <Filter>Tool</Filter> |       <Filter>Tool</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeRectangle.cpp"> | ||||||
|  |       <Filter>Shape</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeEllipse.cpp"> | ||||||
|  |       <Filter>Shape</Filter> | ||||||
|  |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\..\core\Shape\ShapeCircle.cpp"> | ||||||
|  |       <Filter>Shape</Filter> | ||||||
|  |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClInclude Include="..\..\core\etools.h" /> |     <ClInclude Include="..\..\core\etools.h" /> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue