1
0
mirror of synced 2024-12-02 03:07:18 +01:00
ImHex/lib/libimhex/source/helpers/utils_macos.mm

60 lines
1.6 KiB
Plaintext
Raw Normal View History

#if defined(OS_MACOS)
#include <CoreFoundation/CFBundle.h>
#include <ApplicationServices/ApplicationServices.h>
2022-06-30 15:28:51 +02:00
#include <Foundation/NSUserDefaults.h>
2022-06-30 15:20:13 +02:00
#include <Foundation/Foundation.h>
2023-02-08 13:51:56 +01:00
#include <AppKit/NSScreen.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
2023-05-14 20:20:22 +02:00
#include <hex/api/event.hpp>
2023-05-14 18:35:35 +02:00
2023-05-14 20:20:22 +02:00
#include <string>
#import <Foundation/Foundation.h>
static std::string nsurl_to_string(NSURL* url) {
NSString* urlString = [url absoluteString];
const char* utf8String = [urlString UTF8String];
return std::string(utf8String);
}
extern "C" void openWebpageMacos(const char *url) {
CFURLRef urlRef = CFURLCreateWithBytes(NULL, (uint8_t*)(url), strlen(url), kCFStringEncodingASCII, NULL);
LSOpenCFURLRef(urlRef, NULL);
CFRelease(urlRef);
}
2023-05-14 20:20:22 +02:00
extern "C" bool isMacosSystemDarkModeEnabled(void) {
NSString * appleInterfaceStyle = [[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"];
if (appleInterfaceStyle && [appleInterfaceStyle length] > 0) {
return [[appleInterfaceStyle lowercaseString] containsString:@"dark"];
} else {
return false;
}
}
2023-05-14 20:20:22 +02:00
extern "C" float getBackingScaleFactor(void) {
2023-02-08 13:51:56 +01:00
return [[NSScreen mainScreen] backingScaleFactor];
}
2023-05-14 18:35:35 +02:00
@interface HexDocument : NSDocument
@end
@implementation HexDocument
2023-05-14 20:20:22 +02:00
- (BOOL) readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
hex::EventManager::post<hex::RequestOpenFile>(nsurl_to_string(url));
2023-05-14 18:35:35 +02:00
return YES;
}
@end
2023-01-04 14:55:58 +01:00
#endif