diff options
| author | Simon Tatham <anakin@pobox.com> | 2009-12-27 10:01:16 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2009-12-27 10:01:16 +0000 |
| commit | 9fbb365684ef662fc183ebd45c2eeb50f40589b5 (patch) | |
| tree | 494e77cfaa8402d920bd6615db0a31dbdbc59183 /osx.m | |
| parent | 72922b307822874862d943893b10ac75d01689d2 (diff) | |
| download | puzzles-9fbb365684ef662fc183ebd45c2eeb50f40589b5.zip puzzles-9fbb365684ef662fc183ebd45c2eeb50f40589b5.tar.gz puzzles-9fbb365684ef662fc183ebd45c2eeb50f40589b5.tar.bz2 puzzles-9fbb365684ef662fc183ebd45c2eeb50f40589b5.tar.xz | |
Introduce, and implement as usefully as I can in all front ends, a
new function in the drawing API which permits the display of text
from outside basic ASCII. A fallback mechanism is provided so that
puzzles can give a list of strings they'd like to display in order
of preference and the system will return the best one it can manage;
puzzles are required to cope with ASCII-only front ends.
[originally from svn r8793]
Diffstat (limited to 'osx.m')
| -rw-r--r-- | osx.m | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -1344,7 +1344,8 @@ static void osx_draw_text(void *handle, int x, int y, int fonttype, int fontsize, int align, int colour, char *text) { frontend *fe = (frontend *)handle; - NSString *string = [NSString stringWithCString:text]; + NSString *string = [NSString stringWithCString:text + encoding:NSUTF8StringEncoding]; NSDictionary *attr; NSFont *font; NSSize size; @@ -1378,6 +1379,15 @@ static void osx_draw_text(void *handle, int x, int y, int fonttype, [string drawAtPoint:point withAttributes:attr]; } +static char *osx_text_fallback(void *handle, const char *const *strings, + int nstrings) +{ + /* + * We assume OS X can cope with any UTF-8 likely to be emitted + * by a puzzle. + */ + return dupstr(strings[0]); +} struct blitter { int w, h; int x, y; @@ -1478,7 +1488,8 @@ const struct drawing_api osx_drawing = { osx_blitter_save, osx_blitter_load, NULL, NULL, NULL, NULL, NULL, NULL, /* {begin,end}_{doc,page,puzzle} */ - NULL, /* line_width */ + NULL, NULL, /* line_width, line_dotted */ + osx_text_fallback, }; void deactivate_timer(frontend *fe) |