aboutsummaryrefslogtreecommitdiff
path: root/src/platform
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-08-16 19:24:11 +0800
committerYuqian Yang <crupest@crupest.life>2025-08-16 19:24:11 +0800
commit600307d3d0133accc3aaceed694e897ad48cd584 (patch)
tree21296dcabd1868872b0e2ab06c17ce1d6cbf1df3 /src/platform
parentd868d7b0d463ede80b761f87f10d4e25f52989c3 (diff)
downloadcru-600307d3d0133accc3aaceed694e897ad48cd584.tar.gz
cru-600307d3d0133accc3aaceed694e897ad48cd584.tar.bz2
cru-600307d3d0133accc3aaceed694e897ad48cd584.zip
Move Core Foundation string out of cru String. Still error.
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/graphics/quartz/Font.cpp3
-rw-r--r--src/platform/graphics/quartz/ImageFactory.cpp11
-rw-r--r--src/platform/graphics/quartz/TextLayout.cpp3
-rw-r--r--src/platform/gui/osx/Clipboard.mm9
-rw-r--r--src/platform/gui/osx/Menu.mm11
-rw-r--r--src/platform/gui/osx/UiApplication.mm33
-rw-r--r--src/platform/gui/osx/Window.mm13
7 files changed, 46 insertions, 37 deletions
diff --git a/src/platform/graphics/quartz/Font.cpp b/src/platform/graphics/quartz/Font.cpp
index 8821062f..4d03c56e 100644
--- a/src/platform/graphics/quartz/Font.cpp
+++ b/src/platform/graphics/quartz/Font.cpp
@@ -1,12 +1,13 @@
#include "cru/platform/graphics/quartz/Font.h"
+#include "cru/base/Osx.h"
#include "cru/platform/graphics/quartz/Resource.h"
namespace cru::platform::graphics::quartz {
OsxCTFont::OsxCTFont(IGraphicsFactory* graphics_factory, const String& name,
float size)
: OsxQuartzResource(graphics_factory), name_(name) {
- auto n = name.ToCFStringRef();
+ auto n = ToCFStringRef(name);
if (name.empty()) {
ct_font_ =
diff --git a/src/platform/graphics/quartz/ImageFactory.cpp b/src/platform/graphics/quartz/ImageFactory.cpp
index 1f354155..1fb04132 100644
--- a/src/platform/graphics/quartz/ImageFactory.cpp
+++ b/src/platform/graphics/quartz/ImageFactory.cpp
@@ -1,9 +1,10 @@
#include "cru/platform/graphics/quartz/ImageFactory.h"
#include "cru/base/Exception.h"
-#include "cru/platform/graphics/quartz/Convert.h"
-#include "cru/platform/graphics/quartz/Image.h"
+#include "cru/base/Osx.h"
#include "cru/platform/Check.h"
#include "cru/platform/graphics/Image.h"
+#include "cru/platform/graphics/quartz/Convert.h"
+#include "cru/platform/graphics/quartz/Image.h"
#include <ImageIO/ImageIO.h>
@@ -51,10 +52,10 @@ void QuartzImageFactory::EncodeToStream(IImage* image, io::Stream* stream,
auto quartz_image = CheckPlatform<QuartzImage>(image, GetPlatformId());
auto cg_image = quartz_image->GetCGImage();
- auto uti = GetImageFormatUniformTypeIdentifier(format).ToCFStringRef();
+ auto uti = ToCFStringRef(GetImageFormatUniformTypeIdentifier(format));
CGDataConsumerRef data_consumer = ConvertStreamToCGDataConsumer(stream);
- CGImageDestinationRef destination =
- CGImageDestinationCreateWithDataConsumer(data_consumer, uti.ref, 1, nullptr);
+ CGImageDestinationRef destination = CGImageDestinationCreateWithDataConsumer(
+ data_consumer, uti.ref, 1, nullptr);
CFMutableDictionaryRef properties =
CFDictionaryCreateMutable(nullptr, 0, nullptr, nullptr);
diff --git a/src/platform/graphics/quartz/TextLayout.cpp b/src/platform/graphics/quartz/TextLayout.cpp
index 1d49d6c0..7b3e6da8 100644
--- a/src/platform/graphics/quartz/TextLayout.cpp
+++ b/src/platform/graphics/quartz/TextLayout.cpp
@@ -1,5 +1,6 @@
#include "cru/platform/graphics/quartz/TextLayout.h"
#include "cru/base/Base.h"
+#include "cru/base/Osx.h"
#include "cru/base/Format.h"
#include "cru/platform/graphics/quartz/Convert.h"
#include "cru/platform/graphics/quartz/Resource.h"
@@ -71,7 +72,7 @@ void OsxCTTextLayout::DoSetText(String text) {
}
}
- auto s = actual_text_.ToCFStringRef();
+ auto s = ToCFStringRef(actual_text_);
cf_attributed_text_ = CFAttributedStringCreateMutable(nullptr, 0);
CFAttributedStringReplaceString(cf_attributed_text_, CFRangeMake(0, 0), s.ref);
Ensures(cf_attributed_text_);
diff --git a/src/platform/gui/osx/Clipboard.mm b/src/platform/gui/osx/Clipboard.mm
index deaaa387..b3469795 100644
--- a/src/platform/gui/osx/Clipboard.mm
+++ b/src/platform/gui/osx/Clipboard.mm
@@ -1,5 +1,6 @@
-#include "cru/base/log/Logger.h"
#include "cru/platform/gui/osx/Clipboard.h"
+#include "cru/base/Osx.h"
+#include "cru/base/log/Logger.h"
#include "ClipboardPrivate.h"
@@ -30,15 +31,15 @@ String OsxClipboardPrivate::GetText() {
if (result.count == 0) {
return u"";
} else {
- return ::cru::String::FromCFStringRef((CFStringRef)result[0]);
+ return FromCFStringRef((CFStringRef)result[0]);
}
}
}
void OsxClipboardPrivate::SetText(String text) {
- auto cf_string = text.ToCFStringRef();
+ auto cf_string = ToCFStringRef(text);
[pasteboard_ clearContents];
[pasteboard_ writeObjects:@[ (NSString*)cf_string.ref ]];
}
-}
+} // namespace details
} // namespace cru::platform::gui::osx
diff --git a/src/platform/gui/osx/Menu.mm b/src/platform/gui/osx/Menu.mm
index 848af022..648bc392 100644
--- a/src/platform/gui/osx/Menu.mm
+++ b/src/platform/gui/osx/Menu.mm
@@ -1,7 +1,8 @@
#include "cru/platform/gui/osx/Menu.h"
-#import "MenuPrivate.h"
#include "KeyboardPrivate.h"
+#import "MenuPrivate.h"
+#include "cru/base/Osx.h"
#import <AppKit/NSApplication.h>
@@ -51,7 +52,7 @@ void OsxMenuPrivate::AttachToNative(NSMenu* native_menu) {
items_.push_back(item);
}
}
-}
+} // namespace details
OsxMenuItem::OsxMenuItem(IUiApplication* ui_application) : OsxGuiResource(ui_application) {
p_ = new details::OsxMenuItemPrivate(this);
@@ -59,10 +60,10 @@ OsxMenuItem::OsxMenuItem(IUiApplication* ui_application) : OsxGuiResource(ui_app
OsxMenuItem::~OsxMenuItem() { delete p_; }
-String OsxMenuItem::GetTitle() { return ::cru::String::FromCFStringRef((CFStringRef)[p_->menu_item_ title]); }
+String OsxMenuItem::GetTitle() { return FromCFStringRef((CFStringRef)[p_->menu_item_ title]); }
void OsxMenuItem::SetTitle(String title) {
- auto cf_title = title.ToCFStringRef();
+ auto cf_title = ToCFStringRef(title);
[p_->menu_item_ setTitle:(NSString*)(cf_title.ref)];
}
@@ -160,7 +161,7 @@ void OsxMenu::RemoveItemAt(int index) {
p_->menu_ = nullptr;
}
}
-}
+} // namespace cru::platform::gui::osx
@implementation CruOsxMenuItemClickHandler {
cru::platform::gui::osx::details::OsxMenuItemPrivate* p_;
diff --git a/src/platform/gui/osx/UiApplication.mm b/src/platform/gui/osx/UiApplication.mm
index 32e825e0..2733e8af 100644
--- a/src/platform/gui/osx/UiApplication.mm
+++ b/src/platform/gui/osx/UiApplication.mm
@@ -1,16 +1,17 @@
#include "cru/platform/gui/osx/UiApplication.h"
#include "ClipboardPrivate.h"
+#include "cru/base/Osx.h"
#include "cru/base/log/Logger.h"
+#include "cru/platform/graphics/Factory.h"
#include "cru/platform/graphics/quartz/Factory.h"
+#include "cru/platform/gui/Base.h"
+#include "cru/platform/gui/UiApplication.h"
+#include "cru/platform/gui/Window.h"
#include "cru/platform/gui/osx/Clipboard.h"
#include "cru/platform/gui/osx/Cursor.h"
#include "cru/platform/gui/osx/Menu.h"
#include "cru/platform/gui/osx/Window.h"
-#include "cru/platform/graphics/Factory.h"
-#include "cru/platform/gui/Base.h"
-#include "cru/platform/gui/UiApplication.h"
-#include "cru/platform/gui/Window.h"
#include <AppKit/NSApplication.h>
#include <Foundation/NSRunLoop.h>
@@ -70,7 +71,7 @@ void OsxUiApplicationPrivate::CallQuitHandlers() {
handler();
}
}
-}
+} // namespace details
OsxUiApplication::OsxUiApplication()
: OsxGuiResource(this), p_(new details::OsxUiApplicationPrivate(this)) {
@@ -178,15 +179,15 @@ graphics::IGraphicsFactory* OsxUiApplication::GetGraphicsFactory() {
std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options) {
NSSavePanel* panel = [NSSavePanel savePanel];
- [panel setTitle:(NSString*)options.title.ToCFStringRef().ref];
- [panel setPrompt:(NSString*)options.prompt.ToCFStringRef().ref];
- [panel setMessage:(NSString*)options.message.ToCFStringRef().ref];
+ [panel setTitle:(NSString*)ToCFStringRef(options.title).ref];
+ [panel setPrompt:(NSString*)ToCFStringRef(options.prompt).ref];
+ [panel setMessage:(NSString*)ToCFStringRef(options.message).ref];
NSMutableArray* allowed_content_types = [NSMutableArray array];
for (const auto& file_type : options.allowed_file_types) {
[allowed_content_types
- addObject:[UTType typeWithFilenameExtension:(NSString*)file_type.ToCFStringRef().ref]];
+ addObject:[UTType typeWithFilenameExtension:(NSString*)ToCFStringRef(file_type).ref]];
}
[panel setAllowedContentTypes:allowed_content_types];
@@ -194,7 +195,7 @@ std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options
auto model_result = [panel runModal];
if (model_result == NSModalResponseOK) {
- return ::cru::String::FromCFStringRef((CFStringRef)[[panel URL] path]);
+ return FromCFStringRef((CFStringRef)[[panel URL] path]);
} else {
return std::nullopt;
}
@@ -202,15 +203,15 @@ std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options
std::optional<std::vector<String>> OsxUiApplication::ShowOpenDialog(OpenDialogOptions options) {
NSOpenPanel* panel = [NSOpenPanel openPanel];
- [panel setTitle:(NSString*)options.title.ToCFStringRef().ref];
- [panel setPrompt:(NSString*)options.prompt.ToCFStringRef().ref];
- [panel setMessage:(NSString*)options.message.ToCFStringRef().ref];
+ [panel setTitle:(NSString*)ToCFStringRef(options.title).ref];
+ [panel setPrompt:(NSString*)ToCFStringRef(options.prompt).ref];
+ [panel setMessage:(NSString*)ToCFStringRef(options.message).ref];
NSMutableArray* allowed_content_types = [NSMutableArray array];
for (const auto& file_type : options.allowed_file_types) {
[allowed_content_types
- addObject:[UTType typeWithFilenameExtension:(NSString*)file_type.ToCFStringRef().ref]];
+ addObject:[UTType typeWithFilenameExtension:(NSString*)ToCFStringRef(file_type).ref]];
}
[panel setAllowedContentTypes:allowed_content_types];
@@ -224,7 +225,7 @@ std::optional<std::vector<String>> OsxUiApplication::ShowOpenDialog(OpenDialogOp
if (model_result == NSModalResponseOK) {
std::vector<String> result;
for (NSURL* url in [panel URLs]) {
- result.push_back(::cru::String::FromCFStringRef((CFStringRef)[url path]));
+ result.push_back(FromCFStringRef((CFStringRef)[url path]));
}
return result;
} else {
@@ -237,7 +238,7 @@ void OsxUiApplication::UnregisterWindow(OsxWindow* window) {
std::remove(p_->windows_.begin(), p_->windows_.end(), static_cast<INativeWindow*>(window)),
p_->windows_.cend());
}
-}
+} // namespace cru::platform::gui::osx
@implementation CruAppDelegate {
cru::platform::gui::osx::details::OsxUiApplicationPrivate* _p;
diff --git a/src/platform/gui/osx/Window.mm b/src/platform/gui/osx/Window.mm
index 4e000c48..4279e73e 100644
--- a/src/platform/gui/osx/Window.mm
+++ b/src/platform/gui/osx/Window.mm
@@ -3,6 +3,7 @@
#include "CursorPrivate.h"
#include "InputMethodPrivate.h"
+#include "cru/base/Osx.h"
#include "cru/base/Range.h"
#include "cru/base/log/Logger.h"
#include "cru/platform/Check.h"
@@ -27,6 +28,8 @@ namespace {
constexpr int key_down_debug = 0;
}
+using ::cru::FromCFStringRef;
+using ::cru::ToCFStringRef;
using cru::platform::graphics::quartz::Convert;
namespace cru::platform::gui::osx {
namespace {
@@ -185,7 +188,7 @@ void OsxWindowPrivate::CreateWindow() {
frame:Rect(Point{}, content_rect_.GetSize())];
[window_ setContentView:content_view];
- [window_ setTitle:(NSString*)title_.ToCFStringRef().ref];
+ [window_ setTitle:(NSString*)ToCFStringRef(title_).ref];
draw_layer_ = CreateLayer(Convert(content_rect_.GetSize()));
@@ -253,7 +256,7 @@ void OsxWindow::SetTitle(String title) {
p_->title_ = title;
if (p_->window_) {
- [p_->window_ setTitle:(NSString*)title.ToCFStringRef().ref];
+ [p_->window_ setTitle:(NSString*)ToCFStringRef(title).ref];
}
}
@@ -664,7 +667,7 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{
s = CFAttributedStringGetString(as);
}
- auto ss = ::cru::String::FromCFStringRef(s);
+ auto ss = FromCFStringRef(s);
// cru::CRU_LOG_DEBUG(u"CruView",
// u"Received setMarkedText string: {}, selected range: ({}, {}), "
@@ -684,7 +687,7 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{
withAttributedString:[[NSAttributedString alloc] initWithString:(NSString*)s]];
cru::platform::gui::CompositionText composition_text;
- composition_text.text = ::cru::String::FromCFStringRef((CFStringRef)[_input_context_text string]);
+ composition_text.text = FromCFStringRef((CFStringRef)[_input_context_text string]);
composition_text.selection.position = ss.IndexFromCodePointToCodeUnit(selectedRange.location);
composition_text.selection.count =
ss.IndexFromCodePointToCodeUnit(selectedRange.location + selectedRange.length) -
@@ -725,7 +728,7 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{
_input_context_text = nil;
_input_context_p->SetCompositionText(cru::platform::gui::CompositionText());
- auto ss = ::cru::String::FromCFStringRef(s);
+ auto ss = FromCFStringRef(s);
// cru::CRU_LOG_DEBUG(u"CruView", u"Finish composition: {}, replacement range: ({}, {})", ss,
// replacementRange.location, replacementRange.length);