diff --git a/src/os/macosx/osx_stdafx.h b/src/os/macosx/osx_stdafx.h index 476362cccd..d90a19c5f7 100644 --- a/src/os/macosx/osx_stdafx.h +++ b/src/os/macosx/osx_stdafx.h @@ -18,6 +18,10 @@ #define HAVE_OSX_107_SDK #endif +#ifdef MAC_OS_X_VERSION_10_9 +#define HAVE_OSX_109_SDK +#endif + #ifdef MAC_OS_X_VERSION_10_11 #define HAVE_OSX_1011_SDK #endif diff --git a/src/os/macosx/string_osx.cpp b/src/os/macosx/string_osx.cpp index 63be4d3ad9..ad4983e9aa 100644 --- a/src/os/macosx/string_osx.cpp +++ b/src/os/macosx/string_osx.cpp @@ -19,6 +19,35 @@ #if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) + +/* CTRunDelegateCreate is supported since MacOS X 10.5, but was only included in the SDKs starting with the 10.9 SDK. */ +#ifndef HAVE_OSX_109_SDK +extern "C" { + typedef const struct __CTRunDelegate * CTRunDelegateRef; + + typedef void (*CTRunDelegateDeallocateCallback) (void* refCon); + typedef CGFloat (*CTRunDelegateGetAscentCallback) (void* refCon); + typedef CGFloat (*CTRunDelegateGetDescentCallback) (void* refCon); + typedef CGFloat (*CTRunDelegateGetWidthCallback) (void* refCon); + typedef struct { + CFIndex version; + CTRunDelegateDeallocateCallback dealloc; + CTRunDelegateGetAscentCallback getAscent; + CTRunDelegateGetDescentCallback getDescent; + CTRunDelegateGetWidthCallback getWidth; + } CTRunDelegateCallbacks; + + enum { + kCTRunDelegateVersion1 = 1, + kCTRunDelegateCurrentVersion = kCTRunDelegateVersion1 + }; + + extern const CFStringRef kCTRunDelegateAttributeName AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; + + CTRunDelegateRef CTRunDelegateCreate(const CTRunDelegateCallbacks* callbacks, void* refCon) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER; +} +#endif /* HAVE_OSX_109_SDK */ + /** Cached current locale. */ static CFAutoRelease _osx_locale; /** CoreText cache for font information, cleared when OTTD changes fonts. */