view lisp/msw-glyphs.el @ 5038:9410323e4b0d

major dynarr fixes -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-20 Ben Wing <ben@xemacs.org> * device-x.c (Fx_get_resource): * dynarr.c: * dynarr.c (Dynarr_realloc): * dynarr.c (Dynarr_newf): * dynarr.c (Dynarr_lisp_realloc): * dynarr.c (Dynarr_lisp_newf): * dynarr.c (Dynarr_resize): * dynarr.c (Dynarr_insert_many): * dynarr.c (Dynarr_delete_many): * dynarr.c (Dynarr_memory_usage): * dynarr.c (stack_like_free): * file-coding.c (coding_reader): * file-coding.c (gzip_convert): * gutter.c (output_gutter): * lisp.h: * lisp.h (Dynarr_declare): * lisp.h (DYNARR_SET_LISP_IMP): * lisp.h (CHECK_NATNUM): * profile.c (create_timing_profile_table): * redisplay-output.c (sync_rune_structs): * redisplay-output.c (sync_display_line_structs): * redisplay-output.c (redisplay_output_window): * redisplay.c: * redisplay.c (get_display_block_from_line): * redisplay.c (add_ichar_rune_1): * redisplay.c (ensure_modeline_generated): * redisplay.c (generate_displayable_area): * redisplay.c (regenerate_window): * redisplay.c (update_line_start_cache): * signal.c: * signal.c (check_quit): Lots of rewriting of dynarr code. (1) Lots of documentation added. Also fix places that referenced a now-bogus internals node concerning redisplay critical sections. (2) Rename: Dynarr_add_lisp_string -> Dynarr_add_ext_lisp_string Dynarr_set_length -> Dynarr_set_lengthr ("restricted") Dynarr_increment -> Dynarr_incrementr Dynarr_resize_if -> Dynarr_resize_to_add (3) New functions: Dynarr_elsize = dy->elsize_ Dynarr_set_length(): Set length, resizing as necessary Dynarr_set_length_and_zero(): Set length, resizing as necessary, zeroing out new elements Dynarr_increase_length(), Dynarr_increase_length_and_zero(): Optimization of Dynarr_set_length(), Dynarr_set_length_and_zero() when size is known to increase Dynarr_resize_to_fit(): Resize as necessary to fit a given length. Dynarr_set(): Set element at a given position, increasing length as necessary and setting any newly created positions to 0 (4) Use Elemcount, Bytecount. (5) Rewrite many macros as inline functions.
author Ben Wing <ben@xemacs.org>
date Sat, 20 Feb 2010 03:46:22 -0600
parents 70921960b980
children 308d34e9f07d
line wrap: on
line source

;;; msw-glyphs.el --- Support for glyphs in ms windows

;; Copyright (C) 1994, 1997 Free Software Foundation, Inc.
;; Copyright (C) 2002 Ben Wing.

;; Author: Kirill M. Katsnelson <kkm@kis.ru>
;; Maintainer: XEmacs Development Team
;; Keywords: extensions, internal, dumped

;; This file is part of XEmacs.

;; XEmacs is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; XEmacs is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with XEmacs; see the file COPYING.  If not, write to the 
;; Free Software Foundation, 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.

;;; Synched up with: Not in FSF.

;;; Commentary:

;; Initialization code for MS Windows glyphs.

;; This file is dumped with XEmacs (when MS Windows display support is
;; compiled in). Make sure this is the first of msw-*.el files
;; dumped.

;;; Code:

(defun msgdi-device-p (&optional device)
  "Return non-nil if DEVICE is a GDI device, that is 'mswindows or 'msprinter.
MS GDI devices are mutuially WYSIWIG-compatible, so that many common glyph,
color and font properties apply to them equally.

This function is also a predicate for 'msgdi device tag, matching this
device class."
  (memq (device-type device) '(mswindows msprinter)))

(progn

  (define-specifier-tag 'msgdi (function msgdi-device-p))

  (set-console-type-image-conversion-list
   'mswindows
   `(("\\.bmp\\'" [bmp :file nil] 2)
     ("\\`BM" [bmp :data nil] 2)
     ,@(if (featurep 'xpm) '(("\\.xpm\\'" [xpm :file nil] 2)))
     ("\\.xbm\\'" [xbm :file nil] 2)
     ,@(if (featurep 'xpm) '(("\\`/\\* XPM \\*/" [xpm :data nil] 2)))
     ,@(if (featurep 'gif) '(("\\.gif\\'" [gif :file nil] 2)
			     ("\\`GIF8[79]" [gif :data nil] 2)))
     ,@(if (featurep 'jpeg) '(("\\.jpe?g\\'" [jpeg :file nil] 2)))
     ;; all of the JFIF-format JPEG's that I've seen begin with
     ;; the following.  I have no idea if this is standard.
     ,@(if (featurep 'jpeg) '(("\\`\377\330\377\340\000\020JFIF"
			       [jpeg :data nil] 2)))
     ,@(if (featurep 'png) '(("\\.png\\'" [png :file nil] 2)))
     ,@(if (featurep 'png) '(("\\`\211PNG" [png :data nil] 2)))
     ,@(if (featurep 'tiff) '(("\\.tif?f\\'" [tiff :file nil] 2)))
     ("\\`X-Face:" [string :data "[xface]"])
     ("\\`/\\* XPM \\*/" [string :data "[xpm]"])
     ("" [string :data nil] 2)
     ;; this last one is here for pointers and icons and such --
     ;; strings are not allowed so they will be ignored.
     ("" [nothing])))

  (set-console-type-image-conversion-list
   'msprinter (console-type-image-conversion-list 'mswindows))

  (set-face-font 'border-glyph "WingDings:Regular:11::Symbol"
		 'global 'msgdi)
  (set-glyph-image continuation-glyph "\xC3" 'global 'msgdi)
  (set-glyph-image truncation-glyph "\xF0" 'global 'msgdi)
  (set-glyph-image hscroll-glyph "\xEF" 'global 'msgdi)
  (set-glyph-contrib-p continuation-glyph nil)
  (set-glyph-contrib-p truncation-glyph nil)
  (set-glyph-contrib-p hscroll-glyph nil)

  (set-glyph-image octal-escape-glyph "\\")
  (set-glyph-image control-arrow-glyph "^")
  (set-glyph-image invisible-text-glyph " ...")

  (cond ((featurep 'xpm)
	 (set-glyph-image frame-icon-glyph
			  (concat "../etc/" "xemacs-icon3.xpm")
			  'global 'mswindows)
	 (set-glyph-image xemacs-logo
			  (concat "../etc/"
				  (if emacs-beta-version
				      "xemacs-beta.xpm"
				    "xemacs.xpm"))
			  'global 'msgdi))
	(t
	 (set-glyph-image xemacs-logo
			  "XEmacs <insert spiffy graphic logo here>"
			  'global 'msgdi)))
)

;;; msw-glyphs.el ends here