| 
									
										
										
										
											2018-04-21 21:24:46 +08:00
										 |  |  | #include "..\..\e2dshape.h"
 | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | e2d::Shape::Shape() | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  | 	: _style(Style::Solid) | 
					
						
							| 
									
										
										
										
											2018-05-24 20:10:11 +08:00
										 |  |  | 	, _fillColor(0x6090A0U) | 
					
						
							|  |  |  | 	, _lineColor(0x78B7D0U) | 
					
						
							|  |  |  | 	, _strokeWidth(2) | 
					
						
							|  |  |  | 	, _strokeStyle(nullptr) | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e2d::Shape::~Shape() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void e2d::Shape::onRender() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-07-03 18:16:26 +08:00
										 |  |  | 	auto pBrush = Renderer::getInstance()->getSolidColorBrush(); | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	pBrush->SetOpacity(_displayOpacity); | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	switch (_style) | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  | 	case Style::Fill: | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  | 		pBrush->SetColor(_fillColor.toD2DColorF()); | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 		this->_renderFill(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  | 		pBrush->SetColor(_lineColor.toD2DColorF()); | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 		this->_renderLine(); | 
					
						
							|  |  |  | 		break; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  | 	case Style::Round: | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  | 		pBrush->SetColor(_lineColor.toD2DColorF()); | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 		this->_renderLine(); | 
					
						
							|  |  |  | 		break; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  | 	case Style::Solid: | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  | 		pBrush->SetColor(_fillColor.toD2DColorF()); | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | 		this->_renderFill(); | 
					
						
							|  |  |  | 		break; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	default: | 
					
						
							|  |  |  | 		break; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  | e2d::Color e2d::Shape::getFillColor() const | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	return _fillColor; | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  | e2d::Color e2d::Shape::getLineColor() const | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	return _lineColor; | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | double e2d::Shape::getStrokeWidth() const | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	return _strokeWidth; | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  | e2d::Shape::Style e2d::Shape::getStyle() const | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	return _style; | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  | void e2d::Shape::setFillColor(Color fillColor) | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	_fillColor = fillColor; | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-22 13:15:57 +08:00
										 |  |  | void e2d::Shape::setLineColor(Color lineColor) | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	_lineColor = lineColor; | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void e2d::Shape::setStrokeWidth(double strokeWidth) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-24 20:10:11 +08:00
										 |  |  | 	_strokeWidth = float(strokeWidth) * 2; | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-17 15:22:14 +08:00
										 |  |  | void e2d::Shape::setStyle(Style style) | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	_style = style; | 
					
						
							| 
									
										
										
										
											2018-04-02 23:01:38 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2018-05-24 20:10:11 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | void e2d::Shape::setLineJoin(LineJoin lineJoin) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	switch (lineJoin) | 
					
						
							|  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  | 	case LineJoin::Miter: | 
					
						
							| 
									
										
										
										
											2018-07-03 18:16:26 +08:00
										 |  |  | 		_strokeStyle = Renderer::getMiterStrokeStyle(); | 
					
						
							| 
									
										
										
										
											2018-05-24 20:10:11 +08:00
										 |  |  | 		break; | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  | 	case LineJoin::Bevel: | 
					
						
							| 
									
										
										
										
											2018-07-03 18:16:26 +08:00
										 |  |  | 		_strokeStyle = Renderer::getBevelStrokeStyle(); | 
					
						
							| 
									
										
										
										
											2018-05-24 20:10:11 +08:00
										 |  |  | 		break; | 
					
						
							| 
									
										
										
										
											2018-05-24 20:37:34 +08:00
										 |  |  | 	case LineJoin::Round: | 
					
						
							| 
									
										
										
										
											2018-07-03 18:16:26 +08:00
										 |  |  | 		_strokeStyle = Renderer::getRoundStrokeStyle(); | 
					
						
							| 
									
										
										
										
											2018-05-24 20:10:11 +08:00
										 |  |  | 		break; | 
					
						
							|  |  |  | 	default: | 
					
						
							|  |  |  | 		_strokeStyle = nullptr; | 
					
						
							|  |  |  | 		break; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |