aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-10-04 21:13:30 +0800
committercrupest <crupest@outlook.com>2021-10-04 21:13:30 +0800
commit4fc39124bc876a9c78a04cb86397a4f0f08878e9 (patch)
tree27b9919b8c17710aed3031b6f1e64055dab0683f /src
parent8b5df96202b8eb663a9a747c1c9d249f64a933e8 (diff)
downloadcru-4fc39124bc876a9c78a04cb86397a4f0f08878e9.tar.gz
cru-4fc39124bc876a9c78a04cb86397a4f0f08878e9.tar.bz2
cru-4fc39124bc876a9c78a04cb86397a4f0f08878e9.zip
...
Diffstat (limited to 'src')
-rw-r--r--src/common/Logger.cpp4
-rw-r--r--src/osx/CMakeLists.txt5
-rw-r--r--src/osx/graphics/quartz/Factory.cpp21
-rw-r--r--src/osx/graphics/quartz/Font.cpp2
-rw-r--r--src/osx/graphics/quartz/TextLayout.cpp2
-rw-r--r--src/osx/gui/CMakeLists.txt4
-rw-r--r--src/ui/Helper.cpp2
7 files changed, 35 insertions, 5 deletions
diff --git a/src/common/Logger.cpp b/src/common/Logger.cpp
index e77e8a85..6ba5d578 100644
--- a/src/common/Logger.cpp
+++ b/src/common/Logger.cpp
@@ -53,7 +53,7 @@ String GetLogTime() {
}
} // namespace
-void Logger::Log(LogLevel level, const String &message) {
+void Logger::Log(LogLevel level, StringView message) {
#ifndef CRU_DEBUG
if (level == LogLevel::Debug) {
return;
@@ -65,7 +65,7 @@ void Logger::Log(LogLevel level, const String &message) {
}
}
-void Logger::Log(LogLevel level, const String &tag, const String &message) {
+void Logger::Log(LogLevel level, StringView tag, StringView message) {
#ifndef CRU_DEBUG
if (level == LogLevel::Debug) {
return;
diff --git a/src/osx/CMakeLists.txt b/src/osx/CMakeLists.txt
index cb6c2b1a..5d20c2ec 100644
--- a/src/osx/CMakeLists.txt
+++ b/src/osx/CMakeLists.txt
@@ -10,7 +10,10 @@ target_sources(cru_osx_base PUBLIC
${CRU_OSX_BASE_INCLUDE_DIR}/Resource.hpp
)
-target_link_libraries(cru_osx_base PUBLIC cru_platform_base)
+find_library(FOUNDATION Foundation REQUIRED)
+find_library(CORE_FOUNDATION CoreFoundation REQUIRED)
+
+target_link_libraries(cru_osx_base PUBLIC cru_platform_base ${FOUNDATION} ${CORE_FOUNDATION})
add_subdirectory(graphics)
add_subdirectory(gui)
diff --git a/src/osx/graphics/quartz/Factory.cpp b/src/osx/graphics/quartz/Factory.cpp
index 72dd96c7..7aef9d7e 100644
--- a/src/osx/graphics/quartz/Factory.cpp
+++ b/src/osx/graphics/quartz/Factory.cpp
@@ -1,6 +1,10 @@
#include "cru/osx/graphics/quartz/Factory.hpp"
#include "cru/osx/graphics/quartz/Brush.hpp"
+#include "cru/osx/graphics/quartz/Font.hpp"
+#include "cru/osx/graphics/quartz/Geometry.hpp"
+#include "cru/osx/graphics/quartz/TextLayout.hpp"
+#include "cru/platform/Check.hpp"
#include <memory>
@@ -9,4 +13,21 @@ std::unique_ptr<ISolidColorBrush>
QuartzGraphicsFactory::CreateSolidColorBrush() {
return std::make_unique<QuartzSolidColorBrush>(this, colors::black);
}
+
+std::unique_ptr<IGeometryBuilder>
+QuartzGraphicsFactory::CreateGeometryBuilder() {
+ return std::make_unique<QuartzGeometryBuilder>(this);
+}
+
+std::unique_ptr<IFont> QuartzGraphicsFactory::CreateFont(String font_family,
+ float font_size) {
+ return std::make_unique<OsxCTFont>(this, font_family, font_size);
+}
+
+std::unique_ptr<ITextLayout> QuartzGraphicsFactory::CreateTextLayout(
+ std::shared_ptr<IFont> font, String text) {
+ auto f = CheckPlatform<OsxCTFont>(font, GetPlatformId());
+ return std::make_unique<OsxCTTextLayout>(this, f, text);
+}
+
} // namespace cru::platform::graphics::osx::quartz
diff --git a/src/osx/graphics/quartz/Font.cpp b/src/osx/graphics/quartz/Font.cpp
index c35f53fa..600f8309 100644
--- a/src/osx/graphics/quartz/Font.cpp
+++ b/src/osx/graphics/quartz/Font.cpp
@@ -15,4 +15,6 @@ OsxCTFont::OsxCTFont(IGraphicsFactory* graphics_factory, const String& name,
}
OsxCTFont::~OsxCTFont() { CFRelease(ct_font_); }
+
+float OsxCTFont::GetFontSize() { return CTFontGetSize(ct_font_); }
} // namespace cru::platform::graphics::osx::quartz
diff --git a/src/osx/graphics/quartz/TextLayout.cpp b/src/osx/graphics/quartz/TextLayout.cpp
index d6a19264..577eba58 100644
--- a/src/osx/graphics/quartz/TextLayout.cpp
+++ b/src/osx/graphics/quartz/TextLayout.cpp
@@ -20,6 +20,8 @@ OsxCTTextLayout::OsxCTTextLayout(IGraphicsFactory* graphics_factory,
RecreateFrame();
}
+OsxCTTextLayout::~OsxCTTextLayout() {}
+
void OsxCTTextLayout::SetFont(std::shared_ptr<IFont> font) {
font_ = CheckPlatform<OsxCTFont>(font, GetPlatformId());
CFRelease(ct_framesetter_);
diff --git a/src/osx/gui/CMakeLists.txt b/src/osx/gui/CMakeLists.txt
index 06ab92db..f3b93bfe 100644
--- a/src/osx/gui/CMakeLists.txt
+++ b/src/osx/gui/CMakeLists.txt
@@ -14,4 +14,6 @@ target_sources(cru_osx_gui PUBLIC
${CRU_OSX_GUI_INCLUDE_DIR}/Window.hpp
)
-target_link_libraries(cru_osx_gui PUBLIC cru_platform_gui cru_osx_graphics_quartz)
+find_library(APPKIT AppKit REQUIRED)
+
+target_link_libraries(cru_osx_gui PUBLIC cru_platform_gui cru_osx_graphics_quartz ${APPKIT})
diff --git a/src/ui/Helper.cpp b/src/ui/Helper.cpp
index 90b384c4..fd54c05b 100644
--- a/src/ui/Helper.cpp
+++ b/src/ui/Helper.cpp
@@ -8,7 +8,7 @@ using cru::platform::graphics::IGraphicsFactory;
using cru::platform::gui::IUiApplication;
IGraphicsFactory* GetGraphFactory() {
- return IUiApplication::GetInstance()->GetGraphFactory();
+ return IUiApplication::GetInstance()->GetGraphicsFactory();
}
IUiApplication* GetUiApplication() { return IUiApplication::GetInstance(); }