diff --git a/core/e2dutil.h b/core/e2dutil.h index 86609c0c..f78eb0a1 100644 --- a/core/e2dutil.h +++ b/core/e2dutil.h @@ -385,8 +385,8 @@ namespace easy2d bool operator< (const Duration &) const; bool operator<= (const Duration &) const; - Duration operator + (Duration const &) const; - Duration operator - (Duration const &) const; + Duration operator + (const Duration &) const; + Duration operator - (const Duration &) const; Duration operator - () const; Duration operator * (int) const; Duration operator * (float) const; @@ -395,8 +395,8 @@ namespace easy2d Duration operator / (float) const; Duration operator / (double) const; - Duration& operator += (Duration const &); - Duration& operator -= (Duration const &); + Duration& operator += (const Duration &); + Duration& operator -= (const Duration &); Duration& operator *= (int); Duration& operator *= (float); Duration& operator *= (double); @@ -432,19 +432,34 @@ namespace easy2d public: Time(); + explicit Time( + std::chrono::steady_clock::time_point + ); + + Time( + const Time& other + ); + + Time( + Time&& other + ); + // 获取时间戳 time_t GetTimeStamp() const; // 是否是零时 bool IsZero() const; - Time operator + (Duration const &) const; - Time operator - (Duration const &) const; + Time operator + (const Duration &) const; + Time operator - (const Duration &) const; - Time& operator += (Duration const &); - Time& operator -= (Duration const &); + Time& operator += (const Duration &); + Time& operator -= (const Duration &); - Duration operator - (Time const &) const; + Duration operator - (const Time &) const; + + Time& operator = (const Time &) E2D_NOEXCEPT; + Time& operator = (Time &&) E2D_NOEXCEPT; // 获取当前时间 static Time Now(); @@ -641,7 +656,6 @@ namespace easy2d { if (FAILED(hr)) { - // 在此处设置断点以捕获系统异常. static char s_str[64] = {}; sprintf_s(s_str, "Failure with HRESULT of %08X", static_cast(hr)); throw std::runtime_error(s_str); diff --git a/core/modules/Game.cpp b/core/modules/Game.cpp index e3820319..0508eb55 100644 --- a/core/modules/Game.cpp +++ b/core/modules/Game.cpp @@ -388,13 +388,12 @@ easy2d::Rect easy2d::Game::Locate(int width, int height) width = std::min(width, max_width); height = std::min(height, max_height); - Rect client_rect( + return Rect( static_cast((max_width - width) / 2), static_cast((max_height - height) / 2), static_cast(width), static_cast(height) ); - return std::move(client_rect); } int easy2d::Game::GetWidth() const @@ -409,11 +408,10 @@ int easy2d::Game::GetHeight() const easy2d::Size easy2d::Game::GetSize() const { - easy2d::Size size( + return easy2d::Size( static_cast(width_), static_cast(height_) ); - return std::move(size); } HWND easy2d::Game::GetHWnd() const diff --git a/core/objects/Image.cpp b/core/objects/Image.cpp index f67d7839..6a2e1bf8 100644 --- a/core/objects/Image.cpp +++ b/core/objects/Image.cpp @@ -147,14 +147,12 @@ float easy2d::Image::GetSourceHeight() const easy2d::Size easy2d::Image::GetSourceSize() const { - Size source_size; if (bitmap_) { auto bitmap_size = bitmap_->GetSize(); - source_size.width = bitmap_size.width; - source_size.height = bitmap_size.height; + return Size{ bitmap_size.width, bitmap_size.height }; } - return std::move(source_size); + return Size{}; } float easy2d::Image::GetCropX() const diff --git a/core/objects/Node.cpp b/core/objects/Node.cpp index 29f43318..de2e9ba8 100644 --- a/core/objects/Node.cpp +++ b/core/objects/Node.cpp @@ -379,7 +379,7 @@ float easy2d::Node::GetPivotY() const easy2d::Size easy2d::Node::GetSize() const { - return std::move(Size(GetWidth(), GetHeight())); + return Size{ GetWidth(), GetHeight() }; } float easy2d::Node::GetScaleX() const @@ -667,7 +667,7 @@ easy2d::Node::Nodes easy2d::Node::GetChildren(const std::wstring& name) const children.push_back(child); } } - return std::move(children); + return children; } easy2d::Node * easy2d::Node::GetChild(const std::wstring& name) const diff --git a/core/tools/File.cpp b/core/tools/File.cpp index e2d87e6b..d25a2a77 100644 --- a/core/tools/File.cpp +++ b/core/tools/File.cpp @@ -94,7 +94,7 @@ std::wstring easy2d::File::GetExtension() const // 转换为小写字母 std::transform(file_ext.begin(), file_ext.end(), file_ext.begin(), std::towlower); } - return std::move(file_ext); + return file_ext; } bool easy2d::File::Delete() @@ -118,7 +118,7 @@ easy2d::File easy2d::File::Extract(Resource& res, const std::wstring& dest_file_ ); if (file_handle == INVALID_HANDLE_VALUE) - return std::move(file); + return file; if (res.Load()) { @@ -135,7 +135,7 @@ easy2d::File easy2d::File::Extract(Resource& res, const std::wstring& dest_file_ ::DeleteFile(dest_file_name.c_str()); } - return std::move(file); + return file; } void easy2d::File::AddSearchPath(const std::wstring & path) @@ -218,7 +218,7 @@ easy2d::File easy2d::File::ShowOpenDialog(const std::wstring & title, const std: } ::CoUninitialize(); } - return std::move(File(file_path)); + return File(file_path); } easy2d::File easy2d::File::ShowSaveDialog(const std::wstring & title, const std::wstring& def_file, const std::wstring & def_ext) @@ -288,5 +288,5 @@ easy2d::File easy2d::File::ShowSaveDialog(const std::wstring & title, const std: } ::CoUninitialize(); } - return std::move(File(file_path)); + return File(file_path); } diff --git a/core/utils/Color.cpp b/core/utils/Color.cpp index df4b79dc..b697ac7b 100644 --- a/core/utils/Color.cpp +++ b/core/utils/Color.cpp @@ -78,6 +78,5 @@ easy2d::Color::Color(const D2D1_COLOR_F& color) easy2d::Color::operator D2D1_COLOR_F() const { - D2D1::ColorF color_f(r, g, b, a); - return std::move(color_f); + return D2D1::ColorF(r, g, b, a); } diff --git a/core/utils/Duration.cpp b/core/utils/Duration.cpp index 75c5a256..ac396a09 100644 --- a/core/utils/Duration.cpp +++ b/core/utils/Duration.cpp @@ -77,10 +77,10 @@ easy2d::Duration easy2d::Duration::Parse(const std::wstring & str) if (!std::regex_match(str, regex)) { E2D_WARNING("Duration::Parse: invalid duration"); - return std::move(Duration{}); + return d; } - if (str.empty() || str == L"0") { return std::move(Duration{}); } + if (str.empty() || str == L"0") { return d; } // 符号位 if (str[0] == L'-' || str[0] == L'+') @@ -108,7 +108,7 @@ easy2d::Duration easy2d::Duration::Parse(const std::wstring & str) if (num_str.empty() || num_str == L".") { E2D_WARNING("Duration::Parse: invalid duration"); - return std::move(Duration{}); + return Duration(); } // 单位 @@ -127,7 +127,7 @@ easy2d::Duration easy2d::Duration::Parse(const std::wstring & str) if (unit_map.find(unit_str) == unit_map.end()) { E2D_WARNING("Duration::Parse: invalid duration"); - return std::move(Duration{}); + return Duration(); } double num = std::stod(num_str); @@ -139,7 +139,7 @@ easy2d::Duration easy2d::Duration::Parse(const std::wstring & str) { d.milliseconds_ = -d.milliseconds_; } - return std::move(d); + return d; } bool easy2d::Duration::operator==(const Duration & other) const @@ -172,71 +172,58 @@ bool easy2d::Duration::operator<=(const Duration & other) const return milliseconds_ <= other.milliseconds_; } -easy2d::Duration easy2d::Duration::operator+(Duration const & other) const +easy2d::Duration easy2d::Duration::operator+(const Duration & other) const { - Duration d(milliseconds_ + other.milliseconds_); - return std::move(d); + return Duration(milliseconds_ + other.milliseconds_); } -easy2d::Duration easy2d::Duration::operator-(Duration const & other) const +easy2d::Duration easy2d::Duration::operator-(const Duration & other) const { - Duration d(milliseconds_ - other.milliseconds_); - return std::move(d); + return Duration(milliseconds_ - other.milliseconds_); } easy2d::Duration easy2d::Duration::operator-() const { - Duration d(-milliseconds_); - return std::move(d); + return Duration(-milliseconds_); } easy2d::Duration easy2d::Duration::operator*(int value) const { - Duration d(milliseconds_ * value); - return std::move(d); + return Duration(milliseconds_ * value); } easy2d::Duration easy2d::Duration::operator/(int value) const { - Duration d(milliseconds_ / value); - return std::move(d); + return Duration(milliseconds_ / value); } easy2d::Duration easy2d::Duration::operator*(float value) const { - int ms = static_cast(milliseconds_ * value); - Duration d(ms); - return std::move(d); + return Duration(static_cast(milliseconds_ * value)); } easy2d::Duration easy2d::Duration::operator/(float value) const { - int ms = static_cast(milliseconds_ / value); - Duration d(ms); - return std::move(d); + return Duration(static_cast(milliseconds_ / value)); } easy2d::Duration easy2d::Duration::operator*(double value) const { - int ms = static_cast(milliseconds_ * value); - Duration d(ms); - return std::move(d); + return Duration(static_cast(milliseconds_ * value)); } easy2d::Duration easy2d::Duration::operator/(double value) const { - int ms = static_cast(milliseconds_ / value); - Duration d(ms); - return std::move(d); + return Duration(static_cast(milliseconds_ / value)); } -easy2d::Duration & easy2d::Duration::operator+=(Duration const &other) +easy2d::Duration & easy2d::Duration::operator+=(const Duration &other) { milliseconds_ += other.milliseconds_; return (*this); } -easy2d::Duration & easy2d::Duration::operator-=(Duration const &other) +easy2d::Duration & easy2d::Duration::operator-=(const Duration &other) { milliseconds_ -= other.milliseconds_; return (*this); @@ -280,30 +267,30 @@ easy2d::Duration & easy2d::Duration::operator/=(double value) easy2d::Duration easy2d::operator*(int value, const Duration & dur) { - return std::move(dur * value); + return dur * value; } easy2d::Duration easy2d::operator/(int value, const Duration & dur) { - return std::move(dur / value); + return dur / value; } easy2d::Duration easy2d::operator*(float value, const Duration & dur) { - return std::move(dur * value); + return dur * value; } easy2d::Duration easy2d::operator/(float value, const Duration & dur) { - return std::move(dur / value); + return dur / value; } easy2d::Duration easy2d::operator*(double value, const Duration & dur) { - return std::move(dur * value); + return dur * value; } easy2d::Duration easy2d::operator/(double value, const Duration & dur) { - return std::move(dur / value); + return dur / value; } diff --git a/core/utils/Time.cpp b/core/utils/Time.cpp index 78fd4fba..615d0397 100644 --- a/core/utils/Time.cpp +++ b/core/utils/Time.cpp @@ -27,6 +27,21 @@ easy2d::Time::Time() { } +easy2d::Time::Time(std::chrono::steady_clock::time_point time) + : time_(time) +{ +} + +easy2d::Time::Time(const Time & other) + : time_(other.time_) +{ +} + +easy2d::Time::Time(Time && other) + : time_(std::move(other.time_)) +{ +} + time_t easy2d::Time::GetTimeStamp() const { auto& duration = time_point_cast(time_).time_since_epoch(); @@ -38,42 +53,53 @@ bool easy2d::Time::IsZero() const return time_.time_since_epoch().count() == 0LL; } -easy2d::Time easy2d::Time::operator+(Duration const & other) const +easy2d::Time easy2d::Time::operator+(const Duration & other) const { - Time t; - t.time_ = time_ + milliseconds(other.Milliseconds()); - return std::move(t); + return Time(time_ + milliseconds(other.Milliseconds())); } -easy2d::Time easy2d::Time::operator-(Duration const & other) const +easy2d::Time easy2d::Time::operator-(const Duration & other) const { - Time t; - t.time_ = time_ - milliseconds(other.Milliseconds()); - return std::move(t); + return Time(time_ - milliseconds(other.Milliseconds())); } -easy2d::Time & easy2d::Time::operator+=(Duration const & other) +easy2d::Time & easy2d::Time::operator+=(const Duration & other) { time_ += milliseconds(other.Milliseconds()); return (*this); } -easy2d::Time & easy2d::Time::operator-=(Duration const &other) +easy2d::Time & easy2d::Time::operator-=(const Duration &other) { time_ -= milliseconds(other.Milliseconds()); return (*this); } -easy2d::Duration easy2d::Time::operator-(Time const & other) const +easy2d::Duration easy2d::Time::operator-(const Time & other) const { auto ms = duration_cast(time_ - other.time_).count(); - Duration d(static_cast(ms)); - return std::move(d); + return Duration(static_cast(ms)); +} + +easy2d::Time& easy2d::Time::operator=(const Time & other) E2D_NOEXCEPT +{ + if (this == &other) + return *this; + + time_ = other.time_; + return *this; +} + +easy2d::Time& easy2d::Time::operator=(Time && other) E2D_NOEXCEPT +{ + if (this == &other) + return *this; + + time_ = std::move(other.time_); + return *this; } easy2d::Time easy2d::Time::Now() { - Time t; - t.time_ = steady_clock::now(); - return std::move(t); + return Time(steady_clock::now()); } diff --git a/core/utils/Transform.cpp b/core/utils/Transform.cpp index 5f6c2f00..b62e8a67 100644 --- a/core/utils/Transform.cpp +++ b/core/utils/Transform.cpp @@ -52,7 +52,7 @@ easy2d::Transform::operator D2D1::Matrix3x2F() const position.x - pivot.x, position.y - pivot.y ); - return std::move(matrix); + return matrix; } bool easy2d::Transform::operator==(const Transform & other) const