290 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			290 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
| #pragma once
 | |
| #include "e2dnode.h"
 | |
| 
 | |
| namespace e2d
 | |
| {
 | |
| 
 | |
| 
 | |
| // 形状
 | |
| class Shape :
 | |
| 	public Node
 | |
| {
 | |
| public:
 | |
| 	Shape();
 | |
| 
 | |
| 	virtual ~Shape();
 | |
| 
 | |
| 	// 获取样式
 | |
| 	int getStyle() const;
 | |
| 
 | |
| 	// 获取填充颜色
 | |
| 	Color getFillColor() const;
 | |
| 
 | |
| 	// 获取线条颜色
 | |
| 	Color getLineColor() const;
 | |
| 
 | |
| 	// 获取线条宽度
 | |
| 	double getStrokeWidth() const;
 | |
| 
 | |
| 	// 设置填充颜色
 | |
| 	void setFillColor(
 | |
| 		Color fillColor
 | |
| 	);
 | |
| 
 | |
| 	// 设置线条颜色
 | |
| 	void setLineColor(
 | |
| 		Color lineColor
 | |
| 	);
 | |
| 
 | |
| 	// 设置线条宽度
 | |
| 	void setStrokeWidth(
 | |
| 		double strokeWidth
 | |
| 	);
 | |
| 
 | |
| 	// 设置样式
 | |
| 	void setStyle(int style);
 | |
| 
 | |
| 	// 渲染形状
 | |
| 	virtual void onRender() override;
 | |
| 
 | |
| protected:
 | |
| 	// 渲染轮廓
 | |
| 	virtual void _renderLine() = 0;
 | |
| 
 | |
| 	// 渲染填充色
 | |
| 	virtual void _renderFill() = 0;
 | |
| 
 | |
| protected:
 | |
| 	int		m_nStyle;
 | |
| 	float	m_fStrokeWidth;
 | |
| 	Color	m_nLineColor;
 | |
| 	Color	m_nFillColor;
 | |
| };
 | |
| 
 | |
| 
 | |
| // 矩形
 | |
| class Rect :
 | |
| 	public Shape
 | |
| {
 | |
| public:
 | |
| 	Rect();
 | |
| 
 | |
| 	Rect(
 | |
| 		double width,	/* 宽度 */
 | |
| 		double height	/* 高度 */
 | |
| 	);
 | |
| 
 | |
| 	Rect(
 | |
| 		Size size		/* 宽度和高度 */
 | |
| 	);
 | |
| 
 | |
| 	Rect(
 | |
| 		double top,		/* 左上角横坐标 */
 | |
| 		double left,	/* 左上角纵坐标 */
 | |
| 		double width,	/* 宽度 */
 | |
| 		double height	/* 高度 */
 | |
| 	);
 | |
| 
 | |
| 	Rect(
 | |
| 		Point topLeft,	/* 左上角坐标 */
 | |
| 		Size size		/* 宽度和高度 */
 | |
| 	);
 | |
| 
 | |
| 	virtual ~Rect();
 | |
| 
 | |
| protected:
 | |
| 	// 渲染轮廓
 | |
| 	virtual void _renderLine() override;
 | |
| 
 | |
| 	// 渲染填充色
 | |
| 	virtual void _renderFill() override;
 | |
| };
 | |
| 
 | |
| 
 | |
| // 圆角矩形
 | |
| class RoundRect :
 | |
| 	public Shape
 | |
| {
 | |
| public:
 | |
| 	RoundRect();
 | |
| 
 | |
| 	RoundRect(
 | |
| 		double width,	/* 宽度 */
 | |
| 		double height,	/* 高度 */
 | |
| 		double radiusX,	/* 圆角半径 */
 | |
| 		double radiusY	/* 圆角半径 */
 | |
| 	);
 | |
| 
 | |
| 	RoundRect(
 | |
| 		Size size,		/* 宽度和高度 */
 | |
| 		double radiusX,	/* 圆角半径 */
 | |
| 		double radiusY	/* 圆角半径 */
 | |
| 	);
 | |
| 
 | |
| 	RoundRect(
 | |
| 		double top,		/* 左上角横坐标 */
 | |
| 		double left,	/* 左上角纵坐标 */
 | |
| 		double width,	/* 宽度 */
 | |
| 		double height,	/* 高度 */
 | |
| 		double radiusX,	/* 圆角半径 */
 | |
| 		double radiusY	/* 圆角半径 */
 | |
| 	);
 | |
| 
 | |
| 	RoundRect(
 | |
| 		Point topLeft,	/* 左上角坐标 */
 | |
| 		Size size,		/* 宽度和高度 */
 | |
| 		double radiusX,	/* 圆角半径 */
 | |
| 		double radiusY	/* 圆角半径 */
 | |
| 	);
 | |
| 
 | |
| 	virtual ~RoundRect();
 | |
| 
 | |
| 	// 获取圆角半径
 | |
| 	double getRadiusX() const;
 | |
| 
 | |
| 	// 获取圆角半径
 | |
| 	double getRadiusY() const;
 | |
| 
 | |
| 	// 设置圆角半径
 | |
| 	virtual void setRadiusX(
 | |
| 		double radiusX
 | |
| 	);
 | |
| 
 | |
| 	// 设置圆角半径
 | |
| 	virtual void setRadiusY(
 | |
| 		double radiusY
 | |
| 	);
 | |
| 
 | |
| protected:
 | |
| 	// 渲染轮廓
 | |
| 	virtual void _renderLine() override;
 | |
| 
 | |
| 	// 渲染填充色
 | |
| 	virtual void _renderFill() override;
 | |
| 
 | |
| protected:
 | |
| 	float m_fRadiusX;
 | |
| 	float m_fRadiusY;
 | |
| };
 | |
| 
 | |
| 
 | |
| // 圆形
 | |
| class Circle :
 | |
| 	public Shape
 | |
| {
 | |
| public:
 | |
| 	Circle();
 | |
| 
 | |
| 	Circle(
 | |
| 		double radius	/* 半径 */
 | |
| 	);
 | |
| 
 | |
| 	Circle(
 | |
| 		Point center,	/* 圆心坐标 */
 | |
| 		double radius	/* 半径 */
 | |
| 	);
 | |
| 
 | |
| 	Circle(
 | |
| 		double centerX,	/* 圆心横坐标 */
 | |
| 		double centerY,	/* 圆心纵坐标 */
 | |
| 		double radius	/* 半径 */
 | |
| 	);
 | |
| 
 | |
| 	virtual ~Circle();
 | |
| 
 | |
| 	// 获取半径
 | |
| 	double getRadius() const;
 | |
| 
 | |
| 	// 设置半径
 | |
| 	virtual void setRadius(
 | |
| 		double radius
 | |
| 	);
 | |
| 
 | |
| public:
 | |
| 	// 禁用的函数
 | |
| 	void setWidth() {}
 | |
| 
 | |
| 	// 禁用的函数
 | |
| 	void setHeight() {}
 | |
| 
 | |
| 	// 禁用的函数
 | |
| 	void setSize() {}
 | |
| 
 | |
| protected:
 | |
| 	// 渲染轮廓
 | |
| 	virtual void _renderLine() override;
 | |
| 
 | |
| 	// 渲染填充色
 | |
| 	virtual void _renderFill() override;
 | |
| 
 | |
| protected:
 | |
| 	float m_fRadius;
 | |
| };
 | |
| 
 | |
| 
 | |
| // 椭圆形
 | |
| class Ellipse :
 | |
| 	public Shape
 | |
| {
 | |
| public:
 | |
| 	Ellipse();
 | |
| 
 | |
| 	Ellipse(
 | |
| 		double radiusX,	/* 横轴半径 */
 | |
| 		double radiusY	/* 纵轴半径 */
 | |
| 	);
 | |
| 
 | |
| 	Ellipse(
 | |
| 		Point center,	/* 圆心坐标 */
 | |
| 		double radiusX,	/* 横轴半径 */
 | |
| 		double radiusY	/* 纵轴半径 */
 | |
| 	);
 | |
| 
 | |
| 	Ellipse(
 | |
| 		double centerX,	/* 圆心横坐标 */
 | |
| 		double centerY,	/* 圆心纵坐标 */
 | |
| 		double radiusX,	/* 横轴半径 */
 | |
| 		double radiusY	/* 纵轴半径 */
 | |
| 	);
 | |
| 
 | |
| 	virtual ~Ellipse();
 | |
| 
 | |
| 	// 获取横轴半径
 | |
| 	double getRadiusX() const;
 | |
| 
 | |
| 	// 获取纵轴半径
 | |
| 	double getRadiusY() const;
 | |
| 
 | |
| 	// 设置横轴半径
 | |
| 	virtual void setRadiusX(
 | |
| 		double radiusX
 | |
| 	);
 | |
| 
 | |
| 	// 设置纵轴半径
 | |
| 	virtual void setRadiusY(
 | |
| 		double radiusY
 | |
| 	);
 | |
| 
 | |
| public:
 | |
| 	// 禁用的函数
 | |
| 	void setWidth() {}
 | |
| 
 | |
| 	// 禁用的函数
 | |
| 	void setHeight() {}
 | |
| 
 | |
| 	// 禁用的函数
 | |
| 	void setSize() {}
 | |
| 
 | |
| protected:
 | |
| 	// 渲染轮廓
 | |
| 	virtual void _renderLine() override;
 | |
| 
 | |
| 	// 渲染填充色
 | |
| 	virtual void _renderFill() override;
 | |
| 
 | |
| protected:
 | |
| 	float m_fRadiusX;
 | |
| 	float m_fRadiusY;
 | |
| };
 | |
| 
 | |
| } |