aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-04-02 22:20:59 +0800
committercrupest <crupest@outlook.com>2019-04-02 22:20:59 +0800
commitd732b99cd1436144d4625382954eb4a1cf832a1f (patch)
tree7de3464c06b0ebdb613807ac67c7cd3dda2bb4ac
parentec201783e4b4733770648c2f92c3ffb9629bb7f7 (diff)
downloadcru-d732b99cd1436144d4625382954eb4a1cf832a1f.tar.gz
cru-d732b99cd1436144d4625382954eb4a1cf832a1f.tar.bz2
cru-d732b99cd1436144d4625382954eb4a1cf832a1f.zip
...
-rw-r--r--include/cru/platform/win/win_font.hpp2
-rw-r--r--src/platform_win/win_font.cpp16
2 files changed, 17 insertions, 1 deletions
diff --git a/include/cru/platform/win/win_font.hpp b/include/cru/platform/win/win_font.hpp
index 69eebdfb..f03ff3c8 100644
--- a/include/cru/platform/win/win_font.hpp
+++ b/include/cru/platform/win/win_font.hpp
@@ -11,7 +11,7 @@ class GraphManager;
class WinFontDescriptor : public Object, public virtual FontDescriptor {
public:
explicit WinFontDescriptor(GraphManager* graph_manager,
- const std::wstring_view& font_family);
+ const std::wstring_view& font_family, float font_size);
WinFontDescriptor(const WinFontDescriptor& other) = delete;
WinFontDescriptor(WinFontDescriptor&& other) = delete;
WinFontDescriptor& operator=(const WinFontDescriptor& other) = delete;
diff --git a/src/platform_win/win_font.cpp b/src/platform_win/win_font.cpp
index ddc42556..e0a309cc 100644
--- a/src/platform_win/win_font.cpp
+++ b/src/platform_win/win_font.cpp
@@ -1,6 +1,22 @@
#include "cru/platform/win/win_font.hpp"
+#include "cru/platform/win/exception.hpp"
+#include "cru/platform/win/graph_manager.hpp"
+
+#include <array>
#include <utility>
namespace cru::platform::win {
+WinFontDescriptor::WinFontDescriptor(GraphManager* graph_manager,
+ const std::wstring_view& font_family,
+ float font_size) {
+ std::array<wchar_t, LOCALE_NAME_MAX_LENGTH> buffer;
+ if (!::GetUserDefaultLocaleName(buffer.data(), buffer.size()))
+ throw Win32Error(::GetLastError(), "Failed to get locale.");
+
+ ThrowIfFailed(graph_manager->GetDWriteFactory()->CreateTextFormat(
+ font_family.data(), nullptr, DWRITE_FONT_WEIGHT_NORMAL,
+ DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, font_size,
+ buffer.data(), &text_format_));
+}
} // namespace cru::platform::win