FUNKY_SCO
};
+enum {
+ FQ_DEFAULT, FQ_ANTIALIASED, FQ_NONANTIALIASED, FQ_CLEARTYPE
+};
+
extern const char *const ttymodes[];
enum {
int win_name_always;
int width, height;
FontSpec font;
+ int font_quality;
Filename logfilename;
int logtype;
int logxfovr;
write_setting_i(sesskey, "TermWidth", cfg->width);
write_setting_i(sesskey, "TermHeight", cfg->height);
write_setting_fontspec(sesskey, "Font", cfg->font);
+ write_setting_i(sesskey, "FontQuality", cfg->font_quality);
write_setting_i(sesskey, "FontVTMode", cfg->vtmode);
write_setting_i(sesskey, "UseSystemColours", cfg->system_colour);
write_setting_i(sesskey, "TryPalette", cfg->try_palette);
gppi(sesskey, "TermWidth", 80, &cfg->width);
gppi(sesskey, "TermHeight", 24, &cfg->height);
gppfont(sesskey, "Font", &cfg->font);
+ gppi(sesskey, "FontQuality", FQ_DEFAULT, &cfg->font_quality);
gppi(sesskey, "FontVTMode", VT_UNICODE, (int *) &cfg->vtmode);
gppi(sesskey, "UseSystemColours", 0, &cfg->system_colour);
gppi(sesskey, "TryPalette", 0, &cfg->try_palette);
dlg_stdcheckbox_handler, I(offsetof(Config,sunken_edge)));
/*
+ * Configurable font quality settings for Windows.
+ */
+ s = ctrl_getset(b, "Window/Appearance", "font",
+ "Font settings");
+ ctrl_radiobuttons(s, "Font quality:", 'q', 2,
+ HELPCTX(appearance_font),
+ dlg_stdradiobutton_handler,
+ I(offsetof(Config, font_quality)),
+ "Antialiased", I(FQ_ANTIALIASED),
+ "Non-Antialiased", I(FQ_NONANTIALIASED),
+ "ClearType", I(FQ_CLEARTYPE),
+ "Default", I(FQ_DEFAULT), NULL);
+
+ /*
* Cyrillic Lock is a horrid misfeature even on Windows, and
* the least we can do is ensure it never makes it to any other
* platform (at least unless someone fixes it!).
#define f(i,c,w,u) \
fonts[i] = CreateFont (font_height, font_width, 0, 0, w, FALSE, u, FALSE, \
c, OUT_DEFAULT_PRECIS, \
- CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, \
+ CLIP_DEFAULT_PRECIS, FONT_QUALITY(cfg.font_quality), \
FIXED_PITCH | FF_DONTCARE, cfg.font.name)
f(FONT_NORMAL, cfg.font.charset, fw_dontcare, FALSE);
fonts[fontno] =
CreateFont(font_height * (1 + !!(fontno & FONT_HIGH)), x, 0, 0, w,
FALSE, u, FALSE, c, OUT_DEFAULT_PRECIS,
- CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
+ CLIP_DEFAULT_PRECIS, FONT_QUALITY(cfg.font_quality),
FIXED_PITCH | FF_DONTCARE, s);
fontflag[fontno] = 1;
cfg.font.isbold != prev_cfg.font.isbold ||
cfg.font.height != prev_cfg.font.height ||
cfg.font.charset != prev_cfg.font.charset ||
+ cfg.font_quality != prev_cfg.font_quality ||
cfg.vtmode != prev_cfg.vtmode ||
cfg.bold_colour != prev_cfg.bold_colour ||
cfg.resize_action == RESIZE_DISABLED ||
int charset;
};
+#ifndef CLEARTYPE_QUALITY
+#define CLEARTYPE_QUALITY 5
+#endif
+#define FONT_QUALITY(fq) ( \
+ (fq) == FQ_DEFAULT ? DEFAULT_QUALITY : \
+ (fq) == FQ_ANTIALIASED ? ANTIALIASED_QUALITY : \
+ (fq) == FQ_NONANTIALIASED ? NONANTIALIASED_QUALITY : \
+ CLEARTYPE_QUALITY)
+
+/* VC++ 6 doesn't have GetWindowLongPtr and friends. Degrade nicely. */
+
+#ifndef GWLP_USERDATA
+#define GetWindowLongPtr GetWindowLong
+#define SetWindowLongPtr SetWindowLong
+#define GWLP_USERDATA GWL_USERDATA
+#define DWLP_MSGRESULT DWL_MSGRESULT
+#endif
+
#define BOXFLAGS DLGWINDOWEXTRA
+#ifdef LONG_PTR
#define BOXRESULT (DLGWINDOWEXTRA + sizeof(LONG_PTR))
+#else
+#define BOXRESULT (DLGWINDOWEXTRA + 4)
+#endif
#define DF_END 0x0001
/*