comparison src/objects-msw.c @ 793:e38acbeb1cae

[xemacs-hg @ 2002-03-29 04:46:17 by ben] lots o' fixes etc/ChangeLog: New file. Separated out all entries for etc/ into their own ChangeLog. Includes entries for the following files: etc/BABYL, etc/BETA, etc/CHARSETS, etc/DISTRIB, etc/Emacs.ad, etc/FTP, etc/GNUS-NEWS, etc/GOATS, etc/HELLO, etc/INSTALL, etc/MACHINES, etc/MAILINGLISTS, etc/MSDOS, etc/MYTHOLOGY, etc/NEWS, etc/OXYMORONS, etc/PACKAGES, etc/README, etc/TUTORIAL, etc/TUTORIAL.de, etc/TUTORIAL.ja, etc/TUTORIAL.ko, etc/TUTORIAL.se, etc/aliases.ksh, etc/altrasoft-logo.xpm, etc/check_cygwin_setup.sh, etc/custom/example-themes/europe-theme.el, etc/custom/example-themes/ex-custom-file, etc/custom/example-themes/example-theme.el, etc/e/eterm.ti, etc/edt-user.doc, etc/enriched.doc, etc/etags.1, etc/gnuserv.1, etc/gnuserv.README, etc/package-index.LATEST.gpg, etc/package-index.LATEST.pgp, etc/photos/jan.png, etc/recycle.xpm, etc/refcard.tex, etc/sample.Xdefaults, etc/sample.emacs, etc/sgml/CATALOG, etc/sgml/HTML32.dtd, etc/skk/SKK.tut.E, etc/smilies/Face_ase.xbm, etc/smilies/Face_ase2.xbm, etc/smilies/Face_ase3.xbm, etc/smilies/Face_smile.xbm, etc/smilies/Face_weep.xbm, etc/sounds, etc/toolbar, etc/toolbar/workshop-cap-up.xpm, etc/xemacs-ja.1, etc/xemacs.1, etc/yow.lines, etc\BETA, etc\NEWS, etc\README, etc\TUTORIAL, etc\TUTORIAL.de, etc\check_cygwin_setup.sh, etc\sample.init.el, etc\unicode\README, etc\unicode\mule-ucs\*, etc\unicode\other\* unicode/unicode-consortium/8859-16.TXT: New file. mule/english.el: Define this charset now, since a bug was fixed that formerly prevented it. mule/ethio-util.el: Fix compile errors involving Unicode `characters', which should be integers. Makefile.in.in: Always include gui.c, to fix compile error when TTY-only. EmacsFrame.c, abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, bytecode.h, callint.c, callproc.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.c, console-msw.h, console-tty.c, console-x.c, console-x.h, console.c, console.h, data.c, database.c, device-gtk.c, device-msw.c, device-x.c, device.c, device.h, dialog-msw.c, doc.c, doprnt.c, dumper.c, dynarr.c, editfns.c, eldap.c, eldap.h, elhash.c, elhash.h, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.c, events.h, extents.c, extents.h, faces.c, faces.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, frame-gtk.c, frame-msw.c, frame-tty.c, frame-x.c, frame.c, frame.h, free-hook.c, general-slots.h, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gtk-xemacs.c, gui-msw.c, gui-x.c, gui-x.h, gui.c, gui.h, gutter.c, gutter.h, indent.c, input-method-xlib.c, insdel.c, keymap.c, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-canna.c, mule-ccl.c, mule-charset.c, mule-wnnfns.c, native-gtk-toolbar.c, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, opaque.c, opaque.h, postgresql.c, postgresql.h, print.c, process-unix.c, process.c, process.h, rangetab.c, rangetab.h, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, search.c, select-gtk.c, select-x.c, sound.c, specifier.c, specifier.h, strftime.c, symbols.c, symeval.h, syntax.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, toolbar.h, tooltalk.c, tooltalk.h, ui-gtk.c, ui-gtk.h, undo.c, vm-limit.c, window.c, window.h: Eliminate XSETFOO. Replace all usages with wrap_foo(). Make symbol->name a Lisp_Object, not Lisp_String *. Eliminate nearly all uses of Lisp_String * in favor of Lisp_Object, and correct macros so most of them favor Lisp_Object. Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings, but at level `debug' (usually ignored). Use it when instantiating specifiers, so problems can be debugged. Move log-warning-minimum-level into C so that we can optimize ERROR_ME_DEBUG_WARN. Fix warning levels consistent with new definitions. Add default_ and parent fields to char table; not yet implemented. New fun Dynarr_verify(); use for further error checking on Dynarrs. Rearrange code at top of lisp.h in conjunction with dynarr changes. Fix eifree(). Use Eistrings in various places (format_event_object(), where_is_to_char(), and callers thereof) to avoid fixed-size strings buffers. New fun write_eistring(). Reindent and fix GPM code to follow standards. Set default MS Windows font to Lucida Console (same size as Courier New but less interline spacing, so more lines fit). Increase default frame size on Windows to 50 lines. (If that's too big for the workspace, the frame will be shrunk as necessary.) Fix problem with text files with no newlines (). (Change `convert-eol' coding system to use `nil' for autodetect, consistent with make-coding-system.) Correct compile warnings in vm-limit.c. Fix handling of reverse-direction charsets to avoid errors when opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el. Recode some object printing methods to use write_fmt_string() instead of a fixed buffer and sprintf. Turn on display of png comments as warnings (level `info'), now that they're unobtrusive. Revamped the sound documentation. Fixed bug in redisplay w.r.t. hscroll/truncation/continuation glyphs causing jumping up and down of the lines, since they're bigger than the line size. (It was seen most obviously when there's a horizontal scroll bar, e.g. do C-h a glyph or something like that.) The problem was that the glyph-contrib-p setting on glyphs was ignored even if it was set properly, which it wasn't until now.
author ben
date Fri, 29 Mar 2002 04:49:13 +0000
parents 026c5bf9c134
children a5954632b187
comparison
equal deleted inserted replaced
792:4e83fdb13eb9 793:e38acbeb1cae
29 29
30 Jamie Zawinski, Chuck Thompson, Ben Wing 30 Jamie Zawinski, Chuck Thompson, Ben Wing
31 Rewritten for mswindows by Jonathan Harris, November 1997 for 21.0. 31 Rewritten for mswindows by Jonathan Harris, November 1997 for 21.0.
32 */ 32 */
33 33
34 /* This function mostly Mule-ized (except perhaps some Unicode splitting). 34 /* This function Mule-ized by Ben Wing, 3-24-02. */
35 5-2000. */
36 35
37 /* TODO: palette handling */ 36 /* TODO: palette handling */
38 37
39 #include <config.h> 38 #include <config.h>
40 #include "lisp.h" 39 #include "lisp.h"
1266 static void 1265 static void
1267 mswindows_print_color_instance (Lisp_Color_Instance *c, 1266 mswindows_print_color_instance (Lisp_Color_Instance *c,
1268 Lisp_Object printcharfun, 1267 Lisp_Object printcharfun,
1269 int escapeflag) 1268 int escapeflag)
1270 { 1269 {
1271 Char_ASCII buf[32];
1272 COLORREF color = COLOR_INSTANCE_MSWINDOWS_COLOR (c); 1270 COLORREF color = COLOR_INSTANCE_MSWINDOWS_COLOR (c);
1273 sprintf (buf, " %06ld=(%04X,%04X,%04X)", color & 0xffffff, 1271 write_fmt_string (printcharfun,
1274 GetRValue (color) * 257, GetGValue (color) * 257, 1272 " %06ld=(%04X,%04X,%04X)", color & 0xffffff,
1275 GetBValue (color) * 257); 1273 GetRValue (color) * 257, GetGValue (color) * 257,
1276 write_c_string (buf, printcharfun); 1274 GetBValue (color) * 257);
1277 } 1275 }
1278 1276
1279 static void 1277 static void
1280 mswindows_finalize_color_instance (Lisp_Color_Instance *c) 1278 mswindows_finalize_color_instance (Lisp_Color_Instance *c)
1281 { 1279 {
1289 static int 1287 static int
1290 mswindows_color_instance_equal (Lisp_Color_Instance *c1, 1288 mswindows_color_instance_equal (Lisp_Color_Instance *c1,
1291 Lisp_Color_Instance *c2, 1289 Lisp_Color_Instance *c2,
1292 int depth) 1290 int depth)
1293 { 1291 {
1294 return (COLOR_INSTANCE_MSWINDOWS_COLOR(c1) == 1292 return (COLOR_INSTANCE_MSWINDOWS_COLOR (c1) ==
1295 COLOR_INSTANCE_MSWINDOWS_COLOR(c2)); 1293 COLOR_INSTANCE_MSWINDOWS_COLOR (c2));
1296 } 1294 }
1297 1295
1298 static unsigned long 1296 static unsigned long
1299 mswindows_color_instance_hash (Lisp_Color_Instance *c, int depth) 1297 mswindows_color_instance_hash (Lisp_Color_Instance *c, int depth)
1300 { 1298 {
1301 return (unsigned long) COLOR_INSTANCE_MSWINDOWS_COLOR(c); 1299 return (unsigned long) COLOR_INSTANCE_MSWINDOWS_COLOR (c);
1302 } 1300 }
1303 1301
1304 static Lisp_Object 1302 static Lisp_Object
1305 mswindows_color_instance_rgb_components (Lisp_Color_Instance *c) 1303 mswindows_color_instance_rgb_components (Lisp_Color_Instance *c)
1306 { 1304 {
1676 static void 1674 static void
1677 mswindows_print_font_instance (Lisp_Font_Instance *f, 1675 mswindows_print_font_instance (Lisp_Font_Instance *f,
1678 Lisp_Object printcharfun, 1676 Lisp_Object printcharfun,
1679 int escapeflag) 1677 int escapeflag)
1680 { 1678 {
1681 Intbyte buf[10]; 1679 write_fmt_string (printcharfun, " 0x%lx",
1682 qxesprintf (buf, " 0x%lx", 1680 (unsigned long)
1683 (unsigned long)FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f,0,0)); 1681 FONT_INSTANCE_MSWINDOWS_HFONT_VARIANT (f, 0, 0));
1684 write_string (buf, printcharfun); 1682
1685 } 1683 }
1686 1684
1687 static Lisp_Object 1685 static Lisp_Object
1688 mswindows_list_fonts (Lisp_Object pattern, Lisp_Object device) 1686 mswindows_list_fonts (Lisp_Object pattern, Lisp_Object device)
1689 { 1687 {
1727 1725
1728 #### does not canonicalize given fields! needs to be merged 1726 #### does not canonicalize given fields! needs to be merged
1729 with initialize_font_instance(). */ 1727 with initialize_font_instance(). */
1730 1728
1731 int nsep = 0; 1729 int nsep = 0;
1732 CIntbyte *ptr = (CIntbyte *) XSTRING_DATA (f->name); 1730 Intbyte *ptr = (Intbyte *) XSTRING_DATA (f->name);
1733 CIntbyte *name = (CIntbyte *) alloca (XSTRING_LENGTH (f->name) + 19); 1731 Intbyte *name = (Intbyte *) alloca (XSTRING_LENGTH (f->name) + 19);
1734 1732
1735 strcpy (name, ptr); 1733 qxestrcpy (name, ptr);
1736 1734
1737 while ((ptr = strchr (ptr, ':')) != 0) 1735 while ((ptr = qxestrchr (ptr, ':')) != 0)
1738 { 1736 {
1739 ptr++; 1737 ptr++;
1740 nsep++; 1738 nsep++;
1741 } 1739 }
1742 1740
1743 switch (nsep) 1741 switch (nsep)
1744 { 1742 {
1745 case 0: 1743 case 0:
1746 strcat (name, ":Regular:10::Western"); 1744 qxestrcat (name, ":Regular:10::Western");
1747 break; 1745 break;
1748 case 1: 1746 case 1:
1749 strcat (name, ":10::Western"); 1747 qxestrcat (name, ":10::Western");
1750 break; 1748 break;
1751 case 2: 1749 case 2:
1752 strcat (name, "::Western"); 1750 qxestrcat (name, "::Western");
1753 break; 1751 break;
1754 case 3: 1752 case 3:
1755 strcat (name, ":Western"); 1753 qxestrcat (name, ":Western");
1756 break; 1754 break;
1757 default:; 1755 default:;
1758 } 1756 }
1759 1757
1760 return build_string (name); 1758 return build_string (name);
1868 else 1866 else
1869 { 1867 {
1870 HDC hdc = CreateCompatibleDC (NULL); 1868 HDC hdc = CreateCompatibleDC (NULL);
1871 Lisp_Object font_list = DEVICE_MSWINDOWS_FONTLIST (d); 1869 Lisp_Object font_list = DEVICE_MSWINDOWS_FONTLIST (d);
1872 HFONT hfont = create_hfont_from_font_spec (the_nonreloc, hdc, Qnil, 1870 HFONT hfont = create_hfont_from_font_spec (the_nonreloc, hdc, Qnil,
1873 font_list, ERROR_ME_NOT); 1871 font_list,
1872 ERROR_ME_DEBUG_WARN);
1874 1873
1875 if (!hfont || !(hfont = (HFONT) SelectObject (hdc, hfont))) 1874 if (!hfont || !(hfont = (HFONT) SelectObject (hdc, hfont)))
1876 { 1875 {
1877 nope: 1876 nope:
1878 DeleteDC (hdc); 1877 DeleteDC (hdc);