From 245a6c6e71d04f8fc23aab2ff9be8c1b3aa177b1 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Tue, 24 Apr 2018 21:22:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E9=83=A8=E5=88=86=E6=9E=9A=E4=B8=BE?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=9B=BF=E6=8D=A2=E4=B8=BA=E5=BC=BA=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/Base/Input.cpp | 16 +- core/Collider/Collider.cpp | 4 +- core/Common/TextStyle.cpp | 16 +- core/Manager/ColliderManager.cpp | 2 +- core/Node/Button.cpp | 22 +-- core/Node/Node.cpp | 4 +- core/Node/Shape/Shape.cpp | 4 +- core/Node/Text.cpp | 88 +++++------ core/Transition/TransitionMove.cpp | 2 +- core/e2dbase.h | 6 +- core/e2dcollider.h | 2 +- core/e2dcommon.h | 230 +++++++++++++---------------- core/e2dnode.h | 31 ++-- core/e2dshape.h | 6 +- core/e2dtransition.h | 6 +- 15 files changed, 218 insertions(+), 221 deletions(-) diff --git a/core/Base/Input.cpp b/core/Base/Input.cpp index 56207bb5..605b1370 100644 --- a/core/Base/Input.cpp +++ b/core/Base/Input.cpp @@ -141,25 +141,25 @@ void Input::__updateDeviceState() ScreenToClient(Window::getHWnd(), &s_MousePosition); } -bool Input::isKeyDown(int nKeyCode) +bool Input::isKeyDown(KeyCode key) { - if (s_KeyBuffer[static_cast(nKeyCode)] & 0x80) + if (s_KeyBuffer[static_cast(key)] & 0x80) return true; return false; } -bool Input::isKeyPress(int nKeyCode) +bool Input::isKeyPress(KeyCode key) { - if ((s_KeyBuffer[static_cast(nKeyCode)] & 0x80) && - !(s_KeyRecordBuffer[static_cast(nKeyCode)] & 0x80)) + if ((s_KeyBuffer[static_cast(key)] & 0x80) && + !(s_KeyRecordBuffer[static_cast(key)] & 0x80)) return true; return false; } -bool Input::isKeyRelease(int nKeyCode) +bool Input::isKeyRelease(KeyCode key) { - if (!(s_KeyBuffer[static_cast(nKeyCode)] & 0x80) && - (s_KeyRecordBuffer[static_cast(nKeyCode)] & 0x80)) + if (!(s_KeyBuffer[static_cast(key)] & 0x80) && + (s_KeyRecordBuffer[static_cast(key)] & 0x80)) return true; return false; } diff --git a/core/Collider/Collider.cpp b/core/Collider/Collider.cpp index ae4748db..d1be4b5c 100644 --- a/core/Collider/Collider.cpp +++ b/core/Collider/Collider.cpp @@ -60,7 +60,7 @@ void e2d::Collider::_render() } } -int e2d::Collider::getRelationWith(Collider * pCollider) const +e2d::Relation e2d::Collider::getRelationWith(Collider * pCollider) const { if (m_pTransformedGeometry && pCollider->m_pTransformedGeometry) { @@ -74,7 +74,7 @@ int e2d::Collider::getRelationWith(Collider * pCollider) const &relation ); - return relation; + return Relation(relation); } } return Relation::UNKNOWN; diff --git a/core/Common/TextStyle.cpp b/core/Common/TextStyle.cpp index 5122388b..a6a30a6f 100644 --- a/core/Common/TextStyle.cpp +++ b/core/Common/TextStyle.cpp @@ -6,6 +6,10 @@ e2d::TextStyle::TextStyle() , color(Color::WHITE) , fontWeight(FontWeight::NORMAL) , italic(false) + , alignment(TextAlign::LEFT) + , wrapping(false) + , wrappingWidth(0.0) + , lineSpacing(0.0) , hasUnderline(false) , hasStrikethrough(false) , hasOutline(true) @@ -19,19 +23,27 @@ e2d::TextStyle::TextStyle( double fontSize, Color color, UINT32 fontWeight, - bool italic, + bool italic, + TextAlign alignment, + bool wrapping, + double wrappingWidth, + double lineSpacing, bool hasUnderline, bool hasStrikethrough, bool hasOutline, Color outlineColor, double outlineWidth, - int outlineJoin + LineJoin outlineJoin ) : fontFamily(fontFamily) , fontSize(fontSize) , color(color) , fontWeight(fontWeight) , italic(italic) + , alignment(alignment) + , wrapping(wrapping) + , wrappingWidth(wrappingWidth) + , lineSpacing(lineSpacing) , hasUnderline(hasUnderline) , hasStrikethrough(hasStrikethrough) , hasOutline(hasOutline) diff --git a/core/Manager/ColliderManager.cpp b/core/Manager/ColliderManager.cpp index 187c6c62..197246bb 100644 --- a/core/Manager/ColliderManager.cpp +++ b/core/Manager/ColliderManager.cpp @@ -114,7 +114,7 @@ void e2d::ColliderManager::__updateCollider(e2d::Collider * pActiveCollider) if (IsCollideWith(pActiveNode, pPassiveNode)) { // 判断两碰撞体交集情况 - int relation = pActiveCollider->getRelationWith(pPassiveCollider); + Relation relation = pActiveCollider->getRelationWith(pPassiveCollider); // 忽略 UNKNOWN 和 DISJOINT 情况 if (relation != Relation::UNKNOWN && relation != Relation::DISJOINT) { diff --git a/core/Node/Button.cpp b/core/Node/Button.cpp index c0774320..7e336c98 100644 --- a/core/Node/Button.cpp +++ b/core/Node/Button.cpp @@ -6,7 +6,7 @@ e2d::Button::Button() : m_Callback(nullptr) - , m_eBtnState(Button::NORMAL) + , m_eBtnState(ButtonState::NORMAL) , m_bEnable(true) , m_bIsSelected(false) , m_pNormal(nullptr) @@ -18,7 +18,7 @@ e2d::Button::Button() e2d::Button::Button(Node * normal, Function func) : m_Callback(nullptr) - , m_eBtnState(Button::NORMAL) + , m_eBtnState(ButtonState::NORMAL) , m_bEnable(true) , m_bIsSelected(false) , m_pNormal(nullptr) @@ -32,7 +32,7 @@ e2d::Button::Button(Node * normal, Function func) e2d::Button::Button(Node * normal, Node * selected, Function func) : m_Callback(nullptr) - , m_eBtnState(Button::NORMAL) + , m_eBtnState(ButtonState::NORMAL) , m_bEnable(true) , m_bIsSelected(false) , m_pNormal(nullptr) @@ -47,7 +47,7 @@ e2d::Button::Button(Node * normal, Node * selected, Function func) e2d::Button::Button(Node * normal, Node * mouseover, Node * selected, Function func) : m_Callback(nullptr) - , m_eBtnState(Button::NORMAL) + , m_eBtnState(ButtonState::NORMAL) , m_bEnable(true) , m_bIsSelected(false) , m_pNormal(nullptr) @@ -63,7 +63,7 @@ e2d::Button::Button(Node * normal, Node * mouseover, Node * selected, Function f e2d::Button::Button(Node * normal, Node * mouseover, Node * selected, Node * disabled, Function func) : m_Callback(nullptr) - , m_eBtnState(Button::NORMAL) + , m_eBtnState(ButtonState::NORMAL) , m_bEnable(true) , m_bIsSelected(false) , m_pNormal(nullptr) @@ -210,21 +210,21 @@ void e2d::Button::onFixedUpdate() { if (m_pNormal->isPointIn(Input::getMousePos())) { - _setState(Button::SELECTED); + _setState(ButtonState::SELECTED); return; } } else if (m_pNormal->isPointIn(Input::getMousePos())) { - _setState(Button::MOUSEOVER); + _setState(ButtonState::MOUSEOVER); return; } - _setState(Button::NORMAL); + _setState(ButtonState::NORMAL); } } -void e2d::Button::_setState(BTN_STATE state) +void e2d::Button::_setState(ButtonState state) { if (m_eBtnState != state) { @@ -242,11 +242,11 @@ void e2d::Button::_updateVisiable() if (m_bEnable) { - if (m_eBtnState == Button::SELECTED && m_pSelected) + if (m_eBtnState == ButtonState::SELECTED && m_pSelected) { m_pSelected->setVisiable(true); } - else if (m_eBtnState == Button::MOUSEOVER && m_pMouseover) + else if (m_eBtnState == ButtonState::MOUSEOVER && m_pMouseover) { m_pMouseover->setVisiable(true); } diff --git a/core/Node/Node.cpp b/core/Node/Node.cpp index 07fdaf76..dfde1a71 100644 --- a/core/Node/Node.cpp +++ b/core/Node/Node.cpp @@ -561,7 +561,7 @@ void e2d::Node::setProperty(NodeProperty prop) this->setSkew(prop.skewAngleX, prop.skewAngleY); } -void e2d::Node::setCollider(int nColliderType) +void e2d::Node::setCollider(ColliderType nColliderType) { switch (nColliderType) { @@ -960,7 +960,7 @@ bool e2d::Node::isIntersectWith(const Node * pNode) const // 如果存在碰撞体,用碰撞体判断 if (this->m_pCollider && pNode->m_pCollider) { - int relation = this->m_pCollider->getRelationWith(pNode->m_pCollider); + Relation relation = this->m_pCollider->getRelationWith(pNode->m_pCollider); if ((relation != Relation::UNKNOWN) && (relation != Relation::DISJOINT)) { diff --git a/core/Node/Shape/Shape.cpp b/core/Node/Shape/Shape.cpp index 5ed17542..ba785fdf 100644 --- a/core/Node/Shape/Shape.cpp +++ b/core/Node/Shape/Shape.cpp @@ -63,7 +63,7 @@ double e2d::Shape::getStrokeWidth() const return m_fStrokeWidth; } -int e2d::Shape::getStyle() const +e2d::ShapeStyle e2d::Shape::getStyle() const { return m_nStyle; } @@ -83,7 +83,7 @@ void e2d::Shape::setStrokeWidth(double strokeWidth) m_fStrokeWidth = static_cast(strokeWidth); } -void e2d::Shape::setStyle(int style) +void e2d::Shape::setStyle(ShapeStyle style) { m_nStyle = style; } diff --git a/core/Node/Text.cpp b/core/Node/Text.cpp index c6296286..0d0b6c41 100644 --- a/core/Node/Text.cpp +++ b/core/Node/Text.cpp @@ -2,22 +2,14 @@ e2d::Text::Text() - : m_bWrappingEnable(false) - , m_TextStyle() - , m_nAlign(TextAlign::LEFT) - , m_fLineSpacing(0.0f) - , m_fWrappingWidth(0.0f) + : m_TextStyle() , m_pDWriteTextLayout(nullptr) , m_pDWriteTextFormat(nullptr) { } e2d::Text::Text(String text) - : m_bWrappingEnable(false) - , m_TextStyle() - , m_nAlign(TextAlign::LEFT) - , m_fLineSpacing(0.0f) - , m_fWrappingWidth(0.0f) + : m_TextStyle() , m_pDWriteTextLayout(nullptr) , m_pDWriteTextFormat(nullptr) , m_sText(text) @@ -26,11 +18,7 @@ e2d::Text::Text(String text) } e2d::Text::Text(TextStyle textStyle) - : m_bWrappingEnable(false) - , m_TextStyle(textStyle) - , m_nAlign(TextAlign::LEFT) - , m_fLineSpacing(0.0f) - , m_fWrappingWidth(0.0f) + : m_TextStyle(textStyle) , m_pDWriteTextLayout(nullptr) , m_pDWriteTextFormat(nullptr) { @@ -38,11 +26,7 @@ e2d::Text::Text(TextStyle textStyle) } e2d::Text::Text(String text, TextStyle textStyle) - : m_bWrappingEnable(false) - , m_TextStyle(textStyle) - , m_nAlign(TextAlign::LEFT) - , m_fLineSpacing(0.0f) - , m_fWrappingWidth(0.0f) + : m_TextStyle(textStyle) , m_pDWriteTextLayout(nullptr) , m_pDWriteTextFormat(nullptr) , m_sText(text) @@ -57,28 +41,32 @@ e2d::Text::Text( UINT32 color, UINT32 fontWeight, bool italic, + TextAlign alignment, + bool wrapping, + double wrappingWidth, + double lineSpacing, bool hasUnderline, bool hasStrikethrough, bool hasOutline, UINT32 outlineColor, UINT32 outlineWidth ) - : m_bWrappingEnable(false) - , m_TextStyle( + : m_TextStyle( fontFamily, fontSize, color, fontWeight, italic, + alignment, + wrapping, + wrappingWidth, + lineSpacing, hasUnderline, hasStrikethrough, hasOutline, outlineColor, outlineWidth ) - , m_nAlign(TextAlign::LEFT) - , m_fLineSpacing(0.0f) - , m_fWrappingWidth(0.0f) , m_pDWriteTextLayout(nullptr) , m_pDWriteTextFormat(nullptr) , m_sText(text) @@ -132,7 +120,7 @@ double e2d::Text::getOutlineWidth() const return m_TextStyle.outlineWidth; } -int e2d::Text::getOutlineJoin() const +e2d::LineJoin e2d::Text::getOutlineJoin() const { return m_TextStyle.outlineJoin; } @@ -191,7 +179,7 @@ void e2d::Text::setFontFamily(String fontFamily) void e2d::Text::setFontSize(double fontSize) { - m_TextStyle.fontSize = static_cast(fontSize); + m_TextStyle.fontSize = fontSize; _reset(); } @@ -212,30 +200,42 @@ void e2d::Text::setItalic(bool value) _reset(); } +void e2d::Text::setWrapping(bool wrapping) +{ + if (m_TextStyle.wrapping != wrapping) + { + m_TextStyle.wrapping = wrapping; + _reset(); + } +} + void e2d::Text::setWrappingWidth(double fWrappingWidth) { - if (m_fWrappingWidth != fWrappingWidth) + if (m_TextStyle.wrappingWidth != fWrappingWidth) { - m_fWrappingWidth = max(static_cast(fWrappingWidth), 0); - m_bWrappingEnable = (m_fWrappingWidth > FLT_MIN); - _reset(); + m_TextStyle.wrappingWidth = max(fWrappingWidth, 0); + + if (m_TextStyle.wrapping) + { + _reset(); + } } } void e2d::Text::setLineSpacing(double fLineSpacing) { - if (m_fLineSpacing != fLineSpacing) + if (m_TextStyle.lineSpacing != fLineSpacing) { - m_fLineSpacing = static_cast(fLineSpacing); + m_TextStyle.lineSpacing = fLineSpacing; _reset(); } } -void e2d::Text::setAlignment(int nAlign) +void e2d::Text::setAlignment(TextAlign align) { - if (m_nAlign != nAlign) + if (m_TextStyle.alignment != align) { - m_nAlign = nAlign; + m_TextStyle.alignment = align; _reset(); } } @@ -277,7 +277,7 @@ void e2d::Text::setOutlineWidth(double outlineWidth) m_TextStyle.outlineWidth = outlineWidth; } -void e2d::Text::setOutlineJoin(int outlineJoin) +void e2d::Text::setOutlineJoin(LineJoin outlineJoin) { m_TextStyle.outlineJoin = outlineJoin; } @@ -331,9 +331,9 @@ void e2d::Text::_createFormat() if (m_pDWriteTextFormat) { // 设置文字对齐方式 - m_pDWriteTextFormat->SetTextAlignment(DWRITE_TEXT_ALIGNMENT(m_nAlign)); + m_pDWriteTextFormat->SetTextAlignment(DWRITE_TEXT_ALIGNMENT(m_TextStyle.alignment)); // 设置行间距 - if (m_fLineSpacing == 0.0f) + if (m_TextStyle.lineSpacing == 0.0) { m_pDWriteTextFormat->SetLineSpacing(DWRITE_LINE_SPACING_METHOD_DEFAULT, 0, 0); } @@ -341,12 +341,12 @@ void e2d::Text::_createFormat() { m_pDWriteTextFormat->SetLineSpacing( DWRITE_LINE_SPACING_METHOD_UNIFORM, - m_fLineSpacing, - m_fLineSpacing * 0.8f + static_cast(m_TextStyle.lineSpacing), + static_cast(m_TextStyle.lineSpacing) * 0.8f ); } // 打开文本自动换行时,设置换行属性 - if (m_bWrappingEnable) + if (m_TextStyle.wrapping) { m_pDWriteTextFormat->SetWordWrapping(DWRITE_WORD_WRAPPING_WRAP); } @@ -379,13 +379,13 @@ void e2d::Text::_createLayout() // 创建 TextLayout HRESULT hr; // 对文本自动换行情况下进行处理 - if (m_bWrappingEnable) + if (m_TextStyle.wrapping) { hr = Renderer::getIDWriteFactory()->CreateTextLayout( m_sText, length, m_pDWriteTextFormat, - m_fWrappingWidth, + static_cast(m_TextStyle.wrappingWidth), 0, &m_pDWriteTextLayout ); diff --git a/core/Transition/TransitionMove.cpp b/core/Transition/TransitionMove.cpp index 41c23097..e3635250 100644 --- a/core/Transition/TransitionMove.cpp +++ b/core/Transition/TransitionMove.cpp @@ -1,7 +1,7 @@ #include "..\e2dtransition.h" #include "..\e2dnode.h" -e2d::TransitionMove::TransitionMove(double duration, int direct) +e2d::TransitionMove::TransitionMove(double duration, Direct direct) : Transition(duration) , m_Direct(direct) { diff --git a/core/e2dbase.h b/core/e2dbase.h index df30e002..5e4baa0f 100644 --- a/core/e2dbase.h +++ b/core/e2dbase.h @@ -157,17 +157,17 @@ class Input public: // 检测键盘某按键是否正被按下 static bool isKeyDown( - int nKeyCode + KeyCode key ); // 检测键盘某按键是否被点击 static bool isKeyPress( - int nKeyCode + KeyCode key ); // 检测键盘某按键是否正在松开 static bool isKeyRelease( - int nKeyCode + KeyCode key ); // 检测鼠标左键是否正被按下 diff --git a/core/e2dcollider.h b/core/e2dcollider.h index 543b0659..868c1202 100644 --- a/core/e2dcollider.h +++ b/core/e2dcollider.h @@ -21,7 +21,7 @@ public: virtual ~Collider(); // 判断两碰撞体的交集关系 - virtual int getRelationWith( + virtual Relation getRelationWith( Collider * pCollider ) const; diff --git a/core/e2dcommon.h b/core/e2dcommon.h index d8e298e7..a56640f9 100644 --- a/core/e2dcommon.h +++ b/core/e2dcommon.h @@ -334,166 +334,142 @@ public: // 文本对齐方式 -class TextAlign +enum class TextAlign : int { -public: - enum : int - { - LEFT, /* 左对齐 */ - RIGHT, /* 右对齐 */ - CENTER /* 居中对齐 */ - }; + LEFT, /* 左对齐 */ + RIGHT, /* 右对齐 */ + CENTER /* 居中对齐 */ }; // 键值集合 -class KeyCode +enum class KeyCode : int { -public: - enum : int - { - UP = 0xC8, - LEFT = 0xCB, - RIGHT = 0xCD, - DOWN = 0xD0, - ENTER = 0x1C, - SPACE = 0x39, - ESC = 0x01, - BACK = 0x0E, - TAB = 0x0F, - PAUSE = 0xC5, - Q = 0x10, - W = 0x11, - E = 0x12, - R = 0x13, - T = 0x14, - Y = 0x15, - U = 0x16, - I = 0x17, - O = 0x18, - P = 0x19, - A = 0x1E, - S = 0x1F, - D = 0x20, - F = 0x21, - G = 0x22, - H = 0x23, - J = 0x24, - K = 0x25, - L = 0x26, - Z = 0x2C, - X = 0x2D, - C = 0x2E, - V = 0x2F, - B = 0x30, - N = 0x31, - M = 0x32, - NUM1 = 0x02, - NUM2 = 0x03, - NUM3 = 0x04, - NUM4 = 0x05, - NUM5 = 0x06, - NUM6 = 0x07, - NUM7 = 0x08, - NUM8 = 0x09, - NUM9 = 0x0A, - NUM0 = 0x0B, - NUMPAD7 = 0x47, - NUMPAD8 = 0x48, - NUMPAD9 = 0x49, - NUMPAD4 = 0x4B, - NUMPAD5 = 0x4C, - NUMPAD6 = 0x4D, - NUMPAD1 = 0x4F, - NUMPAD2 = 0x50, - NUMPAD3 = 0x51, - NUMPAD0 = 0x52 - }; + UP = 0xC8, + LEFT = 0xCB, + RIGHT = 0xCD, + DOWN = 0xD0, + ENTER = 0x1C, + SPACE = 0x39, + ESC = 0x01, + BACK = 0x0E, + TAB = 0x0F, + PAUSE = 0xC5, + Q = 0x10, + W = 0x11, + E = 0x12, + R = 0x13, + T = 0x14, + Y = 0x15, + U = 0x16, + I = 0x17, + O = 0x18, + P = 0x19, + A = 0x1E, + S = 0x1F, + D = 0x20, + F = 0x21, + G = 0x22, + H = 0x23, + J = 0x24, + K = 0x25, + L = 0x26, + Z = 0x2C, + X = 0x2D, + C = 0x2E, + V = 0x2F, + B = 0x30, + N = 0x31, + M = 0x32, + NUM1 = 0x02, + NUM2 = 0x03, + NUM3 = 0x04, + NUM4 = 0x05, + NUM5 = 0x06, + NUM6 = 0x07, + NUM7 = 0x08, + NUM8 = 0x09, + NUM9 = 0x0A, + NUM0 = 0x0B, + NUMPAD7 = 0x47, + NUMPAD8 = 0x48, + NUMPAD9 = 0x49, + NUMPAD4 = 0x4B, + NUMPAD5 = 0x4C, + NUMPAD6 = 0x4D, + NUMPAD1 = 0x4F, + NUMPAD2 = 0x50, + NUMPAD3 = 0x51, + NUMPAD0 = 0x52 }; // 方向 -class Direct +enum class Direct : int { -public: - enum : int - { - UP, /* 上 */ - DOWN, /* 下 */ - LEFT, /* 左 */ - RIGHT /* 右 */ - }; + UP, /* 上 */ + DOWN, /* 下 */ + LEFT, /* 左 */ + RIGHT /* 右 */ }; -// 碰撞体交集关系 -class Relation +// 物体交集关系 +enum class Relation : int { -public: - enum : int - { - UNKNOWN = 0, /* 关系不确定 */ - DISJOINT = 1, /* 没有交集 */ - IS_CONTAINED = 2, /* 完全被包含 */ - CONTAINS = 3, /* 完全包含 */ - OVERLAP = 4 /* 部分重叠 */ - }; + UNKNOWN = 0, /* 关系不确定 */ + DISJOINT = 1, /* 没有交集 */ + IS_CONTAINED = 2, /* 完全被包含 */ + CONTAINS = 3, /* 完全包含 */ + OVERLAP = 4 /* 部分重叠 */ }; // 线条相交样式 -class LineJoin +enum class LineJoin : int { -public: - enum : int - { - MITER = 0, - BEVEL = 1, - ROUND = 2 - }; + MITER = 0, + BEVEL = 1, + ROUND = 2 }; // 形状样式 -class ShapeStyle +enum class ShapeStyle : int { -public: - enum : int - { - SOLID, /* 填充 */ - ROUND, /* 轮廓 */ - FILL, /* 轮廓 + 填充 */ - }; + SOLID, /* 填充 */ + ROUND, /* 轮廓 */ + FILL, /* 轮廓 + 填充 */ }; // 碰撞体类别 -class ColliderType +enum class ColliderType : int { -public: - enum : int - { - RECT, /* 矩形 */ - CIRCLE, /* 圆形 */ - ELLIPSE /* 椭圆形 */ - }; + RECT, /* 矩形 */ + CIRCLE, /* 圆形 */ + ELLIPSE /* 椭圆形 */ }; // 文本样式 struct TextStyle { - String fontFamily; // 字体 - double fontSize; // 字号 - Color color; // 颜色 - UINT32 fontWeight; // 粗细值 - bool italic; // 斜体 - bool hasUnderline; // 下划线 - bool hasStrikethrough; // 删除线 - bool hasOutline; // 显示描边 - Color outlineColor; // 描边颜色 - double outlineWidth; // 描边线宽 - int outlineJoin; // 描边线相交样式 + String fontFamily; // 字体 + double fontSize; // 字号 + Color color; // 颜色 + UINT32 fontWeight; // 粗细值 + bool italic; // 斜体 + TextAlign alignment; // 对齐方式 + bool wrapping; // 打开自动换行 + double wrappingWidth; // 自动换行宽度 + double lineSpacing; // 行间距 + bool hasUnderline; // 下划线 + bool hasStrikethrough; // 删除线 + bool hasOutline; // 显示描边 + Color outlineColor; // 描边颜色 + double outlineWidth; // 描边线宽 + LineJoin outlineJoin; // 描边线相交样式 /* 构造函数 */ TextStyle(); @@ -504,12 +480,16 @@ struct TextStyle Color color = Color::WHITE, UINT32 fontWeight = FontWeight::NORMAL, bool italic = false, + TextAlign alignment = TextAlign::LEFT, + bool wrapping = false, + double wrappingWidth = 0.0, + double lineSpacing = 0.0, bool hasUnderline = false, bool hasStrikethrough = false, bool hasOutline = true, Color outlineColor = Color(Color::BLACK, 0.5), double outlineWidth = 1.0, - int outlineJoin = LineJoin::ROUND + LineJoin outlineJoin = LineJoin::ROUND ); }; diff --git a/core/e2dnode.h b/core/e2dnode.h index 39338882..36926875 100644 --- a/core/e2dnode.h +++ b/core/e2dnode.h @@ -326,7 +326,7 @@ public: // 设置碰撞体 virtual void setCollider( - int nColliderType + ColliderType nColliderType ); // 设置碰撞体 @@ -566,6 +566,10 @@ public: UINT32 color = Color::WHITE, /* 颜色 */ UINT32 fontWeight = FontWeight::NORMAL, /* 粗细值 */ bool italic = false, /* 斜体 */ + TextAlign alignment = TextAlign::LEFT, /* 对齐方式 */ + bool wrapping = false, /* 打开自动换行 */ + double wrappingWidth = 0.0, /* 自动换行宽度 */ + double lineSpacing = 0.0, /* 行间距 */ bool hasUnderline = false, /* 下划线 */ bool hasStrikethrough = false, /* 删除线 */ bool hasOutline = true, /* 显示描边 */ @@ -600,7 +604,7 @@ public: double getOutlineWidth() const; // 获取描边线相交样式 - int getOutlineJoin() const; + LineJoin getOutlineJoin() const; // 获取文本显示行数 int getLineCount() const; @@ -652,7 +656,12 @@ public: bool value ); - // 设置文本自动换行的宽度(设置为 0 时关闭自动换行,默认为 0) + // 打开或关闭文本自动换行(默认为关闭) + void setWrapping( + bool wrapping + ); + + // 设置文本自动换行的宽度(默认为 0) void setWrappingWidth( double fWrappingWidth ); @@ -664,7 +673,7 @@ public: // 设置对齐方式(默认为 TextAlign::LEFT) void setAlignment( - int nAlign + TextAlign align ); // 设置下划线(默认值为 false) @@ -694,7 +703,7 @@ public: // 设置描边线相交样式 void setOutlineJoin( - int outlineJoin + LineJoin outlineJoin ); // 渲染文字 @@ -712,11 +721,7 @@ protected: protected: String m_sText; - bool m_bWrappingEnable; - float m_fWrappingWidth; - float m_fLineSpacing; - int m_nAlign; - TextStyle m_TextStyle; + TextStyle m_TextStyle; IDWriteTextFormat * m_pDWriteTextFormat; IDWriteTextLayout * m_pDWriteTextLayout; }; @@ -797,10 +802,10 @@ public: protected: // 按钮状态枚举 - enum BTN_STATE { NORMAL, MOUSEOVER, SELECTED }; + enum class ButtonState { NORMAL, MOUSEOVER, SELECTED }; // 设置按钮状态 - virtual void _setState(BTN_STATE state); + virtual void _setState(ButtonState state); // 刷新按钮显示 virtual void _updateVisiable(); @@ -815,7 +820,7 @@ protected: Node * m_pDisabled; bool m_bEnable; bool m_bIsSelected; - BTN_STATE m_eBtnState; + ButtonState m_eBtnState; Function m_Callback; }; diff --git a/core/e2dshape.h b/core/e2dshape.h index b0bde97f..aa96481f 100644 --- a/core/e2dshape.h +++ b/core/e2dshape.h @@ -15,7 +15,7 @@ public: virtual ~Shape(); // 获取样式 - int getStyle() const; + ShapeStyle getStyle() const; // 获取填充颜色 Color getFillColor() const; @@ -42,7 +42,7 @@ public: ); // 设置样式 - void setStyle(int style); + void setStyle(ShapeStyle style); // 渲染形状 virtual void onRender() override; @@ -55,7 +55,7 @@ protected: virtual void _renderFill() = 0; protected: - int m_nStyle; + ShapeStyle m_nStyle; float m_fStrokeWidth; Color m_nLineColor; Color m_nFillColor; diff --git a/core/e2dtransition.h b/core/e2dtransition.h index 5d77e91f..87c9e352 100644 --- a/core/e2dtransition.h +++ b/core/e2dtransition.h @@ -121,8 +121,8 @@ class TransitionMove : public: // 创建移动式的场景切换动画 TransitionMove( - double moveDuration, /* 场景移动动画持续时长 */ - int direct = Direct::LEFT /* 场景移动方向 */ + double moveDuration, /* 场景移动动画持续时长 */ + Direct direct = Direct::LEFT /* 场景移动方向 */ ); protected: @@ -137,7 +137,7 @@ protected: virtual void _reset() override; protected: - int m_Direct; + Direct m_Direct; Vector m_Vector; Point m_NextPos; };