mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-20 23:51:29 -07:00
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]
This commit is contained in:
33
drawing.c
33
drawing.c
@ -127,6 +127,39 @@ void end_draw(drawing *dr)
|
||||
dr->api->end_draw(dr->handle);
|
||||
}
|
||||
|
||||
char *text_fallback(drawing *dr, const char *const *strings, int nstrings)
|
||||
{
|
||||
int i;
|
||||
|
||||
/*
|
||||
* If the drawing implementation provides one of these, use it.
|
||||
*/
|
||||
if (dr && dr->api->text_fallback)
|
||||
return dr->api->text_fallback(dr->handle, strings, nstrings);
|
||||
|
||||
/*
|
||||
* Otherwise, do the simple thing and just pick the first string
|
||||
* that fits in plain ASCII. It will then need no translation
|
||||
* out of UTF-8.
|
||||
*/
|
||||
for (i = 0; i < nstrings; i++) {
|
||||
const char *p;
|
||||
|
||||
for (p = strings[i]; *p; p++)
|
||||
if (*p & 0x80)
|
||||
break;
|
||||
if (!*p)
|
||||
return dupstr(strings[i]);
|
||||
}
|
||||
|
||||
/*
|
||||
* The caller was responsible for making sure _some_ string in
|
||||
* the list was in plain ASCII.
|
||||
*/
|
||||
assert(!"Should never get here");
|
||||
return NULL; /* placate optimiser */
|
||||
}
|
||||
|
||||
void status_bar(drawing *dr, char *text)
|
||||
{
|
||||
char *rewritten;
|
||||
|
Reference in New Issue
Block a user