aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-04-04 17:12:25 +0800
committercrupest <crupest@outlook.com>2019-04-04 17:12:25 +0800
commita410e2048db6f5ef6fb50e401a59b4b98b979050 (patch)
tree500680c63b074e8c3eefd756fd6a1d0f41840c1a /include/cru/platform
parentfcaf471275a67d718887430ee63a53890915c4c7 (diff)
downloadcru-a410e2048db6f5ef6fb50e401a59b4b98b979050.tar.gz
cru-a410e2048db6f5ef6fb50e401a59b4b98b979050.tar.bz2
cru-a410e2048db6f5ef6fb50e401a59b4b98b979050.zip
...
Diffstat (limited to 'include/cru/platform')
-rw-r--r--include/cru/platform/painter.hpp5
-rw-r--r--include/cru/platform/text_layout.hpp10
-rw-r--r--include/cru/platform/win/win_painter.hpp5
-rw-r--r--include/cru/platform/win/win_pre_config.hpp1
-rw-r--r--include/cru/platform/win/win_text_layout.hpp2
5 files changed, 21 insertions, 2 deletions
diff --git a/include/cru/platform/painter.hpp b/include/cru/platform/painter.hpp
index 2e979184..7310bc5c 100644
--- a/include/cru/platform/painter.hpp
+++ b/include/cru/platform/painter.hpp
@@ -7,13 +7,18 @@
namespace cru::platform {
struct Brush;
struct Geometry;
+struct TextLayout;
struct Painter : virtual Interface {
virtual Matrix GetTransform() = 0;
virtual void SetTransform(const Matrix& matrix) = 0;
+ virtual void StrokeRectangle(const ui::Rect& rectangle, Brush* brush,
+ float width) = 0;
+ virtual void FillRectangle(const ui::Rect& rectangle, Brush* brush) = 0;
virtual void StrokeGeometry(Geometry* geometry, Brush* brush,
float width) = 0;
virtual void FillGeometry(Geometry* geometry, Brush* brush) = 0;
+ virtual void DrawText(const ui::Point& offset, TextLayout* text_layout, Brush* brush);
virtual void EndDraw() = 0;
virtual bool IsDisposed() = 0;
};
diff --git a/include/cru/platform/text_layout.hpp b/include/cru/platform/text_layout.hpp
index 7bcf01fe..e43adfde 100644
--- a/include/cru/platform/text_layout.hpp
+++ b/include/cru/platform/text_layout.hpp
@@ -3,16 +3,22 @@
#include "cru/common/ui_base.hpp"
-#include <vector>
+#include <memory>
#include <string>
+#include <vector>
namespace cru::platform {
+struct FontDescriptor;
+
struct TextLayout : virtual Interface {
virtual std::wstring GetText() = 0;
virtual void SetText(std::wstring new_text) = 0;
+ virtual std::shared_ptr<FontDescriptor> GetFont() = 0;
+ virtual void SetFont(std::shared_ptr<FontDescriptor> font) = 0;
virtual void SetMaxWidth(float max_width) = 0;
virtual void SetMaxHeight(float max_height) = 0;
virtual ui::Rect GetTextBounds() = 0;
- virtual std::vector<ui::Rect> TextRangeRect(const ui::TextRange& text_range) = 0;
+ virtual std::vector<ui::Rect> TextRangeRect(
+ const ui::TextRange& text_range) = 0;
};
} // namespace cru::platform
diff --git a/include/cru/platform/win/win_painter.hpp b/include/cru/platform/win/win_painter.hpp
index 1e449d85..dfb981d5 100644
--- a/include/cru/platform/win/win_painter.hpp
+++ b/include/cru/platform/win/win_painter.hpp
@@ -17,8 +17,13 @@ class WinPainter : public Object, public virtual Painter {
Matrix GetTransform() override;
void SetTransform(const Matrix& matrix) override;
+ void StrokeRectangle(const ui::Rect& rectangle, Brush* brush,
+ float width) override;
+ void FillRectangle(const ui::Rect& rectangle, Brush* brush) override;
void StrokeGeometry(Geometry* geometry, Brush* brush, float width) override;
void FillGeometry(Geometry* geometry, Brush* brush) override;
+ void DrawText(const ui::Point& offset, TextLayout* text_layout,
+ Brush* brush) override;
void EndDraw() override;
bool IsDisposed() override { return is_disposed; }
diff --git a/include/cru/platform/win/win_pre_config.hpp b/include/cru/platform/win/win_pre_config.hpp
index d6ba4ec7..6962eb7b 100644
--- a/include/cru/platform/win/win_pre_config.hpp
+++ b/include/cru/platform/win/win_pre_config.hpp
@@ -4,6 +4,7 @@
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#undef CreateWindow
+#undef DrawText
#include <d2d1_2.h>
#include <d3d11.h>
diff --git a/include/cru/platform/win/win_text_layout.hpp b/include/cru/platform/win/win_text_layout.hpp
index 277bbcae..9c93aa8c 100644
--- a/include/cru/platform/win/win_text_layout.hpp
+++ b/include/cru/platform/win/win_text_layout.hpp
@@ -21,6 +21,8 @@ class WinTextLayout : public Object, public virtual TextLayout {
std::wstring GetText() override;
void SetText(std::wstring new_text) override;
+ std::shared_ptr<FontDescriptor> GetFont();
+ void SetFont(std::shared_ptr<FontDescriptor> font);
void SetMaxWidth(float max_width) override;
void SetMaxHeight(float max_height) override;
ui::Rect GetTextBounds() override;