From 58d37d4cad5289a560d9a99738a37398ecb01d7d Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Wed, 8 Aug 2018 15:52:49 +0200 Subject: [PATCH 1/3] improve debian support --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a87b95a..0341544 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,8 @@ if (WIN32 AND NOT UNIX) else(WIN32 AND NOT UNIX) set(CPACK_SOURCE_GENERATOR "TBZ2") set(CPACK_GENERATOR "RPM;DEB") + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64) + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5printsupport5 (>= 5.4), libjsoncpp1, libusb-1.0") set(CPACK_STRIP_FILES "bin/kima2") set(CPACK_SOURCE_STRIP_FILES "") install(FILES ${CMAKE_SOURCE_DIR}/misc/kima2.desktop DESTINATION share/applications) From c4f2a99572ebaf661b4e6a3de622057f6487f1b5 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Wed, 8 Aug 2018 15:55:11 +0200 Subject: [PATCH 2/3] ? --- .vscode/settings.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index ae7faf9..0b81f37 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -64,7 +64,8 @@ "cinttypes": "cpp", "condition_variable": "cpp", "mutex": "cpp", - "hash_map": "cpp" + "hash_map": "cpp", + "future": "cpp" }, "C_Cpp.clang_format_path": "/usr/bin/clang-format", "cmake.configureOnOpen": true, From e8db619e631a5791fb6cd259754d1ad223504f48 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Wed, 8 Aug 2018 15:55:35 +0200 Subject: [PATCH 3/3] test --- src/core/utils.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++-- src/core/utils.h | 9 +++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/core/utils.cpp b/src/core/utils.cpp index da33ada..95930c0 100644 --- a/src/core/utils.cpp +++ b/src/core/utils.cpp @@ -13,9 +13,52 @@ std::string formatCentAsEuroString(const int cent, int width) currStream << std::right << std::setw(width) << std::showbase << std::put_money(cent, false); } catch (std::runtime_error& err) { - currStream << std::fixed << std::setw(width >= 4 ? width - 4 : width) << std::setprecision(2) << cent / 100.0L - << " €"; + currStream << std::fixed << std::setw(width >= 4 ? width - 4 : width) + << std::setprecision(2) << cent / 100.0L << " €"; } return currStream.str(); } + +#ifdef _WIN32 +// UTF-16 -> UTF-8 conversion +const std::string convert_to_utf8(const std::wstring& utf16_string) +{ + // get length + int length = + WideCharToMultiByte(CP_UTF8, 0, utf16_string.c_str(), static_cast(utf16_string.size()), + nullptr, 0, nullptr, nullptr); + if (!(length > 0)) + return std::string(); + else { + string result; + result.resize(static_cast(length)); + + if (WideCharToMultiByte(CP_UTF8, 0, utf16_string.c_str(), + static_cast(utf16_string.size()), &result[0], + static_cast(result.size()), nullptr, nullptr) == 0) + throw error("Failure to execute convert_to_utf8: call to WideCharToMultiByte failed."); + else + return result; + } +} +// UTF-8 -> UTF-16 conversion +const std::wstring convert_to_utf16(const std::string& utf8_string) +{ + // get length + int length = MultiByteToWideChar(CP_UTF8, 0, utf8_string.c_str(), static_cast(utf8_string.size()), nullptr, 0); + if(!(length > 0)) + return std::wstring(); + else + { + wstring result; + result.resize(static_cast(length)); + + if(MultiByteToWideChar(CP_UTF8, 0, utf8_string.c_str(), static_cast(utf8_string.size()), + &result[0], static_cast(result.size())) == 0 ) + throw error("Failure to execute convert_to_utf16: call to MultiByteToWideChar failed."); + else + return result; + } +} +#endif \ No newline at end of file diff --git a/src/core/utils.h b/src/core/utils.h index a2adb20..565a257 100644 --- a/src/core/utils.h +++ b/src/core/utils.h @@ -3,6 +3,15 @@ #include +#ifdef _WIN32 +#include +#endif + std::string formatCentAsEuroString(const int cent, int width = 10); +#ifdef __WIN32 +const std::string convert_to_utf8(const std::wstring& utf16_string); +const std::wstring convert_to_utf16(const std::string& utf8_string); +#endif + #endif \ No newline at end of file