锚点名称改为支点;修复了部分bug。
This commit is contained in:
parent
55e1846d68
commit
109a86e19f
|
|
@ -6,20 +6,19 @@ int main()
|
||||||
|
|
||||||
if (app.init(L"Easy2D Demo", 640, 640))
|
if (app.init(L"Easy2D Demo", 640, 640))
|
||||||
{
|
{
|
||||||
|
app.showConsole();
|
||||||
auto scene = new EScene();
|
auto scene = new EScene();
|
||||||
|
|
||||||
auto sprite = new ESprite(L"test2.png");
|
auto sprite = new ESprite(L"haha.png");
|
||||||
sprite->setAnchor(-1, 0);
|
|
||||||
// 获取窗口宽度
|
// 获取窗口宽度
|
||||||
float width = EApp::getWidth();
|
float width = EApp::getWidth();
|
||||||
// 获取窗口高度
|
// 获取窗口高度
|
||||||
float height = EApp::getHeight();
|
float height = EApp::getHeight();
|
||||||
// 移动精灵的位置
|
// 移动精灵的位置
|
||||||
sprite->setPos(width / 2, height / 2);
|
sprite->setPos(width / 2 + sprite->getWidth(), height / 2);
|
||||||
//sprite->setAnchor(0, 0);
|
|
||||||
scene->add(sprite);
|
scene->add(sprite);
|
||||||
|
|
||||||
sprite->runAction(new EActionLoop(new EActionRotateBy(1, 60)));
|
scene->getRoot()->runAction(new EActionLoop(new EActionRotateBy(1, 60)));
|
||||||
|
|
||||||
app.enterScene(scene);
|
app.enterScene(scene);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ int WINAPI WinMain(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EApp app;
|
EApp app;
|
||||||
|
|
||||||
if (app.init(L"Easy2D Demo", 640, 480))
|
if (app.init(L"Easy2D Demo", 640, 480))
|
||||||
{
|
{
|
||||||
float w = EApp::getWidth();
|
float w = EApp::getWidth();
|
||||||
|
|
@ -21,7 +20,6 @@ int WINAPI WinMain(
|
||||||
//text->setWordWrapping(true);
|
//text->setWordWrapping(true);
|
||||||
//text->setWordWrappingWidth(130);
|
//text->setWordWrappingWidth(130);
|
||||||
text->setRotation(40);
|
text->setRotation(40);
|
||||||
text->setAnchor(0.5f, 0.5f);
|
|
||||||
//text->runAction(new EActionLoop(new EActionTwo(new EActionFadeOut(1), new EActionFadeIn(1))));
|
//text->runAction(new EActionLoop(new EActionTwo(new EActionFadeOut(1), new EActionFadeIn(1))));
|
||||||
scene->add(text);
|
scene->add(text);
|
||||||
|
|
||||||
|
|
@ -41,14 +39,14 @@ int WINAPI WinMain(
|
||||||
animation->addFrame(new ESpriteFrame(L"atlas.png", 61, 982, 34, 24));
|
animation->addFrame(new ESpriteFrame(L"atlas.png", 61, 982, 34, 24));
|
||||||
animation->addFrame(new ESpriteFrame(L"atlas.png", 117, 982, 34, 24));
|
animation->addFrame(new ESpriteFrame(L"atlas.png", 117, 982, 34, 24));
|
||||||
bird->runAction(new EActionLoop(animation));
|
bird->runAction(new EActionLoop(animation));
|
||||||
bird->setAnchor(0.5f, 0.5f);
|
bird->setPivot(0.5f, 0.5f);
|
||||||
bird->setPos(EApp::getWidth() / 2, EApp::getHeight() / 2);
|
bird->setPos(EApp::getWidth() / 2, EApp::getHeight() / 2);
|
||||||
scene2->add(bird);
|
scene2->add(bird);
|
||||||
|
|
||||||
auto btnStart = new ESprite(L"atlas.png", 702, 234, 116, 70);
|
auto btnStart = new ESprite(L"atlas.png", 702, 234, 116, 70);
|
||||||
btnStart->setAnchor(0.5f, 0.5f);
|
btnStart->setPivot(0.5f, 0.5f);
|
||||||
auto btnStartSelected = new ESprite(L"atlas.png", 702, 234, 116, 70);
|
auto btnStartSelected = new ESprite(L"atlas.png", 702, 234, 116, 70);
|
||||||
btnStartSelected->setAnchor(0.5f, 0.5f);
|
btnStartSelected->setPivot(0.5f, 0.5f);
|
||||||
btnStartSelected->setPosY(5);
|
btnStartSelected->setPosY(5);
|
||||||
auto button = new EButton(btnStart, btnStartSelected, [=] {
|
auto button = new EButton(btnStart, btnStartSelected, [=] {
|
||||||
if (EApp::isPaused())
|
if (EApp::isPaused())
|
||||||
|
|
|
||||||
|
|
@ -208,10 +208,12 @@
|
||||||
<ClCompile Include="Action\EActionTwoAtSameTime.cpp" />
|
<ClCompile Include="Action\EActionTwoAtSameTime.cpp" />
|
||||||
<ClCompile Include="Action\EActionGradual.cpp" />
|
<ClCompile Include="Action\EActionGradual.cpp" />
|
||||||
<ClCompile Include="Base\EApp.cpp" />
|
<ClCompile Include="Base\EApp.cpp" />
|
||||||
<ClCompile Include="Base\EObject.cpp" />
|
|
||||||
<ClCompile Include="Base\EScene.cpp" />
|
<ClCompile Include="Base\EScene.cpp" />
|
||||||
|
<ClCompile Include="Common\EFont.cpp" />
|
||||||
<ClCompile Include="Common\EKeyboardMsg.cpp" />
|
<ClCompile Include="Common\EKeyboardMsg.cpp" />
|
||||||
<ClCompile Include="Common\EMouseMsg.cpp" />
|
<ClCompile Include="Common\EMouseMsg.cpp" />
|
||||||
|
<ClCompile Include="Common\EObject.cpp" />
|
||||||
|
<ClCompile Include="Common\ETexture.cpp" />
|
||||||
<ClCompile Include="Geometry\ECircle.cpp" />
|
<ClCompile Include="Geometry\ECircle.cpp" />
|
||||||
<ClCompile Include="Geometry\EEllipse.cpp" />
|
<ClCompile Include="Geometry\EEllipse.cpp" />
|
||||||
<ClCompile Include="Geometry\EGeometry.cpp" />
|
<ClCompile Include="Geometry\EGeometry.cpp" />
|
||||||
|
|
@ -237,8 +239,6 @@
|
||||||
<ClCompile Include="Node\ESprite.cpp" />
|
<ClCompile Include="Node\ESprite.cpp" />
|
||||||
<ClCompile Include="Node\ESpriteFrame.cpp" />
|
<ClCompile Include="Node\ESpriteFrame.cpp" />
|
||||||
<ClCompile Include="Node\EText.cpp" />
|
<ClCompile Include="Node\EText.cpp" />
|
||||||
<ClCompile Include="Node\EFont.cpp" />
|
|
||||||
<ClCompile Include="Node\ETexture.cpp" />
|
|
||||||
<ClCompile Include="Tool\EFileUtils.cpp" />
|
<ClCompile Include="Tool\EFileUtils.cpp" />
|
||||||
<ClCompile Include="Tool\EMusicUtils.cpp" />
|
<ClCompile Include="Tool\EMusicUtils.cpp" />
|
||||||
<ClCompile Include="Tool\ERandom.cpp" />
|
<ClCompile Include="Tool\ERandom.cpp" />
|
||||||
|
|
@ -262,6 +262,7 @@
|
||||||
<ClInclude Include="enodes.h" />
|
<ClInclude Include="enodes.h" />
|
||||||
<ClInclude Include="etools.h" />
|
<ClInclude Include="etools.h" />
|
||||||
<ClInclude Include="etransitions.h" />
|
<ClInclude Include="etransitions.h" />
|
||||||
|
<ClInclude Include="etypedef.h" />
|
||||||
<ClInclude Include="Win\winbase.h" />
|
<ClInclude Include="Win\winbase.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,6 @@
|
||||||
<ClCompile Include="Win\winbase.cpp">
|
<ClCompile Include="Win\winbase.cpp">
|
||||||
<Filter>Win</Filter>
|
<Filter>Win</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Base\EObject.cpp">
|
|
||||||
<Filter>Base</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Base\EApp.cpp">
|
<ClCompile Include="Base\EApp.cpp">
|
||||||
<Filter>Base</Filter>
|
<Filter>Base</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -54,12 +51,6 @@
|
||||||
<ClCompile Include="Node\EText.cpp">
|
<ClCompile Include="Node\EText.cpp">
|
||||||
<Filter>Node</Filter>
|
<Filter>Node</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Node\EFont.cpp">
|
|
||||||
<Filter>Node</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Node\ETexture.cpp">
|
|
||||||
<Filter>Node</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Action\EAction.cpp">
|
<ClCompile Include="Action\EAction.cpp">
|
||||||
<Filter>Action</Filter>
|
<Filter>Action</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -210,6 +201,15 @@
|
||||||
<ClCompile Include="Listener\EListenerPhysicsContact.cpp">
|
<ClCompile Include="Listener\EListenerPhysicsContact.cpp">
|
||||||
<Filter>Listener</Filter>
|
<Filter>Listener</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Common\EFont.cpp">
|
||||||
|
<Filter>Common</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Common\EObject.cpp">
|
||||||
|
<Filter>Common</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Common\ETexture.cpp">
|
||||||
|
<Filter>Common</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Win\winbase.h">
|
<ClInclude Include="Win\winbase.h">
|
||||||
|
|
@ -226,5 +226,6 @@
|
||||||
<ClInclude Include="egeometry.h" />
|
<ClInclude Include="egeometry.h" />
|
||||||
<ClInclude Include="elisteners.h" />
|
<ClInclude Include="elisteners.h" />
|
||||||
<ClInclude Include="emanagers.h" />
|
<ClInclude Include="emanagers.h" />
|
||||||
|
<ClInclude Include="etypedef.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -15,8 +15,8 @@ e2d::ENode::ENode()
|
||||||
, m_fSkewAngleY(0)
|
, m_fSkewAngleY(0)
|
||||||
, m_fDisplayOpacity(1.0f)
|
, m_fDisplayOpacity(1.0f)
|
||||||
, m_fRealOpacity(1.0f)
|
, m_fRealOpacity(1.0f)
|
||||||
, m_fAnchorX(0.5f)
|
, m_fPivotX(0.5f)
|
||||||
, m_fAnchorY(0.5f)
|
, m_fPivotY(0.5f)
|
||||||
, m_Matri(D2D1::Matrix3x2F::Identity())
|
, m_Matri(D2D1::Matrix3x2F::Identity())
|
||||||
, m_bVisiable(true)
|
, m_bVisiable(true)
|
||||||
, m_bDisplayedInScene(false)
|
, m_bDisplayedInScene(false)
|
||||||
|
|
@ -172,27 +172,27 @@ void e2d::ENode::_sortChildren()
|
||||||
void e2d::ENode::_updateTransformToReal()
|
void e2d::ENode::_updateTransformToReal()
|
||||||
{
|
{
|
||||||
// 计算锚点坐标
|
// 计算锚点坐标
|
||||||
D2D1_POINT_2F anchorPos = D2D1::Point2F(
|
D2D1_POINT_2F pivot = D2D1::Point2F(
|
||||||
getRealWidth() * m_fAnchorX,
|
getRealWidth() * m_fPivotX,
|
||||||
getRealHeight() * m_fAnchorY
|
getRealHeight() * m_fPivotY
|
||||||
);
|
);
|
||||||
// 计算左上角坐标
|
// 计算左上角坐标
|
||||||
D2D1_POINT_2F upperLeftCorner = D2D1::Point2F(
|
D2D1_POINT_2F upperLeftCorner = D2D1::Point2F(
|
||||||
m_Pos.x - getRealWidth() * m_fAnchorX,
|
m_Pos.x - getRealWidth() * m_fPivotX,
|
||||||
m_Pos.y - getRealHeight() * m_fAnchorY
|
m_Pos.y - getRealHeight() * m_fPivotY
|
||||||
);
|
);
|
||||||
// 二维矩形变换
|
// 二维矩形变换
|
||||||
m_Matri = D2D1::Matrix3x2F::Scale(
|
m_Matri = D2D1::Matrix3x2F::Scale(
|
||||||
m_fScaleX,
|
m_fScaleX,
|
||||||
m_fScaleY,
|
m_fScaleY,
|
||||||
anchorPos
|
pivot
|
||||||
) * D2D1::Matrix3x2F::Skew(
|
) * D2D1::Matrix3x2F::Skew(
|
||||||
m_fSkewAngleX,
|
m_fSkewAngleX,
|
||||||
m_fSkewAngleY,
|
m_fSkewAngleY,
|
||||||
anchorPos
|
pivot
|
||||||
) * D2D1::Matrix3x2F::Rotation(
|
) * D2D1::Matrix3x2F::Rotation(
|
||||||
m_fRotation,
|
m_fRotation,
|
||||||
anchorPos
|
pivot
|
||||||
) * D2D1::Matrix3x2F::Translation(
|
) * D2D1::Matrix3x2F::Translation(
|
||||||
upperLeftCorner.x,
|
upperLeftCorner.x,
|
||||||
upperLeftCorner.y
|
upperLeftCorner.y
|
||||||
|
|
@ -299,14 +299,14 @@ e2d::ESize e2d::ENode::getRealSize() const
|
||||||
return m_Size;
|
return m_Size;
|
||||||
}
|
}
|
||||||
|
|
||||||
float e2d::ENode::getAnchorX() const
|
float e2d::ENode::getPivotX() const
|
||||||
{
|
{
|
||||||
return m_fAnchorX;
|
return m_fPivotX;
|
||||||
}
|
}
|
||||||
|
|
||||||
float e2d::ENode::getAnchorY() const
|
float e2d::ENode::getPivotY() const
|
||||||
{
|
{
|
||||||
return m_fAnchorY;
|
return m_fPivotY;
|
||||||
}
|
}
|
||||||
|
|
||||||
e2d::ESize e2d::ENode::getSize() const
|
e2d::ESize e2d::ENode::getSize() const
|
||||||
|
|
@ -488,23 +488,23 @@ void e2d::ENode::setOpacity(float opacity)
|
||||||
_updateOpacity(this);
|
_updateOpacity(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ENode::setAnchorX(float anchorX)
|
void e2d::ENode::setPivotX(float pivotX)
|
||||||
{
|
{
|
||||||
this->setAnchor(anchorX, m_fAnchorY);
|
this->setPivot(pivotX, m_fPivotY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ENode::setAnchorY(float anchorY)
|
void e2d::ENode::setPivotY(float pivotY)
|
||||||
{
|
{
|
||||||
this->setAnchor(m_fAnchorX, anchorY);
|
this->setPivot(m_fPivotX, pivotY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void e2d::ENode::setAnchor(float anchorX, float anchorY)
|
void e2d::ENode::setPivot(float pivotX, float pivotY)
|
||||||
{
|
{
|
||||||
if (m_fAnchorX == anchorX && m_fAnchorY == anchorY)
|
if (m_fPivotX == pivotX && m_fPivotY == pivotY)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_fAnchorX = anchorX;
|
m_fPivotX = min(max(pivotX, 0), 1);
|
||||||
m_fAnchorY = anchorY;
|
m_fPivotY = min(max(pivotY, 0), 1);
|
||||||
m_bTransformChildrenNeeded = true;
|
m_bTransformChildrenNeeded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "emacros.h"
|
#include "emacros.h"
|
||||||
|
#include "etypedef.h"
|
||||||
#include "ecommon.h"
|
#include "ecommon.h"
|
||||||
#include "ebase.h"
|
#include "ebase.h"
|
||||||
#include "emanagers.h"
|
#include "emanagers.h"
|
||||||
|
|
|
||||||
|
|
@ -192,27 +192,6 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class EObject
|
|
||||||
{
|
|
||||||
friend EObjectManager;
|
|
||||||
|
|
||||||
public:
|
|
||||||
EObject();
|
|
||||||
|
|
||||||
virtual ~EObject();
|
|
||||||
|
|
||||||
// 引用计数加一
|
|
||||||
void retain();
|
|
||||||
|
|
||||||
// 引用计数减一
|
|
||||||
void release();
|
|
||||||
|
|
||||||
private:
|
|
||||||
int m_nRefCount;
|
|
||||||
bool m_bManaged;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class EScene :
|
class EScene :
|
||||||
public EObject
|
public EObject
|
||||||
{
|
{
|
||||||
|
|
|
||||||
280
Easy2D/ecommon.h
280
Easy2D/ecommon.h
|
|
@ -1,115 +1,10 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <Windows.h>
|
#include "emacros.h"
|
||||||
#include <string>
|
#include "etypedef.h"
|
||||||
#include <vector>
|
|
||||||
#include <functional>
|
|
||||||
|
|
||||||
namespace e2d
|
namespace e2d
|
||||||
{
|
{
|
||||||
|
|
||||||
struct EWindowStyle
|
|
||||||
{
|
|
||||||
LPCTSTR m_pIconID; /* 程序图标 ID */
|
|
||||||
bool m_bNoClose; /* 禁用关闭按钮 */
|
|
||||||
bool m_bNoMiniSize; /* 禁用最小化按钮 */
|
|
||||||
bool m_bTopMost; /* 窗口置顶 */
|
|
||||||
|
|
||||||
EWindowStyle()
|
|
||||||
{
|
|
||||||
m_pIconID = 0;
|
|
||||||
m_bNoClose = false;
|
|
||||||
m_bNoMiniSize = false;
|
|
||||||
m_bTopMost = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
EWindowStyle(
|
|
||||||
LPCTSTR pIconID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
m_pIconID = pIconID;
|
|
||||||
m_bNoClose = false;
|
|
||||||
m_bNoMiniSize = false;
|
|
||||||
m_bTopMost = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
EWindowStyle(
|
|
||||||
LPCTSTR pIconID,
|
|
||||||
bool bNoClose,
|
|
||||||
bool bNoMiniSize,
|
|
||||||
bool bTopMost
|
|
||||||
)
|
|
||||||
{
|
|
||||||
m_pIconID = pIconID;
|
|
||||||
m_bNoClose = bNoClose;
|
|
||||||
m_bNoMiniSize = bNoMiniSize;
|
|
||||||
m_bTopMost = bTopMost;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct EPoint
|
|
||||||
{
|
|
||||||
float x;
|
|
||||||
float y;
|
|
||||||
|
|
||||||
EPoint()
|
|
||||||
{
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EPoint(float x, float y)
|
|
||||||
{
|
|
||||||
this->x = x;
|
|
||||||
this->y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
EPoint operator + (EPoint const & p)
|
|
||||||
{
|
|
||||||
return EPoint(x + p.x, y + p.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
EPoint operator - (EPoint const & p)
|
|
||||||
{
|
|
||||||
return EPoint(x - p.x, y - p.y);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef EPoint EVec;
|
|
||||||
|
|
||||||
struct ESize
|
|
||||||
{
|
|
||||||
float width;
|
|
||||||
float height;
|
|
||||||
|
|
||||||
ESize()
|
|
||||||
{
|
|
||||||
width = 0;
|
|
||||||
height = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ESize(float width, float height)
|
|
||||||
{
|
|
||||||
this->width = width;
|
|
||||||
this->height = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
ESize operator + (ESize const & size)
|
|
||||||
{
|
|
||||||
return ESize(width + size.width, height + size.height);
|
|
||||||
}
|
|
||||||
|
|
||||||
ESize operator - (ESize const & size)
|
|
||||||
{
|
|
||||||
return ESize(width - size.width, height - size.height);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef std::wstring EString;
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
using EVector = std::vector<T>;
|
|
||||||
|
|
||||||
|
|
||||||
class EColor
|
class EColor
|
||||||
{
|
{
|
||||||
|
|
@ -412,28 +307,167 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 定时器回调函数(参数为该定时器被调用的次数,从 0 开始)
|
class EObjectManager;
|
||||||
typedef std::function<void(int)> TIMER_CALLBACK;
|
|
||||||
|
|
||||||
// 按钮点击回调函数
|
class EObject
|
||||||
typedef std::function<void()> BUTTON_CLICK_CALLBACK;
|
{
|
||||||
|
friend EObjectManager;
|
||||||
|
|
||||||
// 按键消息监听回调函数
|
public:
|
||||||
typedef std::function<void()> KEY_LISTENER_CALLBACK;
|
EObject();
|
||||||
|
|
||||||
// 鼠标消息监听回调函数
|
virtual ~EObject();
|
||||||
typedef std::function<void()> MOUSE_LISTENER_CALLBACK;
|
|
||||||
|
|
||||||
// 鼠标点击消息监听回调函数(参数为点击位置)
|
// 引用计数加一
|
||||||
typedef std::function<void(EPoint mousePos)> MOUSE_CLICK_LISTENER_CALLBACK;
|
void retain();
|
||||||
|
|
||||||
// 鼠标按下消息监听回调函数(参数为按下位置)
|
// 引用计数减一
|
||||||
typedef MOUSE_CLICK_LISTENER_CALLBACK MOUSE_PRESS_LISTENER_CALLBACK;
|
void release();
|
||||||
|
|
||||||
// 鼠标双击消息监听回调函数(参数为双击位置)
|
private:
|
||||||
typedef MOUSE_CLICK_LISTENER_CALLBACK MOUSE_DBLCLK_LISTENER_CALLBACK;
|
int m_nRefCount;
|
||||||
|
bool m_bManaged;
|
||||||
|
};
|
||||||
|
|
||||||
// 鼠标拖动消息监听回调函数(参数为拖动前位置和拖动后位置)
|
|
||||||
typedef std::function<void(EPoint begin, EPoint end)> MOUSE_DRAG_LISTENER_CALLBACK;
|
class EText;
|
||||||
|
|
||||||
|
class EFont :
|
||||||
|
public EObject
|
||||||
|
{
|
||||||
|
friend EText;
|
||||||
|
|
||||||
|
public:
|
||||||
|
EFont();
|
||||||
|
|
||||||
|
EFont(
|
||||||
|
EString fontFamily,
|
||||||
|
float fontSize = 22,
|
||||||
|
UINT32 color = EColor::WHITE,
|
||||||
|
UINT32 fontWeight = EFontWeight::REGULAR,
|
||||||
|
bool italic = false
|
||||||
|
);
|
||||||
|
|
||||||
|
virtual ~EFont();
|
||||||
|
|
||||||
|
// 获取当前字号
|
||||||
|
float getFontSize() const;
|
||||||
|
|
||||||
|
// 获取当前字体粗细值
|
||||||
|
UINT32 getFontWeight() const;
|
||||||
|
|
||||||
|
// 获取文字颜色
|
||||||
|
UINT32 getColor() const;
|
||||||
|
|
||||||
|
// 是否是斜体
|
||||||
|
bool isItalic() const;
|
||||||
|
|
||||||
|
// 设置字体
|
||||||
|
void setFamily(
|
||||||
|
EString fontFamily
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置字号
|
||||||
|
void setSize(
|
||||||
|
float fontSize
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置字体粗细值
|
||||||
|
void setWeight(
|
||||||
|
UINT32 fontWeight
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置文字颜色
|
||||||
|
void setColor(
|
||||||
|
UINT32 color
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置文字斜体
|
||||||
|
void setItalic(
|
||||||
|
bool value
|
||||||
|
);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// 创建文字格式
|
||||||
|
void _initTextFormat();
|
||||||
|
|
||||||
|
// 获取文字格式
|
||||||
|
IDWriteTextFormat * _getTextFormat();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
EString m_sFontFamily;
|
||||||
|
float m_fFontSize;
|
||||||
|
UINT32 m_FontWeight;
|
||||||
|
UINT32 m_Color;
|
||||||
|
bool m_bItalic;
|
||||||
|
bool m_bRecreateNeeded;
|
||||||
|
IDWriteTextFormat * m_pTextFormat;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class ESprite;
|
||||||
|
|
||||||
|
class ETexture :
|
||||||
|
public EObject
|
||||||
|
{
|
||||||
|
friend ESprite;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// 创建一个空的纹理
|
||||||
|
ETexture();
|
||||||
|
|
||||||
|
// 从本地文件中读取资源
|
||||||
|
ETexture(
|
||||||
|
const EString & fileName
|
||||||
|
);
|
||||||
|
|
||||||
|
// 读取程序资源
|
||||||
|
ETexture(
|
||||||
|
LPCTSTR resourceName,
|
||||||
|
LPCTSTR resourceType
|
||||||
|
);
|
||||||
|
|
||||||
|
virtual ~ETexture();
|
||||||
|
|
||||||
|
// 从本地文件中读取资源
|
||||||
|
void loadFromFile(
|
||||||
|
const EString & fileName
|
||||||
|
);
|
||||||
|
|
||||||
|
// 读取程序资源
|
||||||
|
void loadFromResource(
|
||||||
|
LPCTSTR resourceName,
|
||||||
|
LPCTSTR resourceType
|
||||||
|
);
|
||||||
|
|
||||||
|
// 获取源图片宽度
|
||||||
|
virtual float getSourceWidth() const;
|
||||||
|
|
||||||
|
// 获取源图片高度
|
||||||
|
virtual float getSourceHeight() const;
|
||||||
|
|
||||||
|
// 获取源图片大小
|
||||||
|
virtual ESize getSourceSize() const;
|
||||||
|
|
||||||
|
// 预加载资源
|
||||||
|
static bool preload(
|
||||||
|
const EString & fileName
|
||||||
|
);
|
||||||
|
|
||||||
|
// 预加载资源
|
||||||
|
static bool preload(
|
||||||
|
LPCTSTR resourceName,
|
||||||
|
LPCTSTR resourceType
|
||||||
|
);
|
||||||
|
|
||||||
|
// 清空缓存
|
||||||
|
static void clearCache();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
ID2D1Bitmap * _getBitmap();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
ID2D1Bitmap * m_pBitmap;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
165
Easy2D/enodes.h
165
Easy2D/enodes.h
|
|
@ -66,10 +66,10 @@ public:
|
||||||
virtual ESize getRealSize() const;
|
virtual ESize getRealSize() const;
|
||||||
|
|
||||||
// 获取节点的锚点
|
// 获取节点的锚点
|
||||||
virtual float getAnchorX() const;
|
virtual float getPivotX() const;
|
||||||
|
|
||||||
// 获取节点的锚点
|
// 获取节点的锚点
|
||||||
virtual float getAnchorY() const;
|
virtual float getPivotY() const;
|
||||||
|
|
||||||
// 获取节点大小
|
// 获取节点大小
|
||||||
virtual ESize getSize() const;
|
virtual ESize getSize() const;
|
||||||
|
|
@ -223,23 +223,23 @@ public:
|
||||||
float opacity
|
float opacity
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置纵向锚点
|
// 设置支点的横向位置
|
||||||
// 默认为 0.5f, 范围 [0, 1]
|
// 默认为 0.5f, 范围 [0, 1]
|
||||||
virtual void setAnchorX(
|
virtual void setPivotX(
|
||||||
float anchorX
|
float pivotX
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置横向锚点
|
// 设置支点的纵向位置
|
||||||
// 默认为 0.5f, 范围 [0, 1]
|
// 默认为 0.5f, 范围 [0, 1]
|
||||||
virtual void setAnchorY(
|
virtual void setPivotY(
|
||||||
float anchorY
|
float pivotY
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置锚点
|
// 设置支点位置
|
||||||
// 默认为 (0.5f, 0.5f), 范围 [0, 1]
|
// 默认为 (0.5f, 0.5f), 范围 [0, 1]
|
||||||
virtual void setAnchor(
|
virtual void setPivot(
|
||||||
float anchorX,
|
float pivotX,
|
||||||
float anchorY
|
float pivotY
|
||||||
);
|
);
|
||||||
|
|
||||||
// 设置节点形状
|
// 设置节点形状
|
||||||
|
|
@ -375,8 +375,8 @@ protected:
|
||||||
float m_fSkewAngleY;
|
float m_fSkewAngleY;
|
||||||
float m_fDisplayOpacity;
|
float m_fDisplayOpacity;
|
||||||
float m_fRealOpacity;
|
float m_fRealOpacity;
|
||||||
float m_fAnchorX;
|
float m_fPivotX;
|
||||||
float m_fAnchorY;
|
float m_fPivotY;
|
||||||
int m_nOrder;
|
int m_nOrder;
|
||||||
bool m_bVisiable;
|
bool m_bVisiable;
|
||||||
bool m_bDisplayedInScene;
|
bool m_bDisplayedInScene;
|
||||||
|
|
@ -390,70 +390,6 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class ETexture :
|
|
||||||
public EObject
|
|
||||||
{
|
|
||||||
friend ESprite;
|
|
||||||
|
|
||||||
public:
|
|
||||||
// 创建一个空的纹理
|
|
||||||
ETexture();
|
|
||||||
|
|
||||||
// 从本地文件中读取资源
|
|
||||||
ETexture(
|
|
||||||
const EString & fileName
|
|
||||||
);
|
|
||||||
|
|
||||||
// 读取程序资源
|
|
||||||
ETexture(
|
|
||||||
LPCTSTR resourceName,
|
|
||||||
LPCTSTR resourceType
|
|
||||||
);
|
|
||||||
|
|
||||||
virtual ~ETexture();
|
|
||||||
|
|
||||||
// 从本地文件中读取资源
|
|
||||||
void loadFromFile(
|
|
||||||
const EString & fileName
|
|
||||||
);
|
|
||||||
|
|
||||||
// 读取程序资源
|
|
||||||
void loadFromResource(
|
|
||||||
LPCTSTR resourceName,
|
|
||||||
LPCTSTR resourceType
|
|
||||||
);
|
|
||||||
|
|
||||||
// 获取源图片宽度
|
|
||||||
virtual float getSourceWidth() const;
|
|
||||||
|
|
||||||
// 获取源图片高度
|
|
||||||
virtual float getSourceHeight() const;
|
|
||||||
|
|
||||||
// 获取源图片大小
|
|
||||||
virtual ESize getSourceSize() const;
|
|
||||||
|
|
||||||
// 预加载资源
|
|
||||||
static bool preload(
|
|
||||||
const EString & fileName
|
|
||||||
);
|
|
||||||
|
|
||||||
// 预加载资源
|
|
||||||
static bool preload(
|
|
||||||
LPCTSTR resourceName,
|
|
||||||
LPCTSTR resourceType
|
|
||||||
);
|
|
||||||
|
|
||||||
// 清空缓存
|
|
||||||
static void clearCache();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
ID2D1Bitmap * _getBitmap();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
ID2D1Bitmap * m_pBitmap;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class ESpriteFrame :
|
class ESpriteFrame :
|
||||||
public EObject
|
public EObject
|
||||||
{
|
{
|
||||||
|
|
@ -639,79 +575,6 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class EFont :
|
|
||||||
public EObject
|
|
||||||
{
|
|
||||||
friend EText;
|
|
||||||
|
|
||||||
public:
|
|
||||||
EFont();
|
|
||||||
|
|
||||||
EFont(
|
|
||||||
EString fontFamily,
|
|
||||||
float fontSize = 22,
|
|
||||||
UINT32 color = EColor::WHITE,
|
|
||||||
UINT32 fontWeight = EFontWeight::REGULAR,
|
|
||||||
bool italic = false
|
|
||||||
);
|
|
||||||
|
|
||||||
virtual ~EFont();
|
|
||||||
|
|
||||||
// 获取当前字号
|
|
||||||
float getFontSize() const;
|
|
||||||
|
|
||||||
// 获取当前字体粗细值
|
|
||||||
UINT32 getFontWeight() const;
|
|
||||||
|
|
||||||
// 获取文字颜色
|
|
||||||
UINT32 getColor() const;
|
|
||||||
|
|
||||||
// 是否是斜体
|
|
||||||
bool isItalic() const;
|
|
||||||
|
|
||||||
// 设置字体
|
|
||||||
void setFamily(
|
|
||||||
EString fontFamily
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置字号
|
|
||||||
void setSize(
|
|
||||||
float fontSize
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置字体粗细值
|
|
||||||
void setWeight(
|
|
||||||
UINT32 fontWeight
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置文字颜色
|
|
||||||
void setColor(
|
|
||||||
UINT32 color
|
|
||||||
);
|
|
||||||
|
|
||||||
// 设置文字斜体
|
|
||||||
void setItalic(
|
|
||||||
bool value
|
|
||||||
);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// 创建文字格式
|
|
||||||
void _initTextFormat();
|
|
||||||
|
|
||||||
// 获取文字格式
|
|
||||||
IDWriteTextFormat * _getTextFormat();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
EString m_sFontFamily;
|
|
||||||
float m_fFontSize;
|
|
||||||
UINT32 m_FontWeight;
|
|
||||||
UINT32 m_Color;
|
|
||||||
bool m_bItalic;
|
|
||||||
bool m_bRecreateNeeded;
|
|
||||||
IDWriteTextFormat * m_pTextFormat;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class EText :
|
class EText :
|
||||||
public ENode
|
public ENode
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,137 @@
|
||||||
|
#pragma once
|
||||||
|
#include <Windows.h>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
namespace e2d
|
||||||
|
{
|
||||||
|
|
||||||
|
struct EPoint
|
||||||
|
{
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
|
||||||
|
EPoint()
|
||||||
|
{
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
EPoint(float x, float y)
|
||||||
|
{
|
||||||
|
this->x = x;
|
||||||
|
this->y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
EPoint operator + (EPoint const & p)
|
||||||
|
{
|
||||||
|
return EPoint(x + p.x, y + p.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
EPoint operator - (EPoint const & p)
|
||||||
|
{
|
||||||
|
return EPoint(x - p.x, y - p.y);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ESize
|
||||||
|
{
|
||||||
|
float width;
|
||||||
|
float height;
|
||||||
|
|
||||||
|
ESize()
|
||||||
|
{
|
||||||
|
width = 0;
|
||||||
|
height = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ESize(float width, float height)
|
||||||
|
{
|
||||||
|
this->width = width;
|
||||||
|
this->height = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
ESize operator + (ESize const & size)
|
||||||
|
{
|
||||||
|
return ESize(width + size.width, height + size.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
ESize operator - (ESize const & size)
|
||||||
|
{
|
||||||
|
return ESize(width - size.width, height - size.height);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct EWindowStyle
|
||||||
|
{
|
||||||
|
LPCTSTR m_pIconID; /* 程序图标 ID */
|
||||||
|
bool m_bNoClose; /* 禁用关闭按钮 */
|
||||||
|
bool m_bNoMiniSize; /* 禁用最小化按钮 */
|
||||||
|
bool m_bTopMost; /* 窗口置顶 */
|
||||||
|
|
||||||
|
EWindowStyle()
|
||||||
|
{
|
||||||
|
m_pIconID = 0;
|
||||||
|
m_bNoClose = false;
|
||||||
|
m_bNoMiniSize = false;
|
||||||
|
m_bTopMost = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
EWindowStyle(
|
||||||
|
LPCTSTR pIconID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
m_pIconID = pIconID;
|
||||||
|
m_bNoClose = false;
|
||||||
|
m_bNoMiniSize = false;
|
||||||
|
m_bTopMost = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
EWindowStyle(
|
||||||
|
LPCTSTR pIconID,
|
||||||
|
bool bNoClose,
|
||||||
|
bool bNoMiniSize,
|
||||||
|
bool bTopMost
|
||||||
|
)
|
||||||
|
{
|
||||||
|
m_pIconID = pIconID;
|
||||||
|
m_bNoClose = bNoClose;
|
||||||
|
m_bNoMiniSize = bNoMiniSize;
|
||||||
|
m_bTopMost = bTopMost;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef EPoint EVec;
|
||||||
|
|
||||||
|
typedef std::wstring EString;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
using EVector = std::vector<T>;
|
||||||
|
|
||||||
|
// 定时器回调函数(参数为该定时器被调用的次数,从 0 开始)
|
||||||
|
typedef std::function<void(int)> TIMER_CALLBACK;
|
||||||
|
|
||||||
|
// 按钮点击回调函数
|
||||||
|
typedef std::function<void()> BUTTON_CLICK_CALLBACK;
|
||||||
|
|
||||||
|
// 按键消息监听回调函数
|
||||||
|
typedef std::function<void()> KEY_LISTENER_CALLBACK;
|
||||||
|
|
||||||
|
// 鼠标消息监听回调函数
|
||||||
|
typedef std::function<void()> MOUSE_LISTENER_CALLBACK;
|
||||||
|
|
||||||
|
// 鼠标点击消息监听回调函数(参数为点击位置)
|
||||||
|
typedef std::function<void(EPoint mousePos)> MOUSE_CLICK_LISTENER_CALLBACK;
|
||||||
|
|
||||||
|
// 鼠标按下消息监听回调函数(参数为按下位置)
|
||||||
|
typedef MOUSE_CLICK_LISTENER_CALLBACK MOUSE_PRESS_LISTENER_CALLBACK;
|
||||||
|
|
||||||
|
// 鼠标双击消息监听回调函数(参数为双击位置)
|
||||||
|
typedef MOUSE_CLICK_LISTENER_CALLBACK MOUSE_DBLCLK_LISTENER_CALLBACK;
|
||||||
|
|
||||||
|
// 鼠标拖动消息监听回调函数(参数为拖动前位置和拖动后位置)
|
||||||
|
typedef std::function<void(EPoint begin, EPoint end)> MOUSE_DRAG_LISTENER_CALLBACK;
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue