diff options
Diffstat (limited to 'src/platform')
-rw-r--r-- | src/platform/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/platform/graphics/quartz/Font.cpp | 10 | ||||
-rw-r--r-- | src/platform/graphics/quartz/ImageFactory.cpp | 8 | ||||
-rw-r--r-- | src/platform/graphics/quartz/TextLayout.cpp | 12 | ||||
-rw-r--r-- | src/platform/gui/osx/Clipboard.mm | 12 | ||||
-rw-r--r-- | src/platform/gui/osx/Cursor.mm | 1 | ||||
-rw-r--r-- | src/platform/gui/osx/InputMethod.mm | 1 | ||||
-rw-r--r-- | src/platform/gui/osx/Menu.mm | 12 | ||||
-rw-r--r-- | src/platform/gui/osx/UiApplication.mm | 24 | ||||
-rw-r--r-- | src/platform/gui/osx/Window.mm | 18 |
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); |