更新了ENode二维变换矩阵算法
This commit is contained in:
parent
489fa780ca
commit
1e24823452
|
|
@ -24,8 +24,8 @@ int WINAPI WinMain(
|
||||||
node2->setSize(40, 40);
|
node2->setSize(40, 40);
|
||||||
node->addChild(node2);
|
node->addChild(node2);
|
||||||
|
|
||||||
auto mlistener = new EMouseClickListener([](EPoint) {
|
auto mlistener = new EMouseClickListener([](EPoint p) {
|
||||||
EApp::getCurrentScene()->getChild(L"node1")->setPos(EMouseMsg::getPos());
|
EApp::getCurrentScene()->getChild(L"node1")->setPos(p.x, p.y);
|
||||||
});
|
});
|
||||||
|
|
||||||
mlistener->bindWith(node);
|
mlistener->bindWith(node);
|
||||||
|
|
|
||||||
|
|
@ -43,14 +43,12 @@ bool e2d::EApp::init(e2d::EString title, e2d::ESize size, bool bShowConsole /* =
|
||||||
{
|
{
|
||||||
return init(title, size.cx, size.cy, bShowConsole);
|
return init(title, size.cx, size.cy, bShowConsole);
|
||||||
}
|
}
|
||||||
#include <iostream>
|
|
||||||
bool e2d::EApp::init(e2d::EString title, UINT32 width, UINT32 height, bool bShowConsole /* = false */)
|
bool e2d::EApp::init(e2d::EString title, UINT32 width, UINT32 height, bool bShowConsole /* = false */)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
hr = CoInitialize(NULL);
|
CoInitialize(NULL);
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
|
||||||
{
|
|
||||||
// 关闭控制台
|
// 关闭控制台
|
||||||
if (bShowConsole)
|
if (bShowConsole)
|
||||||
{
|
{
|
||||||
|
|
@ -79,7 +77,6 @@ bool e2d::EApp::init(e2d::EString title, UINT32 width, UINT32 height, bool bShow
|
||||||
// 初始化 device-indpendent 资源
|
// 初始化 device-indpendent 资源
|
||||||
// 比如 Direct2D factory.
|
// 比如 Direct2D factory.
|
||||||
hr = _createDeviceIndependentResources();
|
hr = _createDeviceIndependentResources();
|
||||||
}
|
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
|
|
@ -194,6 +191,8 @@ void e2d::EApp::run()
|
||||||
_onControl();
|
_onControl();
|
||||||
// 释放所有内存占用
|
// 释放所有内存占用
|
||||||
free();
|
free();
|
||||||
|
|
||||||
|
CoUninitialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::EApp::_mainLoop()
|
void e2d::EApp::_mainLoop()
|
||||||
|
|
@ -262,8 +261,6 @@ void e2d::EApp::_onRender()
|
||||||
{
|
{
|
||||||
GetRenderTarget()->BeginDraw();
|
GetRenderTarget()->BeginDraw();
|
||||||
|
|
||||||
GetRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity());
|
|
||||||
|
|
||||||
GetRenderTarget()->Clear(D2D1::ColorF(m_ClearColor));
|
GetRenderTarget()->Clear(D2D1::ColorF(m_ClearColor));
|
||||||
|
|
||||||
m_pCurrentScene->_onRender(); // 绘制当前场景
|
m_pCurrentScene->_onRender(); // 绘制当前场景
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@ void e2d::EScene::_onRender()
|
||||||
{
|
{
|
||||||
this->_sortChildren();
|
this->_sortChildren();
|
||||||
|
|
||||||
|
GetRenderTarget()->SetTransform(D2D1::Matrix3x2F::Identity());
|
||||||
|
|
||||||
// 访问所有节点
|
// 访问所有节点
|
||||||
for (auto child : m_vChildren)
|
for (auto child : m_vChildren)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,18 @@
|
||||||
|
|
||||||
e2d::ENode::ENode()
|
e2d::ENode::ENode()
|
||||||
: m_nOrder(0)
|
: m_nOrder(0)
|
||||||
|
, m_fPosX(0)
|
||||||
|
, m_fPosY(0)
|
||||||
|
, m_fWidth(0)
|
||||||
|
, m_fHeight(0)
|
||||||
|
, m_fScaleX(1)
|
||||||
|
, m_fScaleY(1)
|
||||||
|
, m_fRotation(0)
|
||||||
|
, m_fSkewAngleX(0)
|
||||||
|
, m_fSkewAngleY(0)
|
||||||
|
, m_fDisplayOpacity(1)
|
||||||
|
, m_fRealOpacity(1)
|
||||||
|
, m_Matri(D2D1::Matrix3x2F::Identity())
|
||||||
, m_bVisiable(true)
|
, m_bVisiable(true)
|
||||||
, m_pParent(nullptr)
|
, m_pParent(nullptr)
|
||||||
, m_pParentScene(nullptr)
|
, m_pParentScene(nullptr)
|
||||||
|
|
@ -52,6 +64,7 @@ void e2d::ENode::callOn()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetRenderTarget()->SetTransform(m_Matri);
|
||||||
// 渲染自身
|
// 渲染自身
|
||||||
this->_onRender();
|
this->_onRender();
|
||||||
|
|
||||||
|
|
@ -61,6 +74,7 @@ void e2d::ENode::callOn()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
GetRenderTarget()->SetTransform(m_Matri);
|
||||||
// 渲染自身
|
// 渲染自身
|
||||||
this->_onRender();
|
this->_onRender();
|
||||||
}
|
}
|
||||||
|
|
@ -70,10 +84,6 @@ void e2d::ENode::_onRender()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ENode::_onTransfrom()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::_sortChildren()
|
void e2d::ENode::_sortChildren()
|
||||||
{
|
{
|
||||||
if (m_bSortNeeded)
|
if (m_bSortNeeded)
|
||||||
|
|
@ -95,15 +105,18 @@ void e2d::ENode::_transfrom()
|
||||||
{
|
{
|
||||||
if (m_bTransformNeeded)
|
if (m_bTransformNeeded)
|
||||||
{
|
{
|
||||||
// 更新自身属性
|
// ¶þά¾ØÐα任
|
||||||
|
m_Matri = D2D1::Matrix3x2F::Identity();
|
||||||
|
m_Matri = m_Matri.Translation(m_fPosX, m_fPosY);
|
||||||
|
m_Matri = m_Matri.Rotation(m_fRotation);
|
||||||
|
m_Matri = m_Matri.Scale(m_fScaleX, m_fScaleY);
|
||||||
|
m_Matri = m_Matri.Skew(m_fSkewAngleX, m_fSkewAngleY);
|
||||||
|
|
||||||
if (m_pParent)
|
if (m_pParent)
|
||||||
{
|
{
|
||||||
this->setPos(m_pParent->getX() + m_Pos.x, m_pParent->getY() + m_Pos.y);
|
//m_Matri.SetProduct()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据子节点特殊性进行更新
|
|
||||||
_onTransfrom();
|
|
||||||
|
|
||||||
// 提示子节点更新属性
|
// 提示子节点更新属性
|
||||||
for (const auto &child : m_vChildren)
|
for (const auto &child : m_vChildren)
|
||||||
{
|
{
|
||||||
|
|
@ -119,115 +132,54 @@ bool e2d::ENode::isVisiable() const
|
||||||
return m_bVisiable;
|
return m_bVisiable;
|
||||||
}
|
}
|
||||||
|
|
||||||
int e2d::ENode::getX() const
|
float e2d::ENode::getX() const
|
||||||
{
|
{
|
||||||
return m_Rect.TopLeft().x;
|
return m_fPosX;
|
||||||
}
|
}
|
||||||
|
|
||||||
int e2d::ENode::getY() const
|
float e2d::ENode::getY() const
|
||||||
{
|
{
|
||||||
return m_Rect.TopLeft().y;
|
return m_fPosY;
|
||||||
}
|
}
|
||||||
|
|
||||||
CPoint e2d::ENode::getPos() const
|
float e2d::ENode::getWidth() const
|
||||||
{
|
{
|
||||||
return m_Rect.TopLeft();
|
return m_fWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 e2d::ENode::getWidth() const
|
float e2d::ENode::getHeight() const
|
||||||
{
|
{
|
||||||
return UINT32(m_Rect.Size().cx);
|
return m_fHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 e2d::ENode::getHeight() const
|
float e2d::ENode::getScaleX() const
|
||||||
{
|
{
|
||||||
return UINT32(m_Rect.Size().cy);
|
return m_fScaleX;
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::ESize e2d::ENode::getSize() const
|
float e2d::ENode::getScaleY() const
|
||||||
{
|
{
|
||||||
return e2d::ESize(m_Rect.Size());
|
return m_fScaleY;
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::ERect e2d::ENode::getRect() const
|
float e2d::ENode::getSkewX() const
|
||||||
{
|
{
|
||||||
return e2d::ERect(m_Rect);
|
return m_fSkewAngleX;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ENode::setX(int x)
|
float e2d::ENode::getSkewY() const
|
||||||
{
|
{
|
||||||
this->setPos(x, m_Rect.TopLeft().y);
|
return m_fSkewAngleY;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ENode::setY(int y)
|
float e2d::ENode::getRotation() const
|
||||||
{
|
{
|
||||||
this->setPos(m_Rect.TopLeft().x, y);
|
return m_fRotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ENode::setPos(EPoint p)
|
float e2d::ENode::getOpacity() const
|
||||||
{
|
{
|
||||||
this->setPos(p.x, p.y);
|
return m_fDisplayOpacity;
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::setPos(int x, int y)
|
|
||||||
{
|
|
||||||
if (getX() == x && getY() == y)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!m_bTransformNeeded)
|
|
||||||
{
|
|
||||||
m_Pos.x = x;
|
|
||||||
m_Pos.y = y;
|
|
||||||
m_bTransformNeeded = true;
|
|
||||||
}
|
|
||||||
m_Rect.MoveToXY(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::move(int x, int y)
|
|
||||||
{
|
|
||||||
m_Rect.OffsetRect(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::move(EVector v)
|
|
||||||
{
|
|
||||||
m_Rect.OffsetRect(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::setWidth(UINT32 width)
|
|
||||||
{
|
|
||||||
m_Rect.BottomRight().x = m_Rect.TopLeft().x + width;
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::setHeight(UINT32 height)
|
|
||||||
{
|
|
||||||
m_Rect.BottomRight().y = m_Rect.TopLeft().y + height;
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::setSize(UINT32 width, UINT32 height)
|
|
||||||
{
|
|
||||||
m_Rect.BottomRight().x = m_Rect.TopLeft().x + width;
|
|
||||||
m_Rect.BottomRight().y = m_Rect.TopLeft().y + height;
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::setSize(ESize size)
|
|
||||||
{
|
|
||||||
this->setSize(size.cx, size.cy);
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::setRect(int x1, int y1, int x2, int y2)
|
|
||||||
{
|
|
||||||
m_Rect.SetRect(x1, y1, x2, y2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::setRect(EPoint leftTop, EPoint rightBottom)
|
|
||||||
{
|
|
||||||
m_Rect.TopLeft() = leftTop;
|
|
||||||
m_Rect.BottomRight() = rightBottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ENode::setRect(ERect rect)
|
|
||||||
{
|
|
||||||
m_Rect = rect;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int e2d::ENode::getOrder() const
|
int e2d::ENode::getOrder() const
|
||||||
|
|
@ -240,6 +192,113 @@ void e2d::ENode::setOrder(int order)
|
||||||
m_nOrder = order;
|
m_nOrder = order;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setX(float x)
|
||||||
|
{
|
||||||
|
this->setPos(x, m_fPosY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setY(float y)
|
||||||
|
{
|
||||||
|
this->setPos(m_fPosX, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setPos(float x, float y)
|
||||||
|
{
|
||||||
|
if (m_fPosX == x && m_fPosY == y)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//m_Matri.Translation(x, y);
|
||||||
|
m_fPosX = x;
|
||||||
|
m_fPosY = y;
|
||||||
|
m_bTransformNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::move(float x, float y)
|
||||||
|
{
|
||||||
|
this->setPos(m_fPosX + x, m_fPosY + y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setWidth(float width)
|
||||||
|
{
|
||||||
|
this->setSize(width, m_fHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setHeight(float height)
|
||||||
|
{
|
||||||
|
this->setSize(m_fWidth, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setSize(float width, float height)
|
||||||
|
{
|
||||||
|
if (m_fWidth == width && m_fHeight == height)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_fWidth = width;
|
||||||
|
m_fHeight = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setScaleX(float scaleX)
|
||||||
|
{
|
||||||
|
this->setScale(scaleX, m_fScaleY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setScaleY(float scaleY)
|
||||||
|
{
|
||||||
|
this->setScale(m_fScaleX, scaleY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setScale(float scale)
|
||||||
|
{
|
||||||
|
this->setScale(scale, scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setScale(float scaleX, float scaleY)
|
||||||
|
{
|
||||||
|
if (m_fScaleX == scaleX && m_fScaleY == scaleY)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//m_Matri.Scale(scaleX, scaleY);
|
||||||
|
m_fScaleX = scaleX;
|
||||||
|
m_fScaleY = scaleY;
|
||||||
|
m_bTransformNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setSkewX(float angleX)
|
||||||
|
{
|
||||||
|
this->setSkew(angleX, m_fSkewAngleY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setSkewY(float angleY)
|
||||||
|
{
|
||||||
|
this->setSkew(m_fSkewAngleX, angleY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setSkew(float angleX, float angleY)
|
||||||
|
{
|
||||||
|
if (m_fSkewAngleX == angleX && m_fSkewAngleY == angleY)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//m_Matri.Skew(angleX, angleY);
|
||||||
|
m_fSkewAngleX = angleX;
|
||||||
|
m_fSkewAngleY = angleY;
|
||||||
|
m_bTransformNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setRotation(float angle)
|
||||||
|
{
|
||||||
|
if (m_fRotation == angle)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//m_Matri.Rotation(angle);
|
||||||
|
m_fRotation = angle;
|
||||||
|
m_bTransformNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ENode::setOpacity(float opacity)
|
||||||
|
{
|
||||||
|
m_fDisplayOpacity = m_fRealOpacity = opacity;
|
||||||
|
}
|
||||||
|
|
||||||
void e2d::ENode::setParent(ENode * parent)
|
void e2d::ENode::setParent(ENode * parent)
|
||||||
{
|
{
|
||||||
if (m_pParent)
|
if (m_pParent)
|
||||||
|
|
|
||||||
|
|
@ -2,18 +2,23 @@
|
||||||
#include "..\Win\winbase.h"
|
#include "..\Win\winbase.h"
|
||||||
|
|
||||||
|
|
||||||
|
e2d::ERectangle::ERectangle()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
e2d::EColor::Enum e2d::ERectangle::getColor() const
|
||||||
|
{
|
||||||
|
return m_Color;
|
||||||
|
}
|
||||||
|
|
||||||
|
void e2d::ERectangle::setColor(EColor::Enum color)
|
||||||
|
{
|
||||||
|
m_Color = color;
|
||||||
|
}
|
||||||
|
|
||||||
void e2d::ERectangle::_onRender()
|
void e2d::ERectangle::_onRender()
|
||||||
{
|
{
|
||||||
static D2D1_RECT_F rectangle = D2D1::RectF(
|
D2D1_RECT_F rectangle = D2D1::RectF(0, 0, m_fWidth, m_fHeight);
|
||||||
m_Rect.left,
|
GetSolidColorBrush()->SetColor(D2D1::ColorF(m_Color, m_fDisplayOpacity));
|
||||||
m_Rect.top,
|
GetRenderTarget()->FillRectangle(&rectangle, GetSolidColorBrush());
|
||||||
m_Rect.right,
|
|
||||||
m_Rect.bottom
|
|
||||||
);
|
|
||||||
GetRenderTarget()->FillRectangle(&rectangle, GetSolidColorBrush(D2D1::ColorF(D2D1::ColorF::LightSlateGray)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void e2d::ERectangle::_onTransfrom()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "..\emacros.h"
|
|
||||||
|
|
||||||
HWND hwnd = nullptr;
|
HWND hwnd = nullptr;
|
||||||
ID2D1Factory * pDirect2dFactory = nullptr;
|
ID2D1Factory * pDirect2dFactory = nullptr;
|
||||||
|
|
@ -22,9 +21,12 @@ ID2D1HwndRenderTarget * &GetRenderTarget()
|
||||||
return pRenderTarget;
|
return pRenderTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
ID2D1SolidColorBrush *& GetSolidColorBrush(D2D1_COLOR_F & color)
|
ID2D1SolidColorBrush *& GetSolidColorBrush()
|
||||||
{
|
{
|
||||||
pRenderTarget->CreateSolidColorBrush(color, &m_pSolidBrush);
|
if (!m_pSolidBrush)
|
||||||
|
{
|
||||||
|
pRenderTarget->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::White), &m_pSolidBrush);
|
||||||
|
}
|
||||||
return m_pSolidBrush;
|
return m_pSolidBrush;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@
|
||||||
#include <dwrite.h>
|
#include <dwrite.h>
|
||||||
#include <wincodec.h>
|
#include <wincodec.h>
|
||||||
#pragma comment(lib, "d2d1.lib")
|
#pragma comment(lib, "d2d1.lib")
|
||||||
|
#pragma comment(lib, "dwrite.lib")
|
||||||
|
//#pragma comment(lib, "wincodec.lib")
|
||||||
|
|
||||||
HWND &GetHWnd();
|
HWND &GetHWnd();
|
||||||
|
|
||||||
|
|
@ -12,7 +14,7 @@ ID2D1Factory * &GetFactory();
|
||||||
|
|
||||||
ID2D1HwndRenderTarget * &GetRenderTarget();
|
ID2D1HwndRenderTarget * &GetRenderTarget();
|
||||||
|
|
||||||
ID2D1SolidColorBrush * &GetSolidColorBrush(D2D1_COLOR_F &color);
|
ID2D1SolidColorBrush * &GetSolidColorBrush();
|
||||||
|
|
||||||
|
|
||||||
template<class Interface>
|
template<class Interface>
|
||||||
|
|
|
||||||
160
Easy2D/enodes.h
160
Easy2D/enodes.h
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "ebase.h"
|
#include "ebase.h"
|
||||||
|
#include "Win\winbase.h"
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
|
|
@ -23,25 +24,34 @@ public:
|
||||||
virtual int getOrder() const;
|
virtual int getOrder() const;
|
||||||
|
|
||||||
// 获取节点横坐标
|
// 获取节点横坐标
|
||||||
virtual int getX() const;
|
virtual float getX() const;
|
||||||
|
|
||||||
// 获取节点纵坐标
|
// 获取节点纵坐标
|
||||||
virtual int getY() const;
|
virtual float getY() const;
|
||||||
|
|
||||||
// 获取节点坐标
|
|
||||||
virtual EPoint getPos() const;
|
|
||||||
|
|
||||||
// 获取节点宽度
|
// 获取节点宽度
|
||||||
virtual UINT32 getWidth() const;
|
virtual float getWidth() const;
|
||||||
|
|
||||||
// 获取节点高度
|
// 获取节点高度
|
||||||
virtual UINT32 getHeight() const;
|
virtual float getHeight() const;
|
||||||
|
|
||||||
// 获取节点大小
|
// 获取节点横向缩放倍数
|
||||||
virtual ESize getSize() const;
|
virtual float getScaleX() const;
|
||||||
|
|
||||||
// 获取节点所在的矩形
|
// 获取节点纵向缩放倍数
|
||||||
virtual ERect getRect() const;
|
virtual float getScaleY() const;
|
||||||
|
|
||||||
|
// 获取节点横向倾斜角度
|
||||||
|
virtual float getSkewX() const;
|
||||||
|
|
||||||
|
// 获取节点纵向倾斜角度
|
||||||
|
virtual float getSkewY() const;
|
||||||
|
|
||||||
|
// 获取节点旋转角度
|
||||||
|
virtual float getRotation() const;
|
||||||
|
|
||||||
|
// 获取节点透明度
|
||||||
|
virtual float getOpacity() const;
|
||||||
|
|
||||||
// 获取父节点
|
// 获取父节点
|
||||||
virtual ENode * getParent() const;
|
virtual ENode * getParent() const;
|
||||||
|
|
@ -78,74 +88,40 @@ public:
|
||||||
|
|
||||||
// 设置节点横坐标
|
// 设置节点横坐标
|
||||||
virtual void setX(
|
virtual void setX(
|
||||||
int x
|
float x
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置节点纵坐标
|
// 设置节点纵坐标
|
||||||
virtual void setY(
|
virtual void setY(
|
||||||
int y
|
float y
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置节点坐标
|
// 设置节点坐标
|
||||||
virtual void setPos(
|
virtual void setPos(
|
||||||
int x,
|
float x,
|
||||||
int y
|
float y
|
||||||
);
|
|
||||||
|
|
||||||
// 设置节点坐标
|
|
||||||
virtual void setPos(
|
|
||||||
EPoint p
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// 移动节点
|
// 移动节点
|
||||||
virtual void move(
|
virtual void move(
|
||||||
int x,
|
float x,
|
||||||
int y
|
float y
|
||||||
);
|
|
||||||
|
|
||||||
// 移动节点
|
|
||||||
virtual void move(
|
|
||||||
EVector v
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置节点宽度
|
// 设置节点宽度
|
||||||
virtual void setWidth(
|
virtual void setWidth(
|
||||||
UINT32 width
|
float width
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置节点高度
|
// 设置节点高度
|
||||||
virtual void setHeight(
|
virtual void setHeight(
|
||||||
UINT32 height
|
float height
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置节点大小
|
// 设置节点大小
|
||||||
virtual void setSize(
|
virtual void setSize(
|
||||||
UINT32 width,
|
float width,
|
||||||
UINT32 height
|
float height
|
||||||
);
|
|
||||||
|
|
||||||
// 设置节点大小
|
|
||||||
virtual void setSize(
|
|
||||||
ESize size
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置节点所在的矩形
|
|
||||||
virtual void setRect(
|
|
||||||
int x1,
|
|
||||||
int y1,
|
|
||||||
int x2,
|
|
||||||
int y2
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置节点所在的矩形
|
|
||||||
virtual void setRect(
|
|
||||||
EPoint leftTop,
|
|
||||||
EPoint rightBottom
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置节点所在的矩形
|
|
||||||
virtual void setRect(
|
|
||||||
ERect rect
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置节点绘图顺序
|
// 设置节点绘图顺序
|
||||||
|
|
@ -153,6 +129,53 @@ public:
|
||||||
int order
|
int order
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 设置横向缩放
|
||||||
|
virtual void setScaleX(
|
||||||
|
float scaleX
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置纵向缩放
|
||||||
|
virtual void setScaleY(
|
||||||
|
float scaleY
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置缩放
|
||||||
|
virtual void setScale(
|
||||||
|
float scaleX,
|
||||||
|
float scaleY
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置缩放
|
||||||
|
virtual void setScale(
|
||||||
|
float scale
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置横向倾斜角度
|
||||||
|
virtual void setSkewX(
|
||||||
|
float angleX
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置纵向倾斜角度
|
||||||
|
virtual void setSkewY(
|
||||||
|
float angleY
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置倾斜角度
|
||||||
|
virtual void setSkew(
|
||||||
|
float angleX,
|
||||||
|
float angleY
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置旋转角度
|
||||||
|
virtual void setRotation(
|
||||||
|
float rotation
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置透明度
|
||||||
|
virtual void setOpacity(
|
||||||
|
float opacity
|
||||||
|
);
|
||||||
|
|
||||||
// 设置节点所在场景
|
// 设置节点所在场景
|
||||||
virtual void setParentScene(
|
virtual void setParentScene(
|
||||||
EScene * scene
|
EScene * scene
|
||||||
|
|
@ -193,9 +216,6 @@ protected:
|
||||||
// 渲染节点
|
// 渲染节点
|
||||||
virtual void _onRender();
|
virtual void _onRender();
|
||||||
|
|
||||||
// 节点状态转换
|
|
||||||
virtual void _onTransfrom();
|
|
||||||
|
|
||||||
// 子节点排序
|
// 子节点排序
|
||||||
void _sortChildren();
|
void _sortChildren();
|
||||||
|
|
||||||
|
|
@ -205,12 +225,22 @@ protected:
|
||||||
protected:
|
protected:
|
||||||
EString m_sName;
|
EString m_sName;
|
||||||
size_t m_nHashName;
|
size_t m_nHashName;
|
||||||
|
float m_fPosX;
|
||||||
|
float m_fPosY;
|
||||||
|
float m_fWidth;
|
||||||
|
float m_fHeight;
|
||||||
|
float m_fScaleX;
|
||||||
|
float m_fScaleY;
|
||||||
|
float m_fRotation;
|
||||||
|
float m_fSkewAngleX;
|
||||||
|
float m_fSkewAngleY;
|
||||||
|
float m_fDisplayOpacity;
|
||||||
|
float m_fRealOpacity;
|
||||||
|
D2D1::Matrix3x2F m_Matri;
|
||||||
int m_nOrder;
|
int m_nOrder;
|
||||||
bool m_bVisiable;
|
bool m_bVisiable;
|
||||||
bool m_bSortNeeded;
|
bool m_bSortNeeded;
|
||||||
bool m_bTransformNeeded;
|
bool m_bTransformNeeded;
|
||||||
ERect m_Rect;
|
|
||||||
EPoint m_Pos;
|
|
||||||
EScene * m_pParentScene;
|
EScene * m_pParentScene;
|
||||||
ENode * m_pParent;
|
ENode * m_pParent;
|
||||||
std::vector<ENode*> m_vChildren;
|
std::vector<ENode*> m_vChildren;
|
||||||
|
|
@ -220,10 +250,18 @@ protected:
|
||||||
class ERectangle :
|
class ERectangle :
|
||||||
public ENode
|
public ENode
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
ERectangle();
|
||||||
|
|
||||||
|
EColor::Enum getColor() const;
|
||||||
|
|
||||||
|
void setColor(EColor::Enum color);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void _onRender() override;
|
virtual void _onRender() override;
|
||||||
|
|
||||||
virtual void _onTransfrom() override;
|
protected:
|
||||||
|
EColor::Enum m_Color;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue