comparison src/w32fns.c @ 95894:76261fd18708

* w32fns.c (Fw32_select_font): Removed old font API function. * w32font.c (logfont_to_fcname): New function. (Fx_select_font): New font dialog function compatible with GTK/fontconfig version. * font.c (font_style_symbolic_from_value): New function. (font_style_symbolic): Use it. * font.h (font_style_symbolic_from_value): Declare new function.
author Jason Rumney <jasonr@gnu.org>
date Fri, 13 Jun 2008 14:29:47 +0000
parents 4390d64d3328
children efbaf6995245
comparison
equal deleted inserted replaced
95893:680b6bde042b 95894:76261fd18708
8193 8193
8194 /*********************************************************************** 8194 /***********************************************************************
8195 w32 specialized functions 8195 w32 specialized functions
8196 ***********************************************************************/ 8196 ***********************************************************************/
8197 8197
8198 DEFUN ("w32-select-font", Fw32_select_font, Sw32_select_font, 0, 2, 0,
8199 doc: /* Select a font for the named FRAME using the W32 font dialog.
8200 Return an X-style font string corresponding to the selection.
8201
8202 If FRAME is omitted or nil, it defaults to the selected frame.
8203 If INCLUDE-PROPORTIONAL is non-nil, include proportional fonts
8204 in the font selection dialog. */)
8205 (frame, include_proportional)
8206 Lisp_Object frame, include_proportional;
8207 {
8208 FRAME_PTR f = check_x_frame (frame);
8209 CHOOSEFONT cf;
8210 LOGFONT lf;
8211 TEXTMETRIC tm;
8212 HDC hdc;
8213 HANDLE oldobj;
8214 char buf[100];
8215
8216 bzero (&cf, sizeof (cf));
8217 bzero (&lf, sizeof (lf));
8218
8219 cf.lStructSize = sizeof (cf);
8220 cf.hwndOwner = FRAME_W32_WINDOW (f);
8221 cf.Flags = CF_FORCEFONTEXIST | CF_SCREENFONTS | CF_NOVERTFONTS;
8222
8223 /* Unless include_proportional is non-nil, limit the selection to
8224 monospaced fonts. */
8225 if (NILP (include_proportional))
8226 cf.Flags |= CF_FIXEDPITCHONLY;
8227
8228 cf.lpLogFont = &lf;
8229
8230 /* Initialize as much of the font details as we can from the current
8231 default font. */
8232 hdc = GetDC (FRAME_W32_WINDOW (f));
8233 oldobj = SelectObject (hdc, FONT_COMPAT (FRAME_FONT (f))->hfont);
8234 GetTextFace (hdc, LF_FACESIZE, lf.lfFaceName);
8235 if (GetTextMetrics (hdc, &tm))
8236 {
8237 lf.lfHeight = tm.tmInternalLeading - tm.tmHeight;
8238 lf.lfWeight = tm.tmWeight;
8239 lf.lfItalic = tm.tmItalic;
8240 lf.lfUnderline = tm.tmUnderlined;
8241 lf.lfStrikeOut = tm.tmStruckOut;
8242 lf.lfCharSet = tm.tmCharSet;
8243 cf.Flags |= CF_INITTOLOGFONTSTRUCT;
8244 }
8245 SelectObject (hdc, oldobj);
8246 ReleaseDC (FRAME_W32_WINDOW (f), hdc);
8247
8248 if (!ChooseFont (&cf) || !w32_to_x_font (&lf, buf, 100, NULL))
8249 return Qnil;
8250
8251 return build_string (buf);
8252 }
8253
8254 DEFUN ("w32-send-sys-command", Fw32_send_sys_command, 8198 DEFUN ("w32-send-sys-command", Fw32_send_sys_command,
8255 Sw32_send_sys_command, 1, 2, 0, 8199 Sw32_send_sys_command, 1, 2, 0,
8256 doc: /* Send frame a Windows WM_SYSCOMMAND message of type COMMAND. 8200 doc: /* Send frame a Windows WM_SYSCOMMAND message of type COMMAND.
8257 Some useful values for COMMAND are #xf030 to maximize frame (#xf020 8201 Some useful values for COMMAND are #xf030 to maximize frame (#xf020
8258 to minimize), #xf120 to restore frame to original size, and #xf100 8202 to minimize), #xf120 to restore frame to original size, and #xf100
9306 defsubr (&Sx_synchronize); 9250 defsubr (&Sx_synchronize);
9307 defsubr (&Sx_focus_frame); 9251 defsubr (&Sx_focus_frame);
9308 9252
9309 /* W32 specific functions */ 9253 /* W32 specific functions */
9310 9254
9311 defsubr (&Sw32_select_font);
9312 defsubr (&Sw32_define_rgb_color); 9255 defsubr (&Sw32_define_rgb_color);
9313 defsubr (&Sw32_default_color_map); 9256 defsubr (&Sw32_default_color_map);
9314 defsubr (&Sw32_load_color_file); 9257 defsubr (&Sw32_load_color_file);
9315 defsubr (&Sw32_send_sys_command); 9258 defsubr (&Sw32_send_sys_command);
9316 defsubr (&Sw32_shell_execute); 9259 defsubr (&Sw32_shell_execute);