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
|
||||||
|
|
@ -426,7 +430,7 @@ protected:
|
||||||
bool m_bDisplayedInScene;
|
bool m_bDisplayedInScene;
|
||||||
bool m_bSortChildrenNeeded;
|
bool m_bSortChildrenNeeded;
|
||||||
bool m_bTransformNeeded;
|
bool m_bTransformNeeded;
|
||||||
Shape * m_pShape;
|
Shape * m_pShape;
|
||||||
Scene * m_pParentScene;
|
Scene * m_pParentScene;
|
||||||
Node * m_pParent;
|
Node * m_pParent;
|
||||||
D2D1::Matrix3x2F m_MatriInitial;
|
D2D1::Matrix3x2F m_MatriInitial;
|
||||||
|
|
@ -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