aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/cru/common/String.hpp14
-rw-r--r--include/cru/common/StringUtil.hpp2
-rw-r--r--include/cru/platform/graphics/NullPainter.hpp51
-rw-r--r--include/cru/win/graphics/direct/Brush.hpp4
-rw-r--r--include/cru/win/graphics/direct/Factory.hpp15
-rw-r--r--include/cru/win/graphics/direct/Font.hpp6
-rw-r--r--include/cru/win/graphics/direct/Geometry.hpp8
-rw-r--r--include/cru/win/graphics/direct/Resource.hpp20
-rw-r--r--include/cru/win/graphics/direct/TextLayout.hpp22
-rw-r--r--include/cru/win/graphics/direct/WindowRenderTarget.hpp6
-rw-r--r--include/cru/win/gui/GodWindow.hpp1
-rw-r--r--include/cru/win/gui/InputMethod.hpp2
-rw-r--r--include/cru/win/gui/UiApplication.hpp10
-rw-r--r--include/cru/win/gui/Window.hpp3
-rw-r--r--src/common/String.cpp4
-rw-r--r--src/common/StringUtil.cpp2
-rw-r--r--src/win/Exception.cpp1
-rw-r--r--src/win/HeapDebug.cpp4
-rw-r--r--src/win/graphics/direct/Brush.cpp4
-rw-r--r--src/win/graphics/direct/Factory.cpp20
-rw-r--r--src/win/graphics/direct/Font.cpp4
-rw-r--r--src/win/graphics/direct/Geometry.cpp8
-rw-r--r--src/win/graphics/direct/Resource.cpp6
-rw-r--r--src/win/graphics/direct/TextLayout.cpp20
-rw-r--r--src/win/graphics/direct/WindowRenderTarget.cpp2
-rw-r--r--src/win/gui/UiApplication.cpp4
26 files changed, 137 insertions, 106 deletions
diff --git a/include/cru/common/String.hpp b/include/cru/common/String.hpp
index 8acb6a87..88dd06f0 100644
--- a/include/cru/common/String.hpp
+++ b/include/cru/common/String.hpp
@@ -328,16 +328,16 @@ std::enable_if_t<std::is_integral_v<T>, String> ToString(T value) {
auto result =
std::to_chars(buffer.data(), buffer.data() + buffer.size(), value);
+ if (result.ec == std::errc{}) {
+ } else {
+ throw std::invalid_argument("Failed to convert value to chars.");
+ }
+
auto size = result.ptr - buffer.data();
auto b = new char16_t[size + 1];
b[size] = 0;
std::copy(buffer.data(), result.ptr, b);
return String::FromBuffer(b, size, size);
-
- if (result.ec == std::errc{}) {
- } else {
- throw std::invalid_argument("Failed to convert value to chars.");
- }
}
template <typename T>
@@ -346,7 +346,7 @@ std::enable_if_t<std::is_floating_point_v<T>, String> ToString(T value) {
return String(str.cbegin(), str.cend());
}
-inline String ToString(String value) { return std::move(value); }
+inline String ToString(String value) { return value; }
namespace details {
enum class FormatTokenType { PlaceHolder, Text };
@@ -366,7 +366,7 @@ template <typename TA, typename... T>
void FormatAppendFromFormatTokenList(
String& current, const std::vector<FormatToken>& format_token_list,
Index index, TA&& args0, T&&... args) {
- for (Index i = index; i < format_token_list.size(); i++) {
+ for (Index i = index; i < static_cast<Index>(format_token_list.size()); i++) {
const auto& token = format_token_list[i];
if (token.type == FormatTokenType::PlaceHolder) {
current += ToString(std::forward<TA>(args0));
diff --git a/include/cru/common/StringUtil.hpp b/include/cru/common/StringUtil.hpp
index a0cb6b0b..27ad4b43 100644
--- a/include/cru/common/StringUtil.hpp
+++ b/include/cru/common/StringUtil.hpp
@@ -49,7 +49,7 @@ class CodePointIterator {
struct past_end_tag_t {};
explicit CodePointIterator(const CharType* ptr, Index size, Index current = 0)
- : ptr_(ptr), size_(size), position_(0) {}
+ : ptr_(ptr), size_(size), position_(current) {}
explicit CodePointIterator(const CharType* ptr, Index size, past_end_tag_t)
: ptr_(ptr), size_(size), position_(size) {}
diff --git a/include/cru/platform/graphics/NullPainter.hpp b/include/cru/platform/graphics/NullPainter.hpp
index cf790ccf..5586120b 100644
--- a/include/cru/platform/graphics/NullPainter.hpp
+++ b/include/cru/platform/graphics/NullPainter.hpp
@@ -1,5 +1,6 @@
#pragma once
#include "Painter.hpp"
+#include "cru/common/Base.hpp"
namespace cru::platform::graphics {
class NullPainter : public Object, public virtual IPainter {
@@ -17,30 +18,56 @@ class NullPainter : public Object, public virtual IPainter {
String GetDebugString() override { return u"NullPainter"; }
Matrix GetTransform() override { return Matrix(); }
- void SetTransform(const Matrix& matrix) override {}
+ void SetTransform(const Matrix& matrix) override { CRU_UNUSED(matrix) }
- void ConcatTransform(const Matrix& matrix) override {}
+ void ConcatTransform(const Matrix& matrix) override { CRU_UNUSED(matrix) }
- void Clear(const Color& color) override {}
+ void Clear(const Color& color) override { CRU_UNUSED(color) }
void DrawLine(const Point& start, const Point& end, IBrush* brush,
- float width) override{};
+ float width) override {
+ CRU_UNUSED(start) CRU_UNUSED(end) CRU_UNUSED(brush) CRU_UNUSED(width)
+ }
void StrokeRectangle(const Rect& rectangle, IBrush* brush,
- float width) override {}
- void FillRectangle(const Rect& rectangle, IBrush* brush) override {}
+ float width) override {
+ CRU_UNUSED(rectangle) CRU_UNUSED(brush) CRU_UNUSED(width)
+ }
+ void FillRectangle(const Rect& rectangle, IBrush* brush) override {
+ CRU_UNUSED(rectangle)
+ CRU_UNUSED(brush)
+ }
void StrokeEllipse(const Rect& outline_rect, IBrush* brush,
- float width) override {}
+ float width) override {
+ CRU_UNUSED(outline_rect)
+ CRU_UNUSED(brush)
+ CRU_UNUSED(width)
+ }
void FillEllipse(const Rect& outline_rect, IBrush* brush,
- float width) override {}
+ float width) override {
+ CRU_UNUSED(outline_rect)
+ CRU_UNUSED(brush)
+ CRU_UNUSED(width)
+ }
void StrokeGeometry(IGeometry* geometry, IBrush* brush,
- float width) override {}
- void FillGeometry(IGeometry* geometry, IBrush* brush) override {}
+ float width) override {
+ CRU_UNUSED(geometry)
+ CRU_UNUSED(brush)
+ CRU_UNUSED(width)
+ }
+ void FillGeometry(IGeometry* geometry, IBrush* brush) override {
+ CRU_UNUSED(geometry)
+ CRU_UNUSED(brush)
+ }
void DrawText(const Point& offset, ITextLayout* text_layout,
- IBrush* brush) override {}
+ IBrush* brush) override {
+ CRU_UNUSED(offset)
+ CRU_UNUSED(text_layout)
+ CRU_UNUSED(brush)
+ }
- void PushLayer(const Rect& bounds) override{};
+ void PushLayer(const Rect& bounds) override { CRU_UNUSED(bounds) }
void PopLayer() override {}
diff --git a/include/cru/win/graphics/direct/Brush.hpp b/include/cru/win/graphics/direct/Brush.hpp
index fbff83b5..9d8e5384 100644
--- a/include/cru/win/graphics/direct/Brush.hpp
+++ b/include/cru/win/graphics/direct/Brush.hpp
@@ -9,12 +9,12 @@ struct ID2DBrush : virtual IBrush {
virtual ID2D1Brush* GetD2DBrushInterface() const = 0;
};
-class D2DSolidColorBrush : public DirectGraphResource,
+class D2DSolidColorBrush : public DirectGraphicsResource,
public virtual ISolidColorBrush,
public virtual ID2DBrush,
public virtual IComResource<ID2D1SolidColorBrush> {
public:
- explicit D2DSolidColorBrush(DirectGraphFactory* factory);
+ explicit D2DSolidColorBrush(DirectGraphicsFactory* factory);
CRU_DELETE_COPY(D2DSolidColorBrush)
CRU_DELETE_MOVE(D2DSolidColorBrush)
diff --git a/include/cru/win/graphics/direct/Factory.hpp b/include/cru/win/graphics/direct/Factory.hpp
index 70f3ede1..efcebba7 100644
--- a/include/cru/win/graphics/direct/Factory.hpp
+++ b/include/cru/win/graphics/direct/Factory.hpp
@@ -4,14 +4,15 @@
#include "cru/platform/graphics/Factory.hpp"
namespace cru::platform::graphics::win::direct {
-class DirectGraphFactory : public DirectResource, public virtual IGraphFactory {
+class DirectGraphicsFactory : public DirectResource,
+ public virtual IGraphicsFactory {
public:
- DirectGraphFactory();
+ DirectGraphicsFactory();
- CRU_DELETE_COPY(DirectGraphFactory)
- CRU_DELETE_MOVE(DirectGraphFactory)
+ CRU_DELETE_COPY(DirectGraphicsFactory)
+ CRU_DELETE_MOVE(DirectGraphicsFactory)
- ~DirectGraphFactory() override;
+ ~DirectGraphicsFactory() override;
public:
ID3D11Device* GetD3D11Device() const { return d3d11_device_.Get(); }
@@ -38,11 +39,11 @@ class DirectGraphFactory : public DirectResource, public virtual IGraphFactory {
std::unique_ptr<IGeometryBuilder> CreateGeometryBuilder() override;
- std::unique_ptr<IFont> CreateFont(std::u16string font_family,
+ std::unique_ptr<IFont> CreateFont(String font_family,
float font_size) override;
std::unique_ptr<ITextLayout> CreateTextLayout(std::shared_ptr<IFont> font,
- std::u16string text) override;
+ String text) override;
private:
Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device_;
diff --git a/include/cru/win/graphics/direct/Font.hpp b/include/cru/win/graphics/direct/Font.hpp
index fd3921a3..3cd94f82 100644
--- a/include/cru/win/graphics/direct/Font.hpp
+++ b/include/cru/win/graphics/direct/Font.hpp
@@ -7,11 +7,11 @@
#include <string_view>
namespace cru::platform::graphics::win::direct {
-class DWriteFont : public DirectGraphResource,
+class DWriteFont : public DirectGraphicsResource,
public virtual IFont,
public virtual IComResource<IDWriteTextFormat> {
public:
- DWriteFont(DirectGraphFactory* factory, std::u16string font_family,
+ DWriteFont(DirectGraphicsFactory* factory, String font_family,
float font_size);
CRU_DELETE_COPY(DWriteFont)
@@ -27,7 +27,7 @@ class DWriteFont : public DirectGraphResource,
float GetFontSize() override;
private:
- std::u16string font_family_;
+ String font_family_;
Microsoft::WRL::ComPtr<IDWriteTextFormat> text_format_;
};
} // namespace cru::platform::graphics::win::direct
diff --git a/include/cru/win/graphics/direct/Geometry.hpp b/include/cru/win/graphics/direct/Geometry.hpp
index edfec590..b3b82f9c 100644
--- a/include/cru/win/graphics/direct/Geometry.hpp
+++ b/include/cru/win/graphics/direct/Geometry.hpp
@@ -5,10 +5,10 @@
#include "cru/platform/graphics/Geometry.hpp"
namespace cru::platform::graphics::win::direct {
-class D2DGeometryBuilder : public DirectGraphResource,
+class D2DGeometryBuilder : public DirectGraphicsResource,
public virtual IGeometryBuilder {
public:
- explicit D2DGeometryBuilder(DirectGraphFactory* factory);
+ explicit D2DGeometryBuilder(DirectGraphicsFactory* factory);
CRU_DELETE_COPY(D2DGeometryBuilder)
CRU_DELETE_MOVE(D2DGeometryBuilder)
@@ -33,11 +33,11 @@ class D2DGeometryBuilder : public DirectGraphResource,
Microsoft::WRL::ComPtr<ID2D1GeometrySink> geometry_sink_;
};
-class D2DGeometry : public DirectGraphResource,
+class D2DGeometry : public DirectGraphicsResource,
public virtual IGeometry,
public IComResource<ID2D1Geometry> {
public:
- D2DGeometry(DirectGraphFactory* factory,
+ D2DGeometry(DirectGraphicsFactory* factory,
Microsoft::WRL::ComPtr<ID2D1PathGeometry> geometry);
CRU_DELETE_COPY(D2DGeometry)
diff --git a/include/cru/win/graphics/direct/Resource.hpp b/include/cru/win/graphics/direct/Resource.hpp
index e6ffb203..c376628d 100644
--- a/include/cru/win/graphics/direct/Resource.hpp
+++ b/include/cru/win/graphics/direct/Resource.hpp
@@ -6,7 +6,7 @@
#include <string_view>
namespace cru::platform::graphics::win::direct {
-class DirectGraphFactory;
+class DirectGraphicsFactory;
class DirectResource : public Object, public virtual IPlatformResource {
public:
@@ -25,25 +25,25 @@ class DirectResource : public Object, public virtual IPlatformResource {
String GetPlatformId() const final { return kPlatformId; }
};
-class DirectGraphResource : public DirectResource,
- public virtual IGraphResource {
+class DirectGraphicsResource : public DirectResource,
+ public virtual IGraphicsResource {
protected:
// Param factory can't be null.
- explicit DirectGraphResource(DirectGraphFactory* factory);
+ explicit DirectGraphicsResource(DirectGraphicsFactory* factory);
public:
- CRU_DELETE_COPY(DirectGraphResource)
- CRU_DELETE_MOVE(DirectGraphResource)
+ CRU_DELETE_COPY(DirectGraphicsResource)
+ CRU_DELETE_MOVE(DirectGraphicsResource)
- ~DirectGraphResource() override = default;
+ ~DirectGraphicsResource() override = default;
public:
- IGraphFactory* GetGraphFactory() final;
+ IGraphicsFactory* GetGraphicsFactory() final;
public:
- DirectGraphFactory* GetDirectFactory() const { return factory_; }
+ DirectGraphicsFactory* GetDirectFactory() const { return factory_; }
private:
- DirectGraphFactory* factory_;
+ DirectGraphicsFactory* factory_;
};
} // namespace cru::platform::graphics::win::direct
diff --git a/include/cru/win/graphics/direct/TextLayout.hpp b/include/cru/win/graphics/direct/TextLayout.hpp
index aa040278..1ac56a9d 100644
--- a/include/cru/win/graphics/direct/TextLayout.hpp
+++ b/include/cru/win/graphics/direct/TextLayout.hpp
@@ -10,12 +10,12 @@
namespace cru::platform::graphics::win::direct {
class DWriteFont;
-class DWriteTextLayout : public DirectGraphResource,
+class DWriteTextLayout : public DirectGraphicsResource,
public virtual ITextLayout,
public virtual IComResource<IDWriteTextLayout> {
public:
- DWriteTextLayout(DirectGraphFactory* factory, std::shared_ptr<IFont> font,
- std::u16string text);
+ DWriteTextLayout(DirectGraphicsFactory* factory, std::shared_ptr<IFont> font,
+ String text);
CRU_DELETE_COPY(DWriteTextLayout)
CRU_DELETE_MOVE(DWriteTextLayout)
@@ -28,9 +28,8 @@ class DWriteTextLayout : public DirectGraphResource,
}
public:
- std::u16string GetText() override;
- std::u16string_view GetTextView() override;
- void SetText(std::u16string new_text) override;
+ String GetText() override;
+ void SetText(String new_text) override;
std::shared_ptr<IFont> GetFont() override;
void SetFont(std::shared_ptr<IFont> font) override;
@@ -38,15 +37,22 @@ class DWriteTextLayout : public DirectGraphResource,
void SetMaxWidth(float max_width) override;
void SetMaxHeight(float max_height) override;
+ bool IsEditMode() override;
+ void SetEditMode(bool enable) override;
+
+ Index GetLineIndexFromCharIndex(Index char_index) override;
+ float GetLineHeight(Index line_index) override;
+ Index GetLineCount() override;
+
Rect GetTextBounds(bool includingTrailingSpace = false) override;
// Return empty vector if text_range.count is 0. Text range could be in
// reverse direction, it should be normalized first in implementation.
std::vector<Rect> TextRangeRect(const TextRange& text_range) override;
- Point TextSinglePoint(Index position, bool trailing) override;
+ Rect TextSinglePoint(Index position, bool trailing) override;
TextHitTestResult HitTest(const Point& point) override;
private:
- std::u16string text_;
+ String text_;
std::shared_ptr<DWriteFont> font_;
float max_width_ = std::numeric_limits<float>::max();
float max_height_ = std::numeric_limits<float>::max();
diff --git a/include/cru/win/graphics/direct/WindowRenderTarget.hpp b/include/cru/win/graphics/direct/WindowRenderTarget.hpp
index 75b1bf20..c197841d 100644
--- a/include/cru/win/graphics/direct/WindowRenderTarget.hpp
+++ b/include/cru/win/graphics/direct/WindowRenderTarget.hpp
@@ -5,7 +5,7 @@ namespace cru::platform::graphics::win::direct {
// Represents a window render target.
class D2DWindowRenderTarget : public Object {
public:
- D2DWindowRenderTarget(gsl::not_null<DirectGraphFactory*> factory, HWND hwnd);
+ D2DWindowRenderTarget(gsl::not_null<DirectGraphicsFactory*> factory, HWND hwnd);
CRU_DELETE_COPY(D2DWindowRenderTarget)
CRU_DELETE_MOVE(D2DWindowRenderTarget)
@@ -13,7 +13,7 @@ class D2DWindowRenderTarget : public Object {
~D2DWindowRenderTarget() override = default;
public:
- graphics::win::direct::DirectGraphFactory* GetDirectFactory() const {
+ graphics::win::direct::DirectGraphicsFactory* GetDirectFactory() const {
return factory_;
}
@@ -33,7 +33,7 @@ class D2DWindowRenderTarget : public Object {
void CreateTargetBitmap();
private:
- DirectGraphFactory* factory_;
+ DirectGraphicsFactory* factory_;
HWND hwnd_;
Microsoft::WRL::ComPtr<ID2D1DeviceContext> d2d1_device_context_;
Microsoft::WRL::ComPtr<IDXGISwapChain1> dxgi_swap_chain_;
diff --git a/include/cru/win/gui/GodWindow.hpp b/include/cru/win/gui/GodWindow.hpp
index 0343b159..d9a128e6 100644
--- a/include/cru/win/gui/GodWindow.hpp
+++ b/include/cru/win/gui/GodWindow.hpp
@@ -3,6 +3,7 @@
#include "WindowNativeMessageEventArgs.hpp"
#include "cru/common/Event.hpp"
+#include "cru/common/String.hpp"
#include <memory>
diff --git a/include/cru/win/gui/InputMethod.hpp b/include/cru/win/gui/InputMethod.hpp
index 51a007d8..df687617 100644
--- a/include/cru/win/gui/InputMethod.hpp
+++ b/include/cru/win/gui/InputMethod.hpp
@@ -65,7 +65,7 @@ class WinInputMethodContext : public WinNativeResource,
IEvent<std::nullptr_t>* CompositionEvent() override;
- IEvent<std::u16string_view>* TextEvent() override;
+ IEvent<StringView>* TextEvent() override;
private:
void OnWindowNativeMessage(WindowNativeMessageEventArgs& args);
diff --git a/include/cru/win/gui/UiApplication.hpp b/include/cru/win/gui/UiApplication.hpp
index 4cf46858..daf72795 100644
--- a/include/cru/win/gui/UiApplication.hpp
+++ b/include/cru/win/gui/UiApplication.hpp
@@ -7,7 +7,7 @@
#include <memory>
namespace cru::platform::graphics::win::direct {
-class DirectGraphFactory;
+class DirectGraphicsFactory;
}
namespace cru::platform::gui::win {
@@ -41,11 +41,11 @@ class WinUiApplication : public WinNativeResource,
void CancelTimer(long long id) override;
std::vector<INativeWindow*> GetAllWindow() override;
- INativeWindow* CreateWindow(INativeWindow* parent, CreateWindowFlag flag) override;
+ INativeWindow* CreateWindow() override;
- cru::platform::graphics::IGraphFactory* GetGraphFactory() override;
+ cru::platform::graphics::IGraphicsFactory* GetGraphicsFactory() override;
- cru::platform::graphics::win::direct::DirectGraphFactory* GetDirectFactory() {
+ cru::platform::graphics::win::direct::DirectGraphicsFactory* GetDirectFactory() {
return graph_factory_.get();
}
@@ -60,7 +60,7 @@ class WinUiApplication : public WinNativeResource,
private:
HINSTANCE instance_handle_;
- std::unique_ptr<cru::platform::graphics::win::direct::DirectGraphFactory>
+ std::unique_ptr<cru::platform::graphics::win::direct::DirectGraphicsFactory>
graph_factory_;
std::unique_ptr<GodWindow> god_window_;
diff --git a/include/cru/win/gui/Window.hpp b/include/cru/win/gui/Window.hpp
index 97a74fa7..9f241b0a 100644
--- a/include/cru/win/gui/Window.hpp
+++ b/include/cru/win/gui/Window.hpp
@@ -2,7 +2,6 @@
#include "Resource.hpp"
#include "WindowNativeMessageEventArgs.hpp"
-#include "cru/platform/GraphBase.hpp"
#include "cru/platform/gui/Base.hpp"
#include "cru/platform/gui/Window.hpp"
#include "cru/win/graphics/direct/WindowRenderTarget.hpp"
@@ -27,8 +26,6 @@ class WinNativeWindow : public WinNativeResource, public virtual INativeWindow {
WinNativeWindow* GetParent() override { return parent_window_; }
- bool IsVisible() override;
- void SetVisible(bool is_visible) override;
Size GetClientSize() override;
void SetClientSize(const Size& size) override;
diff --git a/src/common/String.cpp b/src/common/String.cpp
index 1c2ff022..ca16cee7 100644
--- a/src/common/String.cpp
+++ b/src/common/String.cpp
@@ -45,7 +45,7 @@ String::String(std::initializer_list<char16_t> l)
#ifdef CRU_PLATFORM_WINDOWS
String::String(const wchar_t* str) : String(str, GetStrSize(str)) {}
String::String(const wchar_t* str, Index size)
- : String(reinterpret_cast<const std::uint16_t*>(str), size) {}
+ : String(reinterpret_cast<const char16_t*>(str), size) {}
#endif
String::String(const String& other) {
@@ -426,7 +426,7 @@ std::vector<FormatToken> ParseToFormatTokenList(const String& str) {
void FormatAppendFromFormatTokenList(
String& current, const std::vector<FormatToken>& format_token_list,
Index index) {
- for (Index i = index; i < format_token_list.size(); i++) {
+ for (Index i = index; i < static_cast<Index>(format_token_list.size()); i++) {
const auto& token = format_token_list[i];
if (token.type == FormatTokenType::PlaceHolder) {
current += u"{}";
diff --git a/src/common/StringUtil.cpp b/src/common/StringUtil.cpp
index 440db8c4..6e478033 100644
--- a/src/common/StringUtil.cpp
+++ b/src/common/StringUtil.cpp
@@ -113,6 +113,8 @@ CodePoint Utf16NextCodePoint(const char16_t* ptr, Index size, Index current,
CodePoint Utf16PreviousCodePoint(const char16_t* ptr, Index size, Index current,
Index* previous_position) {
+ CRU_UNUSED(size)
+
CodePoint result;
if (current <= 0) {
result = k_invalid_code_point;
diff --git a/src/win/Exception.cpp b/src/win/Exception.cpp
index df2103fd..a7b0927a 100644
--- a/src/win/Exception.cpp
+++ b/src/win/Exception.cpp
@@ -1,6 +1,5 @@
#include "cru/win/Exception.hpp"
-#include <fmt/format.h>
#include <optional>
namespace cru::platform::win {
diff --git a/src/win/HeapDebug.cpp b/src/win/HeapDebug.cpp
index 6ec1ffcc..b1b9fe1a 100644
--- a/src/win/HeapDebug.cpp
+++ b/src/win/HeapDebug.cpp
@@ -1,11 +1,9 @@
#include "cru/win/WinPreConfig.hpp"
-#include "cru/platform/HeapDebug.hpp"
-
#include <crtdbg.h>
namespace cru::platform {
void SetupHeapDebug() {
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
}
-}
+} // namespace cru::platform
diff --git a/src/win/graphics/direct/Brush.cpp b/src/win/graphics/direct/Brush.cpp
index b7842b97..eb6ea973 100644
--- a/src/win/graphics/direct/Brush.cpp
+++ b/src/win/graphics/direct/Brush.cpp
@@ -5,8 +5,8 @@
#include "cru/win/graphics/direct/Factory.hpp"
namespace cru::platform::graphics::win::direct {
-D2DSolidColorBrush::D2DSolidColorBrush(DirectGraphFactory* factory)
- : DirectGraphResource(factory) {
+D2DSolidColorBrush::D2DSolidColorBrush(DirectGraphicsFactory* factory)
+ : DirectGraphicsResource(factory) {
ThrowIfFailed(factory->GetDefaultD2D1DeviceContext()->CreateSolidColorBrush(
Convert(color_), &brush_));
}
diff --git a/src/win/graphics/direct/Factory.cpp b/src/win/graphics/direct/Factory.cpp
index 6694801f..4c4f1a9a 100644
--- a/src/win/graphics/direct/Factory.cpp
+++ b/src/win/graphics/direct/Factory.cpp
@@ -27,7 +27,7 @@ void InitializeCom() {
void UninitializeCom() { ::CoUninitialize(); }
} // namespace
-DirectGraphFactory::DirectGraphFactory() {
+DirectGraphicsFactory::DirectGraphicsFactory() {
// TODO! Detect repeated creation. Because I don't think we can create two d2d
// and dwrite factory so we need to prevent the "probably dangerous" behavior.
@@ -76,31 +76,33 @@ DirectGraphFactory::DirectGraphFactory() {
&dwrite_system_font_collection_));
}
-DirectGraphFactory::~DirectGraphFactory() { UninitializeCom(); }
+DirectGraphicsFactory::~DirectGraphicsFactory() { UninitializeCom(); }
Microsoft::WRL::ComPtr<ID2D1DeviceContext>
-DirectGraphFactory::CreateD2D1DeviceContext() {
+DirectGraphicsFactory::CreateD2D1DeviceContext() {
Microsoft::WRL::ComPtr<ID2D1DeviceContext> d2d1_device_context;
ThrowIfFailed(d2d1_device_->CreateDeviceContext(
D2D1_DEVICE_CONTEXT_OPTIONS_NONE, &d2d1_device_context));
return d2d1_device_context;
}
-std::unique_ptr<ISolidColorBrush> DirectGraphFactory::CreateSolidColorBrush() {
+std::unique_ptr<ISolidColorBrush>
+DirectGraphicsFactory::CreateSolidColorBrush() {
return std::make_unique<D2DSolidColorBrush>(this);
}
-std::unique_ptr<IGeometryBuilder> DirectGraphFactory::CreateGeometryBuilder() {
+std::unique_ptr<IGeometryBuilder>
+DirectGraphicsFactory::CreateGeometryBuilder() {
return std::make_unique<D2DGeometryBuilder>(this);
}
-std::unique_ptr<IFont> DirectGraphFactory::CreateFont(
- std::u16string font_family, float font_size) {
+std::unique_ptr<IFont> DirectGraphicsFactory::CreateFont(String font_family,
+ float font_size) {
return std::make_unique<DWriteFont>(this, std::move(font_family), font_size);
}
-std::unique_ptr<ITextLayout> DirectGraphFactory::CreateTextLayout(
- std::shared_ptr<IFont> font, std::u16string text) {
+std::unique_ptr<ITextLayout> DirectGraphicsFactory::CreateTextLayout(
+ std::shared_ptr<IFont> font, String text) {
return std::make_unique<DWriteTextLayout>(this, std::move(font),
std::move(text));
}
diff --git a/src/win/graphics/direct/Font.cpp b/src/win/graphics/direct/Font.cpp
index 1d6a5c88..413c998b 100644
--- a/src/win/graphics/direct/Font.cpp
+++ b/src/win/graphics/direct/Font.cpp
@@ -7,9 +7,9 @@
#include <utility>
namespace cru::platform::graphics::win::direct {
-DWriteFont::DWriteFont(DirectGraphFactory* factory, std::u16string font_family,
+DWriteFont::DWriteFont(DirectGraphicsFactory* factory, String font_family,
float font_size)
- : DirectGraphResource(factory), font_family_(std::move(font_family)) {
+ : DirectGraphicsResource(factory), font_family_(std::move(font_family)) {
// Get locale
std::array<wchar_t, LOCALE_NAME_MAX_LENGTH> buffer;
if (!::GetUserDefaultLocaleName(buffer.data(),
diff --git a/src/win/graphics/direct/Geometry.cpp b/src/win/graphics/direct/Geometry.cpp
index d07a819f..2a544859 100644
--- a/src/win/graphics/direct/Geometry.cpp
+++ b/src/win/graphics/direct/Geometry.cpp
@@ -5,8 +5,8 @@
#include "cru/win/graphics/direct/Factory.hpp"
namespace cru::platform::graphics::win::direct {
-D2DGeometryBuilder::D2DGeometryBuilder(DirectGraphFactory* factory)
- : DirectGraphResource(factory) {
+D2DGeometryBuilder::D2DGeometryBuilder(DirectGraphicsFactory* factory)
+ : DirectGraphicsResource(factory) {
ThrowIfFailed(factory->GetD2D1Factory()->CreatePathGeometry(&geometry_));
ThrowIfFailed(geometry_->Open(&geometry_sink_));
}
@@ -49,9 +49,9 @@ std::unique_ptr<IGeometry> D2DGeometryBuilder::Build() {
return geometry;
}
-D2DGeometry::D2DGeometry(DirectGraphFactory* factory,
+D2DGeometry::D2DGeometry(DirectGraphicsFactory* factory,
Microsoft::WRL::ComPtr<ID2D1PathGeometry> geometry)
- : DirectGraphResource(factory), geometry_(std::move(geometry)) {}
+ : DirectGraphicsResource(factory), geometry_(std::move(geometry)) {}
bool D2DGeometry::FillContains(const Point& point) {
BOOL result;
diff --git a/src/win/graphics/direct/Resource.cpp b/src/win/graphics/direct/Resource.cpp
index 6ae74e64..0e9719f4 100644
--- a/src/win/graphics/direct/Resource.cpp
+++ b/src/win/graphics/direct/Resource.cpp
@@ -5,10 +5,12 @@
namespace cru::platform::graphics::win::direct {
String DirectResource::kPlatformId = u"Windows Direct";
-DirectGraphResource::DirectGraphResource(DirectGraphFactory* factory)
+DirectGraphicsResource::DirectGraphicsResource(DirectGraphicsFactory* factory)
: factory_(factory) {
Expects(factory);
}
-IGraphFactory* DirectGraphResource::GetGraphFactory() { return factory_; }
+IGraphicsFactory* DirectGraphicsResource::GetGraphicsFactory() {
+ return factory_;
+}
} // namespace cru::platform::graphics::win::direct
diff --git a/src/win/graphics/direct/TextLayout.cpp b/src/win/graphics/direct/TextLayout.cpp
index 0b3c68ca..6ece8ed1 100644
--- a/src/win/graphics/direct/TextLayout.cpp
+++ b/src/win/graphics/direct/TextLayout.cpp
@@ -9,10 +9,9 @@
#include <utility>
namespace cru::platform::graphics::win::direct {
-DWriteTextLayout::DWriteTextLayout(DirectGraphFactory* factory,
- std::shared_ptr<IFont> font,
- std::u16string text)
- : DirectGraphResource(factory), text_(std::move(text)) {
+DWriteTextLayout::DWriteTextLayout(DirectGraphicsFactory* factory,
+ std::shared_ptr<IFont> font, String text)
+ : DirectGraphicsResource(factory), text_(std::move(text)) {
Expects(font);
font_ = CheckPlatform<DWriteFont>(font, GetPlatformId());
@@ -24,12 +23,10 @@ DWriteTextLayout::DWriteTextLayout(DirectGraphFactory* factory,
DWriteTextLayout::~DWriteTextLayout() = default;
-std::u16string DWriteTextLayout::GetText() { return text_; }
+String DWriteTextLayout::GetText() { return text_; }
-std::u16string_view DWriteTextLayout::GetTextView() { return text_; }
-
-void DWriteTextLayout::SetText(std::u16string new_text) {
- text_.swap(new_text);
+void DWriteTextLayout::SetText(String new_text) {
+ text_ = std::move(new_text);
ThrowIfFailed(GetDirectFactory()->GetDWriteFactory()->CreateTextLayout(
reinterpret_cast<const wchar_t*>(text_.c_str()),
static_cast<UINT32>(text_.size()), font_->GetComInterface(), max_width_,
@@ -100,14 +97,14 @@ std::vector<Rect> DWriteTextLayout::TextRangeRect(
return result;
}
-Point DWriteTextLayout::TextSinglePoint(Index position, bool trailing) {
+Rect DWriteTextLayout::TextSinglePoint(Index position, bool trailing) {
DWRITE_HIT_TEST_METRICS metrics;
FLOAT left;
FLOAT top;
ThrowIfFailed(text_layout_->HitTestTextPosition(static_cast<UINT32>(position),
static_cast<BOOL>(trailing),
&left, &top, &metrics));
- return Point{left, top};
+ return Rect{left, top, 0, GetFont()->GetFontSize()};
}
TextHitTestResult DWriteTextLayout::HitTest(const Point& point) {
@@ -121,7 +118,6 @@ TextHitTestResult DWriteTextLayout::HitTest(const Point& point) {
TextHitTestResult result;
result.position = metrics.textPosition;
result.trailing = trailing != 0;
- result.insideText = inside != 0;
return result;
}
} // namespace cru::platform::graphics::win::direct
diff --git a/src/win/graphics/direct/WindowRenderTarget.cpp b/src/win/graphics/direct/WindowRenderTarget.cpp
index 7479ae24..020ce4b4 100644
--- a/src/win/graphics/direct/WindowRenderTarget.cpp
+++ b/src/win/graphics/direct/WindowRenderTarget.cpp
@@ -5,7 +5,7 @@
namespace cru::platform::graphics::win::direct {
D2DWindowRenderTarget::D2DWindowRenderTarget(
- gsl::not_null<DirectGraphFactory*> factory, HWND hwnd)
+ gsl::not_null<DirectGraphicsFactory*> factory, HWND hwnd)
: factory_(factory), hwnd_(hwnd) {
const auto d3d11_device = factory->GetD3D11Device();
const auto dxgi_factory = factory->GetDxgiFactory();
diff --git a/src/win/gui/UiApplication.cpp b/src/win/gui/UiApplication.cpp
index f4541dd0..12480417 100644
--- a/src/win/gui/UiApplication.cpp
+++ b/src/win/gui/UiApplication.cpp
@@ -37,7 +37,7 @@ WinUiApplication::WinUiApplication() {
std::make_unique<::cru::platform::win::WinStdOutLoggerSource>());
graph_factory_ = std::make_unique<
- cru::platform::graphics::win::direct::DirectGraphFactory>();
+ cru::platform::graphics::win::direct::DirectGraphicsFactory>();
god_window_ = std::make_unique<GodWindow>(this);
timer_manager_ = std::make_unique<TimerManager>(god_window_.get());
@@ -112,7 +112,7 @@ INativeWindow* WinUiApplication::CreateWindow(INativeWindow* parent,
p);
}
-cru::platform::graphics::IGraphFactory* WinUiApplication::GetGraphFactory() {
+cru::platform::graphics::IGraphicsFactory* WinUiApplication::GetGraphicsFactory() {
return graph_factory_.get();
}