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()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-28 18:44:37 +08:00
|
|
|
void e2d::Shape::onRender() const
|
2018-04-02 23:01:38 +08:00
|
|
|
{
|
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-07-29 02:24:34 +08:00
|
|
|
pBrush->SetColor((D2D1_COLOR_F)_fillColor);
|
2018-04-02 23:01:38 +08:00
|
|
|
this->_renderFill();
|
|
|
|
|
|
2018-07-29 02:24:34 +08:00
|
|
|
pBrush->SetColor((D2D1_COLOR_F)_lineColor);
|
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-07-29 02:24:34 +08:00
|
|
|
pBrush->SetColor((D2D1_COLOR_F)_lineColor);
|
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-07-29 02:24:34 +08:00
|
|
|
pBrush->SetColor((D2D1_COLOR_F)_fillColor);
|
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
|
|
|
}
|
|
|
|
|
|
2018-07-28 20:06:27 +08:00
|
|
|
float e2d::Shape::getStrokeWidth() const
|
2018-04-02 23:01:38 +08:00
|
|
|
{
|
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
|
|
|
}
|
|
|
|
|
|
2018-07-28 20:06:27 +08:00
|
|
|
void e2d::Shape::setStrokeWidth(float strokeWidth)
|
2018-04-02 23:01:38 +08:00
|
|
|
{
|
2018-07-28 20:06:27 +08:00
|
|
|
_strokeWidth = 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;
|
|
|
|
|
}
|
|
|
|
|
}
|