2018-11-16 00:31:39 +01:00
|
|
|
/*****************************************************************************\
|
|
|
|
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
|
|
|
|
This file is licensed under the Snes9x License.
|
|
|
|
For further information, consult the LICENSE file in the root directory.
|
|
|
|
\*****************************************************************************/
|
2010-09-25 17:46:12 +02:00
|
|
|
|
|
|
|
/***********************************************************************************
|
|
|
|
SNES9X for Mac OS (c) Copyright John Stiles
|
|
|
|
|
|
|
|
Snes9x for Mac OS X
|
|
|
|
|
2011-04-10 15:44:28 +02:00
|
|
|
(c) Copyright 2001 - 2011 zones
|
2010-09-25 17:46:12 +02:00
|
|
|
(c) Copyright 2002 - 2005 107
|
|
|
|
(c) Copyright 2002 PB1400c
|
|
|
|
(c) Copyright 2004 Alexander and Sander
|
|
|
|
(c) Copyright 2004 - 2005 Steven Seeger
|
|
|
|
(c) Copyright 2005 Ryan Vogt
|
2019-09-02 19:20:32 +02:00
|
|
|
(c) Copyright 2019 Michael Donald Buckley
|
2010-09-25 17:46:12 +02:00
|
|
|
***********************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
#include "mac-prefix.h"
|
|
|
|
#include "mac-stringtools.h"
|
|
|
|
|
|
|
|
|
|
|
|
CFStringRef CopyFixNameStrings (const char *itext, uint8 region)
|
|
|
|
{
|
|
|
|
CFStringRef str = NULL;
|
|
|
|
|
|
|
|
if (region != 0) // non-Japanese
|
|
|
|
{
|
|
|
|
char btext[256];
|
|
|
|
size_t len = strlen(itext);
|
|
|
|
|
|
|
|
btext[len] = 0;
|
|
|
|
for (unsigned int i = 0; i < len ; i++)
|
|
|
|
btext[i] = isgraph(itext[i]) ? itext[i] : ' ';
|
|
|
|
|
|
|
|
str = CFStringCreateWithCString(kCFAllocatorDefault, btext, kCFStringEncodingNonLossyASCII);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
str = CFStringCreateWithCString(kCFAllocatorDefault, itext, kCFStringEncodingMacJapanese); // assuming Shift-JIS
|
|
|
|
|
|
|
|
return (str);
|
|
|
|
}
|
|
|
|
|
|
|
|
#ifdef MAC_TIGER_PANTHER_SUPPORT
|
|
|
|
OSStatus CreateATSUIStyleFromFontFullNameAndSize (const char *fontName, int fontSize, ATSUStyle *theStyle)
|
|
|
|
{
|
|
|
|
OSStatus err;
|
|
|
|
ATSUStyle localStyle;
|
|
|
|
ATSUFontID atsuFont;
|
|
|
|
Fixed atsuSize;
|
|
|
|
|
|
|
|
ATSUAttributeTag theTags[] = { kATSUFontTag, kATSUSizeTag };
|
|
|
|
ByteCount theSizes[] = { sizeof(ATSUFontID), sizeof(Fixed) };
|
|
|
|
ATSUAttributeValuePtr theValues[] = { NULL, NULL };
|
|
|
|
|
|
|
|
atsuFont = 0;
|
|
|
|
atsuSize = FixRatio(fontSize, 1);
|
|
|
|
localStyle = NULL;
|
|
|
|
|
|
|
|
theValues[0] = &atsuFont;
|
|
|
|
theValues[1] = &atsuSize;
|
|
|
|
|
|
|
|
err = ATSUFindFontFromName(fontName, strlen(fontName), kFontFullName, kFontNoPlatform, kFontNoScript, kFontNoLanguage, &atsuFont);
|
|
|
|
if (err == noErr)
|
|
|
|
{
|
|
|
|
err = ATSUCreateStyle(&localStyle);
|
|
|
|
if (err == noErr)
|
|
|
|
{
|
|
|
|
err = ATSUSetAttributes(localStyle, sizeof(theTags) / sizeof(theTags[0]), theTags, theSizes, theValues);
|
|
|
|
if (err == noErr)
|
|
|
|
{
|
|
|
|
*theStyle = localStyle;
|
|
|
|
return (noErr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (localStyle != NULL)
|
|
|
|
err = ATSUDisposeStyle(localStyle);
|
|
|
|
|
|
|
|
return (err);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
const char * GetMultiByteCharacters (CFStringRef inText, int cutAt)
|
|
|
|
{
|
|
|
|
static char buf[256];
|
|
|
|
|
|
|
|
CFStringRef str;
|
|
|
|
|
|
|
|
buf[0] = 0;
|
|
|
|
|
|
|
|
if (!inText || (cutAt < 1))
|
|
|
|
return (buf);
|
|
|
|
|
|
|
|
if (CFStringGetCString(inText, buf, sizeof(buf), CFStringGetSystemEncoding()))
|
|
|
|
{
|
|
|
|
buf[cutAt] = 0;
|
|
|
|
|
|
|
|
str = CFStringCreateWithCString(kCFAllocatorDefault, buf, CFStringGetSystemEncoding());
|
|
|
|
if (str)
|
|
|
|
CFRelease(str);
|
|
|
|
else
|
|
|
|
buf[cutAt - 1] = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (buf);
|
|
|
|
}
|