diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-04-03 22:08:05 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-04-03 22:08:05 +0200 |
commit | 7c1c6dbb6817640fd3956a0d5417da23fde336d8 (patch) | |
tree | 91ff75d4e867032fb58473b55021964b751cbadb /src/os_mswin.c | |
parent | 3dda7db4e1f7c4a8110a1f83001ec36b46693d27 (diff) | |
download | vim-git-7c1c6dbb6817640fd3956a0d5417da23fde336d8.tar.gz |
patch 7.4.1705v7.4.1705
Problem: The 'guifont' option does not allow for a quality setting.
Solution: Add the "q" item, supported on MS-Windows. (Yasuhiro Matsumoto)
Diffstat (limited to 'src/os_mswin.c')
-rw-r--r-- | src/os_mswin.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/os_mswin.c b/src/os_mswin.c index 607fd6a51..77582cc47 100644 --- a/src/os_mswin.c +++ b/src/os_mswin.c @@ -2689,6 +2689,33 @@ charset_pairs[] = {NULL, 0} }; +struct quality_pair +{ + char *name; + DWORD quality; +}; + +static struct quality_pair +quality_pairs[] = { +#ifdef CLEARTYPE_QUALITY + {"CLEARTYPE", CLEARTYPE_QUALITY}, +#endif +#ifdef ANTIALIASED_QUALITY + {"ANTIALIASED", ANTIALIASED_QUALITY}, +#endif +#ifdef NOANTIALIASED_QUALITY + {"NOANTIALIASED", NOANTIALIASED_QUALITY}, +#endif +#ifdef PROOF_QUALITY + {"PROOF", PROOF_QUALITY}, +#endif +#ifdef PROOF_QUALITY + {"DRAFT", DRAFT_QUALITY}, +#endif + {"DEFAULT", DEFAULT_QUALITY}, + {NULL, 0} +}; + /* * Convert a charset ID to a name. * Return NULL when not recognized. @@ -2704,6 +2731,21 @@ charset_id2name(int id) return cp->name; } +/* + * Convert a quality ID to a name. + * Return NULL when not recognized. + */ + char * +quality_id2name(DWORD id) +{ + struct quality_pair *qp; + + for (qp = quality_pairs; qp->name != NULL; ++qp) + if (id == qp->quality) + break; + return qp->name; +} + static const LOGFONT s_lfDefault = { -12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, @@ -2985,6 +3027,26 @@ get_logfont( } break; } + case 'q': + { + struct quality_pair *qp; + + for (qp = quality_pairs; qp->name != NULL; ++qp) + if (STRNCMP(p, qp->name, strlen(qp->name)) == 0) + { + lf->lfQuality = qp->quality; + p += strlen(qp->name); + break; + } + if (qp->name == NULL && verbose) + { + vim_snprintf((char *)IObuff, IOSIZE, + _("E244: Illegal quality name \"%s\" in font name \"%s\""), p, name); + EMSG(IObuff); + break; + } + break; + } default: if (verbose) { |