Mercurial > emacs
changeset 89531:f035500271d2
(ps-generate-string-list): Function deleted.
(ps-rh-cache, ps-lf-cache, ps-rf-cache): Variables deleted.
(ps-header-footer-string): Function deleted.
(ps-encode-header-string-function): New variable
(ps-generate-header-line): Call ps-encode-header-string-function.
(ps-basic-plot-string-function): New variable
(ps-begin-job): Set ps-basic-plot-string-function and
ps-encode-header-string-function. For setting up headers and
footers, don't use caches such as ps-rh-cache. Don't call
ps-mule-begin-page.
(ps-basic-plot-str): Don't call ps-mule-prepare-ascii-font.
(ps-basic-plot-string): Likewise.
(ps-control-character): Likewise.
(ps-plot-region): Don't pay attention to composition and
non-ASCII characters.
(ps-generate): Call ps-mule-end-job.
(ps-mule-prepare-ascii-font): Delete autoload.
(ps-mule-set-ascii-font): Likewise.
(ps-mule-plot-string): Likewise.
(ps-mule-begin-page): Likewise.
(ps-mule-end-job): Declare autoload.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 26 Sep 2003 11:59:31 +0000 |
parents | 498e5353548a |
children | 3e48c579e663 |
files | lisp/ps-print.el |
diffstat | 1 files changed, 34 insertions(+), 114 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ps-print.el Fri Sep 26 11:42:33 2003 +0000 +++ b/lisp/ps-print.el Fri Sep 26 11:59:31 2003 +0000 @@ -4666,63 +4666,35 @@ (goto-char (point-max)) (insert-file fname))) -;; These functions are used in `ps-mule' to get charset of header and footer. -;; To avoid unnecessary calls to functions in `ps-left-header', -;; `ps-right-header', `ps-left-footer' and `ps-right-footer'. - -(defun ps-generate-string-list (content) - (let (str) - (while content - (setq str (cons (cond - ((stringp (car content)) - (car content)) - ((and (symbolp (car content)) (fboundp (car content))) - (concat "(" (funcall (car content)) ")")) - ((and (symbolp (car content)) (boundp (car content))) - (concat "(" (symbol-value (car content)) ")")) - (t - "")) - str) - content (cdr content))) - (nreverse str))) - -(defvar ps-lh-cache nil) -(defvar ps-rh-cache nil) -(defvar ps-lf-cache nil) -(defvar ps-rf-cache nil) - -(defun ps-header-footer-string () - (and ps-print-header - (setq ps-lh-cache (ps-generate-string-list ps-left-header) - ps-rh-cache (ps-generate-string-list ps-right-header))) - (and ps-print-footer - (setq ps-lf-cache (ps-generate-string-list ps-left-footer) - ps-rf-cache (ps-generate-string-list ps-right-footer))) - (mapconcat 'identity - (append ps-lh-cache ps-rh-cache ps-lf-cache ps-rf-cache) - "")) - ;; These functions insert the arrays that define the contents of the headers. +(defvar ps-encode-header-string-function nil) + (defun ps-generate-header-line (fonttag &optional content) (ps-output " [" fonttag " ") (cond ;; Literal strings should be output as is -- the string must contain its own ;; PS string delimiters, '(' and ')', if necessary. ((stringp content) - (ps-output (ps-mule-encode-header-string content fonttag))) + (ps-output content)) ;; Functions are called -- they should return strings; they will be inserted ;; as strings and the PS string delimiters added. ((and (symbolp content) (fboundp content)) - (ps-output-string (ps-mule-encode-header-string (funcall content) - fonttag))) + (if (fboundp ps-encode-header-string-function) + (dolist (l (funcall ps-encode-header-string-function + (funcall content) fonttag)) + (ps-output-string l)) + (ps-output-string (funcall content)))) ;; Variables will have their contents inserted. They should contain ;; strings, and will be inserted as strings. ((and (symbolp content) (boundp content)) - (ps-output-string (ps-mule-encode-header-string (symbol-value content) - fonttag))) + (if (fboundp ps-encode-header-string-function) + (dolist (l (funcall ps-encode-header-string-function + (symbol-value content) fonttag)) + (ps-output-string l)) + (ps-output-string (symbol-value content)))) ;; Anything else will get turned into an empty string. (t @@ -5676,6 +5648,7 @@ (t (list default default default)) )) +(defvar ps-basic-plot-string-function 'ps-basic-plot-string) (defun ps-begin-job () ;; prologue files @@ -5764,7 +5737,11 @@ ps-color-p (and ps-print-color-p (ps-color-device)) ps-print-color-scale (if ps-color-p (float (car (ps-color-values "white"))) - 1.0)) + 1.0) + ;; Set up default functions. They may be overridden by + ;; ps-mule-begin-job. + ps-basic-plot-string-function 'ps-basic-plot-string + ps-encode-header-string-function nil) ;; initialize page dimensions (ps-get-page-dimensions) ;; final check @@ -5845,28 +5822,19 @@ (format "/PageNumber %d def\n" (ps-page-number))) (when ps-print-header - (ps-generate-header "HeaderLinesLeft" "/h0" "/h1" - (or ps-lh-cache ps-left-header)) - (ps-generate-header "HeaderLinesRight" "/h0" "/h1" - (or ps-rh-cache ps-right-header)) - (ps-output (format "%d SetHeaderLines\n" ps-header-lines)) - (setq ps-lh-cache nil - ps-rh-cache nil)) + (ps-generate-header "HeaderLinesLeft" "/h0" "/h1" ps-left-header) + (ps-generate-header "HeaderLinesRight" "/h0" "/h1" ps-right-header) + (ps-output (format "%d SetHeaderLines\n" ps-header-lines))) (when ps-print-footer - (ps-generate-header "FooterLinesLeft" "/H0" "/H0" - (or ps-lf-cache ps-left-footer)) - (ps-generate-header "FooterLinesRight" "/H0" "/H0" - (or ps-rf-cache ps-right-footer)) - (ps-output (format "%d SetFooterLines\n" ps-footer-lines)) - (setq ps-lf-cache nil - ps-rf-cache nil)) + (ps-generate-header "FooterLinesLeft" "/H0" "/H0" ps-left-footer) + (ps-generate-header "FooterLinesRight" "/H0" "/H0" ps-right-footer) + (ps-output (format "%d SetFooterLines\n" ps-footer-lines))) (ps-output (number-to-string ps-lines-printed) " BeginPage\n") (ps-set-font ps-current-font) (ps-set-bg ps-current-bg) - (ps-set-color ps-current-color) - (ps-mule-begin-page)) + (ps-set-color ps-current-color)) (defsubst ps-skip-newline (limit) (setq ps-showline-count (1+ ps-showline-count) @@ -5910,7 +5878,6 @@ (ps-avg-char-width 'ps-font-for-text))) (to (car wrappoint)) (str (substring string from to))) - (ps-mule-prepare-ascii-font str) (ps-output-string str) (ps-output " S\n") wrappoint)) @@ -5920,7 +5887,6 @@ (ps-avg-char-width 'ps-font-for-text))) (to (car wrappoint)) (string (buffer-substring-no-properties from to))) - (ps-mule-prepare-ascii-font string) (ps-output-string string) (ps-output " S\n") wrappoint)) @@ -6024,26 +5990,16 @@ (if (re-search-forward ps-control-or-escape-regexp to t) ;; region with some control characters or some multi-byte characters (let* ((match-point (match-beginning 0)) - (match (char-after match-point)) - (composition (ps-e-find-composition from (1+ match-point)))) - (if composition - (if (and (nth 2 composition) - (<= (car composition) match-point)) - (progn - (setq match-point (car composition) - match 0) - (goto-char (nth 1 composition))) - (setq composition nil))) + (match (char-after match-point))) (when (< from match-point) - (ps-mule-set-ascii-font) - (ps-plot 'ps-basic-plot-string from match-point bg-color)) + (ps-plot ps-basic-plot-string-function + from match-point bg-color)) (cond ((= match ?\t) ; tab (let ((linestart (line-beginning-position))) (forward-char -1) (setq from (+ linestart (current-column))) (when (re-search-forward "[ \t]+" to t) - (ps-mule-set-ascii-font) (ps-plot 'ps-basic-plot-whitespace from (+ linestart (current-column)) bg-color)))) @@ -6068,24 +6024,11 @@ (ps-skip-newline to)) (ps-next-page))) - (composition ; a composite sequence - (ps-plot 'ps-mule-plot-composition match-point (point) bg-color)) - - ((> match 255) ; a multi-byte character - (let* ((charset (char-charset match)) - (composition (ps-e-find-composition match-point to)) - (stop (if (nth 2 composition) (car composition) to))) - (or (eq charset 'composition) - (while (and (< (point) stop) (eq (charset-after) charset)) - (forward-char 1))) - (ps-plot 'ps-mule-plot-string match-point (point) bg-color))) - ; characters from ^@ to ^_ and (t ; characters from 127 to 255 (ps-control-character match))) (setq from (point))) - ;; region without control characters nor multi-byte characters - (ps-mule-set-ascii-font) - (ps-plot 'ps-basic-plot-string from to bg-color) + ;; region without control characters + (ps-plot ps-basic-plot-string-function from to bg-color) (setq from to))))) (defvar ps-string-control-codes @@ -6117,7 +6060,6 @@ (if (< (car wrappoint) to) (ps-continue-line)) (setq ps-width-remaining (- ps-width-remaining (* len char-width))) - (ps-mule-prepare-ascii-font str) (ps-output-string str) (ps-output " S\n"))) @@ -6480,6 +6422,7 @@ (ps-begin-page) (funcall genfunc from to) (ps-end-page) + (ps-mule-end-job) (ps-end-job needs-begin-file) ;; Setting this variable tells the unwind form that the @@ -6831,27 +6774,6 @@ ;; To make this file smaller, some commands go in a separate file. ;; But autoload them here to make the separation invisible. -(autoload 'ps-mule-prepare-ascii-font "ps-mule" - "Setup special ASCII font for STRING. -STRING should contain only ASCII characters.") - -(autoload 'ps-mule-set-ascii-font "ps-mule" - "Adjust current font if current charset is not ASCII.") - -(autoload 'ps-mule-plot-string "ps-mule" - "Generate PostScript code for plotting characters in the region FROM and TO. - -It is assumed that all characters in this region belong to the same charset. - -Optional argument BG-COLOR specifies background color. - -Returns the value: - - (ENDPOS . RUN-WIDTH) - -Where ENDPOS is the end position of the sequence and RUN-WIDTH is the width of -the sequence.") - (autoload 'ps-mule-initialize "ps-mule" "Initialize global data for printing multi-byte characters.") @@ -6862,10 +6784,8 @@ (autoload 'ps-mule-begin-page "ps-mule" "Initialize multi-byte charset for printing current page.") -(autoload 'ps-mule-encode-header-string "ps-mule" - "Generate PostScript code for plotting characters in header STRING. - -It is assumed that the length of STRING is not zero.") +(autoload 'ps-mule-end-job "ps-mule" + "Finish printing job for multi-byte chars.") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;