aboutsummaryrefslogtreecommitdiff
path: root/src/platform
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/CMakeLists.txt3
-rw-r--r--src/platform/graphics/quartz/Font.cpp10
-rw-r--r--src/platform/graphics/quartz/ImageFactory.cpp8
-rw-r--r--src/platform/graphics/quartz/TextLayout.cpp12
-rw-r--r--src/platform/gui/osx/Clipboard.mm12
-rw-r--r--src/platform/gui/osx/Cursor.mm1
-rw-r--r--src/platform/gui/osx/InputMethod.mm1
-rw-r--r--src/platform/gui/osx/Menu.mm12
-rw-r--r--src/platform/gui/osx/UiApplication.mm24
-rw-r--r--src/platform/gui/osx/Window.mm18
10 files changed, 35 insertions, 66 deletions
diff --git a/src/platform/CMakeLists.txt b/src/platform/CMakeLists.txt
index 1ce55e77..3044df08 100644
--- a/src/platform/CMakeLists.txt
+++ b/src/platform/CMakeLists.txt
@@ -17,7 +17,8 @@ if (WIN32)
elseif (APPLE)
add_subdirectory(osx)
add_subdirectory(graphics/quartz)
- add_subdirectory(graphics/cairo)
+ # TODO: Re-enable this!
+ # add_subdirectory(graphics/cairo)
add_subdirectory(gui/osx)
elseif (EMSCRIPTEN)
add_subdirectory(web)
diff --git a/src/platform/graphics/quartz/Font.cpp b/src/platform/graphics/quartz/Font.cpp
index 62052b0a..8821062f 100644
--- a/src/platform/graphics/quartz/Font.cpp
+++ b/src/platform/graphics/quartz/Font.cpp
@@ -1,26 +1,20 @@
#include "cru/platform/graphics/quartz/Font.h"
-#include "cru/platform/osx/Convert.h"
-#include "cru/platform/graphics/quartz/Convert.h"
#include "cru/platform/graphics/quartz/Resource.h"
namespace cru::platform::graphics::quartz {
-using cru::platform::osx::Convert;
-
OsxCTFont::OsxCTFont(IGraphicsFactory* graphics_factory, const String& name,
float size)
: OsxQuartzResource(graphics_factory), name_(name) {
- CFStringRef n = Convert(name);
+ auto n = name.ToCFStringRef();
if (name.empty()) {
ct_font_ =
CTFontCreateUIFontForLanguage(kCTFontUIFontSystem, size, nullptr);
} else {
- ct_font_ = CTFontCreateWithName(n, size, nullptr);
+ ct_font_ = CTFontCreateWithName(n.ref, size, nullptr);
}
Ensures(ct_font_);
-
- CFRelease(n);
}
OsxCTFont::~OsxCTFont() { CFRelease(ct_font_); }
diff --git a/src/platform/graphics/quartz/ImageFactory.cpp b/src/platform/graphics/quartz/ImageFactory.cpp
index 0557afa9..1f354155 100644
--- a/src/platform/graphics/quartz/ImageFactory.cpp
+++ b/src/platform/graphics/quartz/ImageFactory.cpp
@@ -1,6 +1,5 @@
#include "cru/platform/graphics/quartz/ImageFactory.h"
#include "cru/base/Exception.h"
-#include "cru/base/platform/osx/Convert.h"
#include "cru/platform/graphics/quartz/Convert.h"
#include "cru/platform/graphics/quartz/Image.h"
#include "cru/platform/Check.h"
@@ -9,8 +8,6 @@
#include <ImageIO/ImageIO.h>
namespace cru::platform::graphics::quartz {
-using cru::platform::osx::Convert;
-
QuartzImageFactory::QuartzImageFactory(IGraphicsFactory* graphics_factory)
: OsxQuartzResource(graphics_factory) {}
@@ -54,10 +51,10 @@ void QuartzImageFactory::EncodeToStream(IImage* image, io::Stream* stream,
auto quartz_image = CheckPlatform<QuartzImage>(image, GetPlatformId());
auto cg_image = quartz_image->GetCGImage();
- CFStringRef uti = Convert(GetImageFormatUniformTypeIdentifier(format));
+ auto uti = GetImageFormatUniformTypeIdentifier(format).ToCFStringRef();
CGDataConsumerRef data_consumer = ConvertStreamToCGDataConsumer(stream);
CGImageDestinationRef destination =
- CGImageDestinationCreateWithDataConsumer(data_consumer, uti, 1, nullptr);
+ CGImageDestinationCreateWithDataConsumer(data_consumer, uti.ref, 1, nullptr);
CFMutableDictionaryRef properties =
CFDictionaryCreateMutable(nullptr, 0, nullptr, nullptr);
@@ -76,7 +73,6 @@ void QuartzImageFactory::EncodeToStream(IImage* image, io::Stream* stream,
CFRelease(properties);
CFRelease(destination);
CFRelease(data_consumer);
- CFRelease(uti);
}
std::unique_ptr<IImage> QuartzImageFactory::CreateBitmap(int width,
diff --git a/src/platform/graphics/quartz/TextLayout.cpp b/src/platform/graphics/quartz/TextLayout.cpp
index 9e18ac85..1d49d6c0 100644
--- a/src/platform/graphics/quartz/TextLayout.cpp
+++ b/src/platform/graphics/quartz/TextLayout.cpp
@@ -1,19 +1,14 @@
#include "cru/platform/graphics/quartz/TextLayout.h"
#include "cru/base/Base.h"
#include "cru/base/Format.h"
-#include "cru/base/StringUtil.h"
-#include "cru/platform/osx/Convert.h"
#include "cru/platform/graphics/quartz/Convert.h"
#include "cru/platform/graphics/quartz/Resource.h"
#include "cru/platform/Check.h"
#include "cru/platform/graphics/Base.h"
-#include <algorithm>
#include <limits>
namespace cru::platform::graphics::quartz {
-using cru::platform::osx::Convert;
-
OsxCTTextLayout::OsxCTTextLayout(IGraphicsFactory* graphics_factory,
std::shared_ptr<OsxCTFont> font,
const String& str)
@@ -76,15 +71,14 @@ void OsxCTTextLayout::DoSetText(String text) {
}
}
- CFStringRef s = Convert(actual_text_);
+ auto s = actual_text_.ToCFStringRef();
cf_attributed_text_ = CFAttributedStringCreateMutable(nullptr, 0);
- CFAttributedStringReplaceString(cf_attributed_text_, CFRangeMake(0, 0), s);
+ CFAttributedStringReplaceString(cf_attributed_text_, CFRangeMake(0, 0), s.ref);
Ensures(cf_attributed_text_);
CFAttributedStringSetAttribute(
cf_attributed_text_,
CFRangeMake(0, CFAttributedStringGetLength(cf_attributed_text_)),
kCTFontAttributeName, font_->GetCTFont());
- CFRelease(s);
}
void OsxCTTextLayout::SetText(String new_text) {
@@ -411,7 +405,7 @@ std::vector<CGRect> OsxCTTextLayout::DoTextRangeRect(
auto line = lines_[i];
auto line_origin = line_origins_[i];
- Range range = Convert(CTLineGetStringRange(line));
+ Range range = Range::FromCFRange(CTLineGetStringRange(line));
range = range.CoerceInto(r.GetStart(), r.GetEnd());
if (range.count) {
diff --git a/src/platform/gui/osx/Clipboard.mm b/src/platform/gui/osx/Clipboard.mm
index 5d498d0e..deaaa387 100644
--- a/src/platform/gui/osx/Clipboard.mm
+++ b/src/platform/gui/osx/Clipboard.mm
@@ -1,14 +1,11 @@
+#include "cru/base/log/Logger.h"
#include "cru/platform/gui/osx/Clipboard.h"
-#include "ClipboardPrivate.h"
-#include "cru/base/log/Logger.h"
-#include "cru/platform/osx/Convert.h"
+#include "ClipboardPrivate.h"
#include <memory>
namespace cru::platform::gui::osx {
-using cru::platform::osx::Convert;
-
OsxClipboard::OsxClipboard(cru::platform::gui::IUiApplication* ui_application,
std::unique_ptr<details::OsxClipboardPrivate> p)
: OsxGuiResource(ui_application), p_(std::move(p)) {}
@@ -33,14 +30,15 @@ String OsxClipboardPrivate::GetText() {
if (result.count == 0) {
return u"";
} else {
- return Convert((CFStringRef)result[0]);
+ return ::cru::String::FromCFStringRef((CFStringRef)result[0]);
}
}
}
void OsxClipboardPrivate::SetText(String text) {
+ auto cf_string = text.ToCFStringRef();
[pasteboard_ clearContents];
- [pasteboard_ writeObjects:@[ (NSString*)Convert(text) ]];
+ [pasteboard_ writeObjects:@[ (NSString*)cf_string.ref ]];
}
}
} // namespace cru::platform::gui::osx
diff --git a/src/platform/gui/osx/Cursor.mm b/src/platform/gui/osx/Cursor.mm
index fae1514c..e923e34c 100644
--- a/src/platform/gui/osx/Cursor.mm
+++ b/src/platform/gui/osx/Cursor.mm
@@ -1,7 +1,6 @@
#include "cru/platform/gui/osx/Cursor.h"
#include "CursorPrivate.h"
-#include "cru/platform/osx/Exception.h"
#include "cru/platform/gui/osx/Resource.h"
#include "cru/platform/gui/Cursor.h"
#include "cru/platform/gui/UiApplication.h"
diff --git a/src/platform/gui/osx/InputMethod.mm b/src/platform/gui/osx/InputMethod.mm
index af2d1ec2..c3532ab6 100644
--- a/src/platform/gui/osx/InputMethod.mm
+++ b/src/platform/gui/osx/InputMethod.mm
@@ -4,7 +4,6 @@
#include "InputMethodPrivate.h"
#include "WindowPrivate.h"
#include "cru/base/log/Logger.h"
-#include "cru/platform/osx/Convert.h"
#include "cru/platform/gui/osx/Window.h"
namespace cru::platform::gui::osx {
diff --git a/src/platform/gui/osx/Menu.mm b/src/platform/gui/osx/Menu.mm
index e74ec23b..848af022 100644
--- a/src/platform/gui/osx/Menu.mm
+++ b/src/platform/gui/osx/Menu.mm
@@ -1,14 +1,11 @@
#include "cru/platform/gui/osx/Menu.h"
-#import "MenuPrivate.h"
+#import "MenuPrivate.h"
#include "KeyboardPrivate.h"
-#include "cru/base/platform/osx/Convert.h"
#import <AppKit/NSApplication.h>
namespace cru::platform::gui::osx {
-using platform::osx::Convert;
-
namespace {
std::unique_ptr<OsxMenu> application_menu = nullptr;
}
@@ -62,9 +59,12 @@ OsxMenuItem::OsxMenuItem(IUiApplication* ui_application) : OsxGuiResource(ui_app
OsxMenuItem::~OsxMenuItem() { delete p_; }
-String OsxMenuItem::GetTitle() { return Convert((CFStringRef)[p_->menu_item_ title]); }
+String OsxMenuItem::GetTitle() { return ::cru::String::FromCFStringRef((CFStringRef)[p_->menu_item_ title]); }
-void OsxMenuItem::SetTitle(String title) { [p_->menu_item_ setTitle:(NSString*)Convert(title)]; }
+void OsxMenuItem::SetTitle(String title) {
+ auto cf_title = title.ToCFStringRef();
+ [p_->menu_item_ setTitle:(NSString*)(cf_title.ref)];
+}
bool OsxMenuItem::IsEnabled() { return [p_->menu_item_ isEnabled]; }
diff --git a/src/platform/gui/osx/UiApplication.mm b/src/platform/gui/osx/UiApplication.mm
index fd6e8ef0..32e825e0 100644
--- a/src/platform/gui/osx/UiApplication.mm
+++ b/src/platform/gui/osx/UiApplication.mm
@@ -2,7 +2,6 @@
#include "ClipboardPrivate.h"
#include "cru/base/log/Logger.h"
-#include "cru/base/platform/osx/Convert.h"
#include "cru/platform/graphics/quartz/Factory.h"
#include "cru/platform/gui/osx/Clipboard.h"
#include "cru/platform/gui/osx/Cursor.h"
@@ -30,9 +29,6 @@
@end
namespace cru::platform::gui::osx {
-
-using cru::platform::osx::Convert;
-
namespace details {
class OsxUiApplicationPrivate {
friend OsxUiApplication;
@@ -182,15 +178,15 @@ graphics::IGraphicsFactory* OsxUiApplication::GetGraphicsFactory() {
std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options) {
NSSavePanel* panel = [NSSavePanel savePanel];
- [panel setTitle:(NSString*)Convert(options.title)];
- [panel setPrompt:(NSString*)Convert(options.prompt)];
- [panel setMessage:(NSString*)Convert(options.message)];
+ [panel setTitle:(NSString*)options.title.ToCFStringRef().ref];
+ [panel setPrompt:(NSString*)options.prompt.ToCFStringRef().ref];
+ [panel setMessage:(NSString*)options.message.ToCFStringRef().ref];
NSMutableArray* allowed_content_types = [NSMutableArray array];
for (const auto& file_type : options.allowed_file_types) {
[allowed_content_types
- addObject:[UTType typeWithFilenameExtension:(NSString*)Convert(file_type)]];
+ addObject:[UTType typeWithFilenameExtension:(NSString*)file_type.ToCFStringRef().ref]];
}
[panel setAllowedContentTypes:allowed_content_types];
@@ -198,7 +194,7 @@ std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options
auto model_result = [panel runModal];
if (model_result == NSModalResponseOK) {
- return Convert((CFStringRef)[[panel URL] path]);
+ return ::cru::String::FromCFStringRef((CFStringRef)[[panel URL] path]);
} else {
return std::nullopt;
}
@@ -206,15 +202,15 @@ std::optional<String> OsxUiApplication::ShowSaveDialog(SaveDialogOptions options
std::optional<std::vector<String>> OsxUiApplication::ShowOpenDialog(OpenDialogOptions options) {
NSOpenPanel* panel = [NSOpenPanel openPanel];
- [panel setTitle:(NSString*)Convert(options.title)];
- [panel setPrompt:(NSString*)Convert(options.prompt)];
- [panel setMessage:(NSString*)Convert(options.message)];
+ [panel setTitle:(NSString*)options.title.ToCFStringRef().ref];
+ [panel setPrompt:(NSString*)options.prompt.ToCFStringRef().ref];
+ [panel setMessage:(NSString*)options.message.ToCFStringRef().ref];
NSMutableArray* allowed_content_types = [NSMutableArray array];
for (const auto& file_type : options.allowed_file_types) {
[allowed_content_types
- addObject:[UTType typeWithFilenameExtension:(NSString*)Convert(file_type)]];
+ addObject:[UTType typeWithFilenameExtension:(NSString*)file_type.ToCFStringRef().ref]];
}
[panel setAllowedContentTypes:allowed_content_types];
@@ -228,7 +224,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(Convert((CFStringRef)[url path]));
+ result.push_back(::cru::String::FromCFStringRef((CFStringRef)[url path]));
}
return result;
} else {
diff --git a/src/platform/gui/osx/Window.mm b/src/platform/gui/osx/Window.mm
index 8c059a12..4e000c48 100644
--- a/src/platform/gui/osx/Window.mm
+++ b/src/platform/gui/osx/Window.mm
@@ -15,7 +15,6 @@
#include "cru/platform/gui/osx/Keyboard.h"
#include "cru/platform/gui/osx/Resource.h"
#include "cru/platform/gui/osx/UiApplication.h"
-#include "cru/platform/osx/Convert.h"
#include <AppKit/AppKit.h>
#include <Foundation/Foundation.h>
@@ -29,8 +28,6 @@ constexpr int key_down_debug = 0;
}
using cru::platform::graphics::quartz::Convert;
-using cru::platform::osx::Convert;
-
namespace cru::platform::gui::osx {
namespace {
inline NSWindowStyleMask CalcWindowStyleMask(WindowStyleFlag flag) {
@@ -188,10 +185,7 @@ void OsxWindowPrivate::CreateWindow() {
frame:Rect(Point{}, content_rect_.GetSize())];
[window_ setContentView:content_view];
-
- auto title_str = Convert(title_);
- [window_ setTitle:(NSString*)title_str];
- CFRelease(title_str);
+ [window_ setTitle:(NSString*)title_.ToCFStringRef().ref];
draw_layer_ = CreateLayer(Convert(content_rect_.GetSize()));
@@ -259,9 +253,7 @@ void OsxWindow::SetTitle(String title) {
p_->title_ = title;
if (p_->window_) {
- auto str = Convert(title);
- [p_->window_ setTitle:(NSString*)str];
- CFRelease(str);
+ [p_->window_ setTitle:(NSString*)title.ToCFStringRef().ref];
}
}
@@ -672,7 +664,7 @@ const std::unordered_set<KeyCode> input_context_handle_codes_when_has_text{
s = CFAttributedStringGetString(as);
}
- auto ss = Convert(s);
+ auto ss = ::cru::String::FromCFStringRef(s);
// cru::CRU_LOG_DEBUG(u"CruView",
// u"Received setMarkedText string: {}, selected range: ({}, {}), "
@@ -692,7 +684,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 = Convert((CFStringRef)[_input_context_text string]);
+ composition_text.text = ::cru::String::FromCFStringRef((CFStringRef)[_input_context_text string]);
composition_text.selection.position = ss.IndexFromCodePointToCodeUnit(selectedRange.location);
composition_text.selection.count =
ss.IndexFromCodePointToCodeUnit(selectedRange.location + selectedRange.length) -
@@ -733,7 +725,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());
- cru::String ss = Convert(s);
+ auto ss = ::cru::String::FromCFStringRef(s);
// cru::CRU_LOG_DEBUG(u"CruView", u"Finish composition: {}, replacement range: ({}, {})", ss,
// replacementRange.location, replacementRange.length);